ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_PROJECT_EL18KK

Dependencies:   mbed

Committer:
KaifK
Date:
Sun May 17 17:59:30 2020 +0000
Revision:
8:5ede90f99a27
Parent:
5:ed71996c0534
Child:
9:e6566d09f087
game files 90% rebuilt levels and scoring + lives systems left :///

Who changed what in which revision?

UserRevisionLine numberNew contents of line
KaifK 2:21973e665a32 1 #include "Ball.h"
KaifK 2:21973e665a32 2
KaifK 2:21973e665a32 3 const int ball[3][11][15] = {
KaifK 5:ed71996c0534 4 {
KaifK 5:ed71996c0534 5 { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 6 { 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0 },
KaifK 5:ed71996c0534 7 { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 },
KaifK 5:ed71996c0534 8 { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0 },
KaifK 5:ed71996c0534 9 { 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0 },
KaifK 5:ed71996c0534 10 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
KaifK 5:ed71996c0534 11 { 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0 },
KaifK 5:ed71996c0534 12 { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0 },
KaifK 5:ed71996c0534 13 { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 },
KaifK 5:ed71996c0534 14 { 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0 },
KaifK 5:ed71996c0534 15 { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }
KaifK 5:ed71996c0534 16 },
KaifK 5:ed71996c0534 17
KaifK 5:ed71996c0534 18 {
KaifK 5:ed71996c0534 19 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 20 { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 21 { 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 22 { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 },
KaifK 5:ed71996c0534 23 { 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0 },
KaifK 5:ed71996c0534 24 { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 },
KaifK 5:ed71996c0534 25 { 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0 },
KaifK 5:ed71996c0534 26 { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 },
KaifK 5:ed71996c0534 27 { 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 28 { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 29 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
KaifK 5:ed71996c0534 30 },
KaifK 5:ed71996c0534 31
KaifK 5:ed71996c0534 32 {
KaifK 5:ed71996c0534 33 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 34 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 35 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 36 { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 37 { 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 38 { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 39 { 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 40 { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 41 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 42 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
KaifK 5:ed71996c0534 43 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
KaifK 5:ed71996c0534 44 },
KaifK 2:21973e665a32 45 };
KaifK 8:5ede90f99a27 46 int grass[7][7] = {
KaifK 8:5ede90f99a27 47 {0,0,0,0,0,0,0},
KaifK 8:5ede90f99a27 48 {0,0,0,0,0,0,0},
KaifK 8:5ede90f99a27 49 {0,0,1,0,0,0,0},
KaifK 8:5ede90f99a27 50 {0,0,1,0,1,0,0},
KaifK 8:5ede90f99a27 51 {0,1,0,1,0,1,0},
KaifK 8:5ede90f99a27 52 {0,1,0,1,0,1,0},
KaifK 8:5ede90f99a27 53 {1,0,1,0,0,0,1}
KaifK 8:5ede90f99a27 54 };
KaifK 8:5ede90f99a27 55 int grass_small[3][3] = {
KaifK 8:5ede90f99a27 56 {1,0,1},
KaifK 8:5ede90f99a27 57 {0,1,0},
KaifK 8:5ede90f99a27 58 {1,1,1},
KaifK 8:5ede90f99a27 59 };
KaifK 8:5ede90f99a27 60 int goal[24][70] = {
KaifK 8:5ede90f99a27 61 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
KaifK 8:5ede90f99a27 62 {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
KaifK 8:5ede90f99a27 63 {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
KaifK 8:5ede90f99a27 64 {0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0},
KaifK 8:5ede90f99a27 65 {0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0},
KaifK 8:5ede90f99a27 66 {0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 67 {0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 68 {0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 69 {0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 70 {0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 71 {0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 72 {0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 73 {0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 74 {0,1,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 75 {0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 76 {0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 77 {0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 78 {0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 79 {0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0},
KaifK 8:5ede90f99a27 80 {0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0},
KaifK 8:5ede90f99a27 81 {0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0},
KaifK 8:5ede90f99a27 82 {0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 83 {0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0},
KaifK 8:5ede90f99a27 84 {0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0}
KaifK 8:5ede90f99a27 85 };
KaifK 2:21973e665a32 86
KaifK 5:ed71996c0534 87 Ball::Ball() {}
KaifK 4:08a0ff6668df 88
KaifK 5:ed71996c0534 89 Ball::~Ball() {}
KaifK 5:ed71996c0534 90
KaifK 5:ed71996c0534 91 void Ball::init(N5110 & lcd){
KaifK 5:ed71996c0534 92 _ball_x = BALL_INIT_X;
KaifK 5:ed71996c0534 93 _ball_y = BALL_INIT_Y;
KaifK 5:ed71996c0534 94 lcd.drawSprite(_ball_x, _ball_y, 11, 15, (int*) ball);
KaifK 5:ed71996c0534 95 }
KaifK 5:ed71996c0534 96
KaifK 5:ed71996c0534 97 void Ball::setLocation(int x, int y, N5110 &lcd){
KaifK 5:ed71996c0534 98 lcd.drawSprite(x, y, 11, 15, (int*) ball);
KaifK 5:ed71996c0534 99 }
KaifK 2:21973e665a32 100
KaifK 5:ed71996c0534 101 void Ball::playShot(int user_input_x, int user_input_y, N5110 &lcd){
KaifK 5:ed71996c0534 102 _user_input_x = user_input_x;
KaifK 5:ed71996c0534 103 _user_input_y = user_input_y;
KaifK 8:5ede90f99a27 104 int ball_sprite = 0;
KaifK 5:ed71996c0534 105 while (_user_input_x < _ball_x || _user_input_y < _ball_y){
KaifK 8:5ede90f99a27 106 display_background(lcd);
KaifK 5:ed71996c0534 107 if (_user_input_x < _ball_x){_ball_x -= 2.5;}
KaifK 5:ed71996c0534 108 else if (_user_input_x > _ball_x){_ball_x += 2.5;}
KaifK 8:5ede90f99a27 109
KaifK 5:ed71996c0534 110 if (_user_input_y < _ball_y){_ball_y -= 2.5;}
KaifK 5:ed71996c0534 111 else if (_user_input_y > _ball_y){_ball_y += 2.5;}
KaifK 8:5ede90f99a27 112
KaifK 8:5ede90f99a27 113 lcd.drawSprite(_ball_x, _ball_y, 11, 15, (int*) ball[ball_sprite]);
KaifK 8:5ede90f99a27 114 if (_ball_y <= 30){ball_sprite = 1;}//ball moved further
KaifK 8:5ede90f99a27 115 else if (_ball_y <= 24){ball_sprite = 2;}//ball is furthest
KaifK 8:5ede90f99a27 116 printf("ball sprite no: %d \n", ball_sprite);
KaifK 8:5ede90f99a27 117 printf("ball y pos = %d \n", _ball_y);
KaifK 5:ed71996c0534 118 wait_ms(100);
KaifK 5:ed71996c0534 119 lcd.refresh();
KaifK 8:5ede90f99a27 120 lcd.clear();
KaifK 2:21973e665a32 121 }
KaifK 5:ed71996c0534 122 }
KaifK 5:ed71996c0534 123
KaifK 4:08a0ff6668df 124 void Ball::bounceBall(int x_pos, int y_pos, int height, int status, N5110 &lcd){
KaifK 5:ed71996c0534 125 _user_input_x = x_pos;
KaifK 5:ed71996c0534 126 _user_input_y = y_pos;
KaifK 5:ed71996c0534 127 _height = height;
KaifK 5:ed71996c0534 128 _status = status;
KaifK 5:ed71996c0534 129 int dir = -2;
KaifK 5:ed71996c0534 130 if (_status){
KaifK 5:ed71996c0534 131 lcd.drawSprite(_user_input_x, _user_input_y, 11, 15, (int*) ball[0]);
KaifK 5:ed71996c0534 132 if (_user_input_y <= (y_pos - _height)){dir = 3;} //falls faster
KaifK 5:ed71996c0534 133 else if (_user_input_y >= (y_pos)){dir = -2;}
KaifK 5:ed71996c0534 134 _user_input_y += dir;
KaifK 5:ed71996c0534 135 wait(0.1);
KaifK 5:ed71996c0534 136 lcd.refresh();
KaifK 5:ed71996c0534 137 //clears background only in the area the ball is moving
KaifK 5:ed71996c0534 138 lcd.drawRect(_user_input_x, (48 - y_pos), 13, (y_pos + _height), FILL_WHITE);
KaifK 4:08a0ff6668df 139 }
KaifK 5:ed71996c0534 140 }
KaifK 8:5ede90f99a27 141 void Ball::display_background(N5110 &lcd){
KaifK 8:5ede90f99a27 142 //draw goal
KaifK 8:5ede90f99a27 143 lcd.drawSprite(7,0,24,70,(int *)goal);
KaifK 8:5ede90f99a27 144 //draw grass
KaifK 8:5ede90f99a27 145 lcd.drawSprite(1,17,7,7,(int *)grass);
KaifK 8:5ede90f99a27 146 lcd.drawSprite(76,17,7,7,(int *)grass);
KaifK 8:5ede90f99a27 147 lcd.drawSprite(67,26,3,3,(int *)grass_small);
KaifK 8:5ede90f99a27 148 lcd.drawSprite(67,26,3,3,(int *)grass_small);
KaifK 8:5ede90f99a27 149 lcd.drawSprite(6,30,3,3,(int *)grass_small);
KaifK 8:5ede90f99a27 150 lcd.drawSprite(72,32,3,3,(int *)grass_small);
KaifK 8:5ede90f99a27 151 lcd.drawSprite(69,43,3,3,(int *)grass_small);
KaifK 8:5ede90f99a27 152 lcd.drawSprite(16,29,3,3,(int *)grass_small);
KaifK 8:5ede90f99a27 153 //ground line
KaifK 8:5ede90f99a27 154 lcd.drawLine(0,24,84,24,1);
KaifK 8:5ede90f99a27 155 //score card
KaifK 8:5ede90f99a27 156 lcd.drawRect(0,38,15,11,FILL_TRANSPARENT);
KaifK 8:5ede90f99a27 157 //power meter
KaifK 8:5ede90f99a27 158 lcd.drawRect(77,27,6,20,FILL_TRANSPARENT);
KaifK 8:5ede90f99a27 159 // aim triangle base
KaifK 8:5ede90f99a27 160 lcd.drawLine(WIDTH / 2 + 5, 41, WIDTH / 2 - 5, 41, 1);
KaifK 8:5ede90f99a27 161 }
KaifK 5:ed71996c0534 162 void Ball::set_status(bool status){_status = status;}
KaifK 5:ed71996c0534 163
KaifK 4:08a0ff6668df 164 int Ball::get_status() {
KaifK 5:ed71996c0534 165 int val = _status;
KaifK 5:ed71996c0534 166 return val;
KaifK 8:5ede90f99a27 167 }