Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:64079f49da67, 2016-11-01 (annotated)
- Committer:
- brianeason92
- Date:
- Tue Nov 01 18:29:26 2016 +0000
- Revision:
- 0:64079f49da67
Full functioning brick break game for lab 4
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| brianeason92 | 0:64079f49da67 | 1 | #include "mbed.h" |
| brianeason92 | 0:64079f49da67 | 2 | #include "uLCD_4DGL.h" |
| brianeason92 | 0:64079f49da67 | 3 | |
| brianeason92 | 0:64079f49da67 | 4 | /* ==== Navigation Switch ===== */ |
| brianeason92 | 0:64079f49da67 | 5 | class Nav_Switch |
| brianeason92 | 0:64079f49da67 | 6 | { |
| brianeason92 | 0:64079f49da67 | 7 | public: |
| brianeason92 | 0:64079f49da67 | 8 | Nav_Switch(PinName up,PinName down,PinName left,PinName right,PinName fire); |
| brianeason92 | 0:64079f49da67 | 9 | int read(); |
| brianeason92 | 0:64079f49da67 | 10 | //boolean functions to test each switch |
| brianeason92 | 0:64079f49da67 | 11 | bool up(); |
| brianeason92 | 0:64079f49da67 | 12 | bool down(); |
| brianeason92 | 0:64079f49da67 | 13 | bool left(); |
| brianeason92 | 0:64079f49da67 | 14 | bool right(); |
| brianeason92 | 0:64079f49da67 | 15 | bool fire(); |
| brianeason92 | 0:64079f49da67 | 16 | //automatic read on RHS |
| brianeason92 | 0:64079f49da67 | 17 | operator int (); |
| brianeason92 | 0:64079f49da67 | 18 | //index to any switch array style |
| brianeason92 | 0:64079f49da67 | 19 | bool operator[](int index) { |
| brianeason92 | 0:64079f49da67 | 20 | return _pins[index]; |
| brianeason92 | 0:64079f49da67 | 21 | }; |
| brianeason92 | 0:64079f49da67 | 22 | private: |
| brianeason92 | 0:64079f49da67 | 23 | BusIn _pins; |
| brianeason92 | 0:64079f49da67 | 24 | |
| brianeason92 | 0:64079f49da67 | 25 | }; |
| brianeason92 | 0:64079f49da67 | 26 | Nav_Switch::Nav_Switch (PinName up,PinName down,PinName left,PinName right,PinName fire): |
| brianeason92 | 0:64079f49da67 | 27 | _pins(up, down, left, right, fire) |
| brianeason92 | 0:64079f49da67 | 28 | { |
| brianeason92 | 0:64079f49da67 | 29 | _pins.mode(PullUp); //needed if pullups not on board or a bare nav switch is used - delete otherwise |
| brianeason92 | 0:64079f49da67 | 30 | wait(0.001); //delays just a bit for pullups to pull inputs high |
| brianeason92 | 0:64079f49da67 | 31 | } |
| brianeason92 | 0:64079f49da67 | 32 | inline bool Nav_Switch::up() |
| brianeason92 | 0:64079f49da67 | 33 | { |
| brianeason92 | 0:64079f49da67 | 34 | return !(_pins[0]); |
| brianeason92 | 0:64079f49da67 | 35 | } |
| brianeason92 | 0:64079f49da67 | 36 | inline bool Nav_Switch::down() |
| brianeason92 | 0:64079f49da67 | 37 | { |
| brianeason92 | 0:64079f49da67 | 38 | return !(_pins[1]); |
| brianeason92 | 0:64079f49da67 | 39 | } |
| brianeason92 | 0:64079f49da67 | 40 | inline bool Nav_Switch::left() |
| brianeason92 | 0:64079f49da67 | 41 | { |
| brianeason92 | 0:64079f49da67 | 42 | return !(_pins[2]); |
| brianeason92 | 0:64079f49da67 | 43 | } |
| brianeason92 | 0:64079f49da67 | 44 | inline bool Nav_Switch::right() |
| brianeason92 | 0:64079f49da67 | 45 | { |
| brianeason92 | 0:64079f49da67 | 46 | return !(_pins[3]); |
| brianeason92 | 0:64079f49da67 | 47 | } |
| brianeason92 | 0:64079f49da67 | 48 | inline bool Nav_Switch::fire() |
| brianeason92 | 0:64079f49da67 | 49 | { |
| brianeason92 | 0:64079f49da67 | 50 | return !(_pins[4]); |
| brianeason92 | 0:64079f49da67 | 51 | } |
| brianeason92 | 0:64079f49da67 | 52 | inline int Nav_Switch::read() |
| brianeason92 | 0:64079f49da67 | 53 | { |
| brianeason92 | 0:64079f49da67 | 54 | return _pins.read(); |
| brianeason92 | 0:64079f49da67 | 55 | } |
| brianeason92 | 0:64079f49da67 | 56 | inline Nav_Switch::operator int () |
| brianeason92 | 0:64079f49da67 | 57 | { |
| brianeason92 | 0:64079f49da67 | 58 | return _pins.read(); |
| brianeason92 | 0:64079f49da67 | 59 | } |
| brianeason92 | 0:64079f49da67 | 60 | |
| brianeason92 | 0:64079f49da67 | 61 | uLCD_4DGL uLCD(p9,p10,p11); |
| brianeason92 | 0:64079f49da67 | 62 | Nav_Switch myNav(p15,p16,p12,p13,p14); |
| brianeason92 | 0:64079f49da67 | 63 | PwmOut myled(LED1); |
| brianeason92 | 0:64079f49da67 | 64 | AnalogIn mypotentiometer(p20); |
| brianeason92 | 0:64079f49da67 | 65 | |
| brianeason92 | 0:64079f49da67 | 66 | void drawTile(int x, int y, int color){ |
| brianeason92 | 0:64079f49da67 | 67 | uLCD.filled_rectangle(x, y, x+20, y+2, color); |
| brianeason92 | 0:64079f49da67 | 68 | } |
| brianeason92 | 0:64079f49da67 | 69 | |
| brianeason92 | 0:64079f49da67 | 70 | void drawAllTiles(int *enemy_x1, int *enemy_y1, int *enemy_color, bool *alive){ |
| brianeason92 | 0:64079f49da67 | 71 | int i = 0; |
| brianeason92 | 0:64079f49da67 | 72 | while(i < 16){ |
| brianeason92 | 0:64079f49da67 | 73 | if(alive[i]){ |
| brianeason92 | 0:64079f49da67 | 74 | drawTile(enemy_x1[i], enemy_y1[i], enemy_color[i]); |
| brianeason92 | 0:64079f49da67 | 75 | } |
| brianeason92 | 0:64079f49da67 | 76 | i++; |
| brianeason92 | 0:64079f49da67 | 77 | } |
| brianeason92 | 0:64079f49da67 | 78 | } |
| brianeason92 | 0:64079f49da67 | 79 | |
| brianeason92 | 0:64079f49da67 | 80 | int position(float pot, int prev_position){ |
| brianeason92 | 0:64079f49da67 | 81 | int player_x1 = pot*108; |
| brianeason92 | 0:64079f49da67 | 82 | drawTile(prev_position, 125, BLACK); |
| brianeason92 | 0:64079f49da67 | 83 | drawTile(player_x1, 125, WHITE); |
| brianeason92 | 0:64079f49da67 | 84 | return player_x1; |
| brianeason92 | 0:64079f49da67 | 85 | } |
| brianeason92 | 0:64079f49da67 | 86 | |
| brianeason92 | 0:64079f49da67 | 87 | int moveRight(int player_x1){ |
| brianeason92 | 0:64079f49da67 | 88 | int prev_position = player_x1; |
| brianeason92 | 0:64079f49da67 | 89 | player_x1 = player_x1 + 6; |
| brianeason92 | 0:64079f49da67 | 90 | if(player_x1 > 108){ |
| brianeason92 | 0:64079f49da67 | 91 | player_x1 = 108; |
| brianeason92 | 0:64079f49da67 | 92 | } |
| brianeason92 | 0:64079f49da67 | 93 | else{ |
| brianeason92 | 0:64079f49da67 | 94 | drawTile(prev_position, 125, BLACK); |
| brianeason92 | 0:64079f49da67 | 95 | drawTile(player_x1, 125, WHITE); |
| brianeason92 | 0:64079f49da67 | 96 | } |
| brianeason92 | 0:64079f49da67 | 97 | return player_x1; |
| brianeason92 | 0:64079f49da67 | 98 | } |
| brianeason92 | 0:64079f49da67 | 99 | |
| brianeason92 | 0:64079f49da67 | 100 | int moveLeft(int player_x1){ |
| brianeason92 | 0:64079f49da67 | 101 | int prev_position = player_x1; |
| brianeason92 | 0:64079f49da67 | 102 | player_x1 = player_x1 - 6; |
| brianeason92 | 0:64079f49da67 | 103 | if(player_x1 < 0){ |
| brianeason92 | 0:64079f49da67 | 104 | player_x1 = 0; |
| brianeason92 | 0:64079f49da67 | 105 | } |
| brianeason92 | 0:64079f49da67 | 106 | else{ |
| brianeason92 | 0:64079f49da67 | 107 | drawTile(prev_position, 125, BLACK); |
| brianeason92 | 0:64079f49da67 | 108 | drawTile(player_x1, 125, WHITE); |
| brianeason92 | 0:64079f49da67 | 109 | } |
| brianeason92 | 0:64079f49da67 | 110 | return player_x1; |
| brianeason92 | 0:64079f49da67 | 111 | } |
| brianeason92 | 0:64079f49da67 | 112 | |
| brianeason92 | 0:64079f49da67 | 113 | void printInfo(int lives, int points){ |
| brianeason92 | 0:64079f49da67 | 114 | uLCD.locate(0,0); |
| brianeason92 | 0:64079f49da67 | 115 | uLCD.printf("Lives:%i", lives); |
| brianeason92 | 0:64079f49da67 | 116 | |
| brianeason92 | 0:64079f49da67 | 117 | uLCD.locate(9,0); |
| brianeason92 | 0:64079f49da67 | 118 | uLCD.printf("Points:%i", points); |
| brianeason92 | 0:64079f49da67 | 119 | } |
| brianeason92 | 0:64079f49da67 | 120 | |
| brianeason92 | 0:64079f49da67 | 121 | void drawBall(int x1, int y1, int color){ |
| brianeason92 | 0:64079f49da67 | 122 | uLCD.filled_circle(x1, y1, 5, color); |
| brianeason92 | 0:64079f49da67 | 123 | } |
| brianeason92 | 0:64079f49da67 | 124 | |
| brianeason92 | 0:64079f49da67 | 125 | int main() { |
| brianeason92 | 0:64079f49da67 | 126 | uLCD.baudrate(3000000); |
| brianeason92 | 0:64079f49da67 | 127 | |
| brianeason92 | 0:64079f49da67 | 128 | //draw initial player tile |
| brianeason92 | 0:64079f49da67 | 129 | int player_x1 = 5; |
| brianeason92 | 0:64079f49da67 | 130 | int player_y1 = 125; |
| brianeason92 | 0:64079f49da67 | 131 | |
| brianeason92 | 0:64079f49da67 | 132 | //array to keep track of all enemy tiles |
| brianeason92 | 0:64079f49da67 | 133 | bool alive[16]; |
| brianeason92 | 0:64079f49da67 | 134 | int enemy_x1[16]; |
| brianeason92 | 0:64079f49da67 | 135 | int enemy_x2[16]; |
| brianeason92 | 0:64079f49da67 | 136 | int enemy_y1[16]; |
| brianeason92 | 0:64079f49da67 | 137 | int enemy_y2[16]; |
| brianeason92 | 0:64079f49da67 | 138 | int enemy_color[16]; |
| brianeason92 | 0:64079f49da67 | 139 | int i = 0; |
| brianeason92 | 0:64079f49da67 | 140 | int x = 5; |
| brianeason92 | 0:64079f49da67 | 141 | int y = 20; |
| brianeason92 | 0:64079f49da67 | 142 | int color = GREEN; |
| brianeason92 | 0:64079f49da67 | 143 | while(i<16){ |
| brianeason92 | 0:64079f49da67 | 144 | alive[i] = true; |
| brianeason92 | 0:64079f49da67 | 145 | enemy_x1[i] = x; |
| brianeason92 | 0:64079f49da67 | 146 | enemy_x2[i] = x+20; |
| brianeason92 | 0:64079f49da67 | 147 | enemy_y1[i] = y; |
| brianeason92 | 0:64079f49da67 | 148 | enemy_y2[i] = y+2; |
| brianeason92 | 0:64079f49da67 | 149 | enemy_color[i] = color; |
| brianeason92 | 0:64079f49da67 | 150 | |
| brianeason92 | 0:64079f49da67 | 151 | //setup next tile |
| brianeason92 | 0:64079f49da67 | 152 | y = y + 10; |
| brianeason92 | 0:64079f49da67 | 153 | if(y>50){ |
| brianeason92 | 0:64079f49da67 | 154 | x = x + 30; |
| brianeason92 | 0:64079f49da67 | 155 | y = 20; |
| brianeason92 | 0:64079f49da67 | 156 | } |
| brianeason92 | 0:64079f49da67 | 157 | if(color == GREEN){ |
| brianeason92 | 0:64079f49da67 | 158 | color = BLUE; |
| brianeason92 | 0:64079f49da67 | 159 | } |
| brianeason92 | 0:64079f49da67 | 160 | else if(color == BLUE){ |
| brianeason92 | 0:64079f49da67 | 161 | color = LGREY; |
| brianeason92 | 0:64079f49da67 | 162 | } |
| brianeason92 | 0:64079f49da67 | 163 | else if(color == LGREY){ |
| brianeason92 | 0:64079f49da67 | 164 | color = RED; |
| brianeason92 | 0:64079f49da67 | 165 | } |
| brianeason92 | 0:64079f49da67 | 166 | else{ |
| brianeason92 | 0:64079f49da67 | 167 | color = GREEN; |
| brianeason92 | 0:64079f49da67 | 168 | } |
| brianeason92 | 0:64079f49da67 | 169 | i++; |
| brianeason92 | 0:64079f49da67 | 170 | } |
| brianeason92 | 0:64079f49da67 | 171 | int lives = 3; |
| brianeason92 | 0:64079f49da67 | 172 | int points = 0; |
| brianeason92 | 0:64079f49da67 | 173 | int ball_x1 = 7; |
| brianeason92 | 0:64079f49da67 | 174 | int ball_y1 = 70; |
| brianeason92 | 0:64079f49da67 | 175 | |
| brianeason92 | 0:64079f49da67 | 176 | //0-up |
| brianeason92 | 0:64079f49da67 | 177 | //1-left |
| brianeason92 | 0:64079f49da67 | 178 | //2-down |
| brianeason92 | 0:64079f49da67 | 179 | //3-right |
| brianeason92 | 0:64079f49da67 | 180 | //4-topright |
| brianeason92 | 0:64079f49da67 | 181 | //5-topleft |
| brianeason92 | 0:64079f49da67 | 182 | //6-bottomleft |
| brianeason92 | 0:64079f49da67 | 183 | //7-bottomright |
| brianeason92 | 0:64079f49da67 | 184 | int dir = 7; |
| brianeason92 | 0:64079f49da67 | 185 | bool flip = true; |
| brianeason92 | 0:64079f49da67 | 186 | int start = true; |
| brianeason92 | 0:64079f49da67 | 187 | bool erase = false; |
| brianeason92 | 0:64079f49da67 | 188 | bool winner = false; |
| brianeason92 | 0:64079f49da67 | 189 | bool loser = false; |
| brianeason92 | 0:64079f49da67 | 190 | bool gameover = false; |
| brianeason92 | 0:64079f49da67 | 191 | |
| brianeason92 | 0:64079f49da67 | 192 | while(1){ |
| brianeason92 | 0:64079f49da67 | 193 | myled = mypotentiometer; |
| brianeason92 | 0:64079f49da67 | 194 | if(myNav.fire()){ |
| brianeason92 | 0:64079f49da67 | 195 | if(start==true){erase = true;} |
| brianeason92 | 0:64079f49da67 | 196 | start = false; |
| brianeason92 | 0:64079f49da67 | 197 | } |
| brianeason92 | 0:64079f49da67 | 198 | if(start==true){ |
| brianeason92 | 0:64079f49da67 | 199 | uLCD.media_init(); |
| brianeason92 | 0:64079f49da67 | 200 | uLCD.set_sector_address(0x003A, 0x4001); |
| brianeason92 | 0:64079f49da67 | 201 | uLCD.display_image(0,0); |
| brianeason92 | 0:64079f49da67 | 202 | } |
| brianeason92 | 0:64079f49da67 | 203 | else if(gameover==false){ |
| brianeason92 | 0:64079f49da67 | 204 | if(erase==true){uLCD.cls(); erase = false;} |
| brianeason92 | 0:64079f49da67 | 205 | if(winner==true){uLCD.locate(4,9); uLCD.printf("YOU WIN!!!!"); gameover = true;} |
| brianeason92 | 0:64079f49da67 | 206 | if(loser==true){uLCD.locate(4,9); uLCD.printf("YOU LOSE :("); gameover = true;} |
| brianeason92 | 0:64079f49da67 | 207 | if(lives==0 && loser==false){loser = true; erase=true;} |
| brianeason92 | 0:64079f49da67 | 208 | if(points==16 && winner==false){winner = true; erase = true;} |
| brianeason92 | 0:64079f49da67 | 209 | drawBall(ball_x1, ball_y1, RED); |
| brianeason92 | 0:64079f49da67 | 210 | drawAllTiles(enemy_x1, enemy_y1, enemy_color, alive); |
| brianeason92 | 0:64079f49da67 | 211 | drawTile(player_x1, player_y1, WHITE); |
| brianeason92 | 0:64079f49da67 | 212 | printInfo(lives, points); |
| brianeason92 | 0:64079f49da67 | 213 | player_x1 = position(mypotentiometer, player_x1); |
| brianeason92 | 0:64079f49da67 | 214 | |
| brianeason92 | 0:64079f49da67 | 215 | if(myNav.right()){ |
| brianeason92 | 0:64079f49da67 | 216 | flip = !flip; |
| brianeason92 | 0:64079f49da67 | 217 | player_x1 = moveRight(player_x1); |
| brianeason92 | 0:64079f49da67 | 218 | } |
| brianeason92 | 0:64079f49da67 | 219 | else if(myNav.left()){ |
| brianeason92 | 0:64079f49da67 | 220 | flip = !flip; |
| brianeason92 | 0:64079f49da67 | 221 | player_x1 = moveLeft(player_x1); |
| brianeason92 | 0:64079f49da67 | 222 | } |
| brianeason92 | 0:64079f49da67 | 223 | |
| brianeason92 | 0:64079f49da67 | 224 | drawBall(ball_x1, ball_y1, BLACK); |
| brianeason92 | 0:64079f49da67 | 225 | //move ball |
| brianeason92 | 0:64079f49da67 | 226 | if(dir==0){ |
| brianeason92 | 0:64079f49da67 | 227 | ball_y1 = ball_y1 - 3; |
| brianeason92 | 0:64079f49da67 | 228 | } |
| brianeason92 | 0:64079f49da67 | 229 | if(dir==2){ |
| brianeason92 | 0:64079f49da67 | 230 | ball_y1 = ball_y1 + 3; |
| brianeason92 | 0:64079f49da67 | 231 | } |
| brianeason92 | 0:64079f49da67 | 232 | if(dir==4){ |
| brianeason92 | 0:64079f49da67 | 233 | ball_y1 = ball_y1 -2; |
| brianeason92 | 0:64079f49da67 | 234 | ball_x1 = ball_x1 +2; |
| brianeason92 | 0:64079f49da67 | 235 | } |
| brianeason92 | 0:64079f49da67 | 236 | if(dir==5){ |
| brianeason92 | 0:64079f49da67 | 237 | ball_y1 = ball_y1 - 2; |
| brianeason92 | 0:64079f49da67 | 238 | ball_x1 = ball_x1 - 2; |
| brianeason92 | 0:64079f49da67 | 239 | } |
| brianeason92 | 0:64079f49da67 | 240 | if(dir==6){ |
| brianeason92 | 0:64079f49da67 | 241 | ball_y1 = ball_y1 +2; |
| brianeason92 | 0:64079f49da67 | 242 | ball_x1 = ball_x1 - 2; |
| brianeason92 | 0:64079f49da67 | 243 | } |
| brianeason92 | 0:64079f49da67 | 244 | if(dir==7){ |
| brianeason92 | 0:64079f49da67 | 245 | ball_y1 = ball_y1+2; |
| brianeason92 | 0:64079f49da67 | 246 | ball_x1 = ball_x1 + 2; |
| brianeason92 | 0:64079f49da67 | 247 | } |
| brianeason92 | 0:64079f49da67 | 248 | drawBall(ball_x1, ball_y1, RED); |
| brianeason92 | 0:64079f49da67 | 249 | drawTile(player_x1, player_y1, WHITE); |
| brianeason92 | 0:64079f49da67 | 250 | |
| brianeason92 | 0:64079f49da67 | 251 | //check ball collision with player |
| brianeason92 | 0:64079f49da67 | 252 | int ball_bottom = ball_y1 + 2.5; |
| brianeason92 | 0:64079f49da67 | 253 | int ball_right = ball_x1 + 2.5; |
| brianeason92 | 0:64079f49da67 | 254 | int ball_left = ball_x1 - 2.5; |
| brianeason92 | 0:64079f49da67 | 255 | int ball_top = ball_y1 - 2.5; |
| brianeason92 | 0:64079f49da67 | 256 | if(ball_bottom>=player_y1 && ball_x1 >= player_x1 && ball_x1 <= player_x1+20){ |
| brianeason92 | 0:64079f49da67 | 257 | if(dir==0){dir=2;} |
| brianeason92 | 0:64079f49da67 | 258 | if(dir==6){dir=5;if(flip){dir=4;}} |
| brianeason92 | 0:64079f49da67 | 259 | if(dir==7){dir=4;if(flip){dir=5;}} |
| brianeason92 | 0:64079f49da67 | 260 | } |
| brianeason92 | 0:64079f49da67 | 261 | |
| brianeason92 | 0:64079f49da67 | 262 | //check ball collision with walls |
| brianeason92 | 0:64079f49da67 | 263 | if(ball_bottom>=128){ |
| brianeason92 | 0:64079f49da67 | 264 | lives--; |
| brianeason92 | 0:64079f49da67 | 265 | drawBall(ball_x1, ball_y1, BLACK); |
| brianeason92 | 0:64079f49da67 | 266 | ball_x1 = 7; |
| brianeason92 | 0:64079f49da67 | 267 | ball_y1 = 70; |
| brianeason92 | 0:64079f49da67 | 268 | dir = 7; |
| brianeason92 | 0:64079f49da67 | 269 | } |
| brianeason92 | 0:64079f49da67 | 270 | if(ball_top<=9){ |
| brianeason92 | 0:64079f49da67 | 271 | if(dir==0){dir=2;} |
| brianeason92 | 0:64079f49da67 | 272 | if(dir==5){dir=6;if(flip){dir=7;}} |
| brianeason92 | 0:64079f49da67 | 273 | if(dir==4){dir=7;if(flip){dir=6;}} |
| brianeason92 | 0:64079f49da67 | 274 | flip=!flip; |
| brianeason92 | 0:64079f49da67 | 275 | } |
| brianeason92 | 0:64079f49da67 | 276 | if(ball_left<=0){ |
| brianeason92 | 0:64079f49da67 | 277 | if(dir==1){dir=3;} |
| brianeason92 | 0:64079f49da67 | 278 | if(dir==5){dir=4;if(flip){dir=7;}} |
| brianeason92 | 0:64079f49da67 | 279 | if(dir==6){dir=7;if(flip){dir=4;}} |
| brianeason92 | 0:64079f49da67 | 280 | flip=!flip; |
| brianeason92 | 0:64079f49da67 | 281 | } |
| brianeason92 | 0:64079f49da67 | 282 | if(ball_right>=128){ |
| brianeason92 | 0:64079f49da67 | 283 | if(dir==3){dir=1;} |
| brianeason92 | 0:64079f49da67 | 284 | if(dir==4){dir=5;if(flip){dir=6;}} |
| brianeason92 | 0:64079f49da67 | 285 | if(dir==7){dir=6;if(flip){dir=5;}} |
| brianeason92 | 0:64079f49da67 | 286 | flip=!flip; |
| brianeason92 | 0:64079f49da67 | 287 | } |
| brianeason92 | 0:64079f49da67 | 288 | |
| brianeason92 | 0:64079f49da67 | 289 | //check if ball collided with enemies |
| brianeason92 | 0:64079f49da67 | 290 | i = 0; |
| brianeason92 | 0:64079f49da67 | 291 | while(i < 16){ |
| brianeason92 | 0:64079f49da67 | 292 | if(alive[i]==true){ |
| brianeason92 | 0:64079f49da67 | 293 | int enemyX1 = enemy_x1[i]; |
| brianeason92 | 0:64079f49da67 | 294 | int enemyX2 = enemy_x2[i]; |
| brianeason92 | 0:64079f49da67 | 295 | int enemyY1 = enemy_y1[i]; |
| brianeason92 | 0:64079f49da67 | 296 | int enemyY2 = enemy_y2[i]; |
| brianeason92 | 0:64079f49da67 | 297 | if(ball_x1 >= enemyX1 && ball_x1 <= enemyX2){ |
| brianeason92 | 0:64079f49da67 | 298 | if(ball_top <= enemyY2 && ball_top >=enemyY1){ |
| brianeason92 | 0:64079f49da67 | 299 | points++; |
| brianeason92 | 0:64079f49da67 | 300 | alive[i] = false; |
| brianeason92 | 0:64079f49da67 | 301 | if(dir==0){dir=2;} |
| brianeason92 | 0:64079f49da67 | 302 | if(dir==5){dir=6;if(flip){dir=7;}} |
| brianeason92 | 0:64079f49da67 | 303 | if(dir==4){dir=7;if(flip){dir=6;}} |
| brianeason92 | 0:64079f49da67 | 304 | drawTile(enemyX1, enemyY1, BLACK); |
| brianeason92 | 0:64079f49da67 | 305 | } |
| brianeason92 | 0:64079f49da67 | 306 | else if(ball_bottom>=enemyY1 && ball_bottom <=enemyY2){ |
| brianeason92 | 0:64079f49da67 | 307 | points++; |
| brianeason92 | 0:64079f49da67 | 308 | alive[i] = false; |
| brianeason92 | 0:64079f49da67 | 309 | if(dir==2){dir=0;} |
| brianeason92 | 0:64079f49da67 | 310 | if(dir==6){dir=5;if(flip){dir=4;}} |
| brianeason92 | 0:64079f49da67 | 311 | if(dir==7){dir=4;if(flip){dir=5;}} |
| brianeason92 | 0:64079f49da67 | 312 | drawTile(enemyX1, enemyY1, BLACK); |
| brianeason92 | 0:64079f49da67 | 313 | |
| brianeason92 | 0:64079f49da67 | 314 | } |
| brianeason92 | 0:64079f49da67 | 315 | } |
| brianeason92 | 0:64079f49da67 | 316 | else if(ball_y1 >= enemyY1 && ball_y1 <= enemyY2){ |
| brianeason92 | 0:64079f49da67 | 317 | if(ball_right >= enemyX1 && ball_right <= enemyX2){ |
| brianeason92 | 0:64079f49da67 | 318 | points++; |
| brianeason92 | 0:64079f49da67 | 319 | alive[i] = false; |
| brianeason92 | 0:64079f49da67 | 320 | if(dir==3){dir=1;} |
| brianeason92 | 0:64079f49da67 | 321 | if(dir==4){dir=5;if(flip){dir=6;}} |
| brianeason92 | 0:64079f49da67 | 322 | if(dir==7){dir=6;if(flip){dir=5;}} |
| brianeason92 | 0:64079f49da67 | 323 | drawTile(enemyX1, enemyY1, BLACK); |
| brianeason92 | 0:64079f49da67 | 324 | } |
| brianeason92 | 0:64079f49da67 | 325 | else if(ball_left >= enemyX2 && ball_left <= enemyX1){ |
| brianeason92 | 0:64079f49da67 | 326 | points++; |
| brianeason92 | 0:64079f49da67 | 327 | alive[i] = false; |
| brianeason92 | 0:64079f49da67 | 328 | if(dir==1){dir=3;} |
| brianeason92 | 0:64079f49da67 | 329 | if(dir==5){dir=4;if(flip){dir=6;}} |
| brianeason92 | 0:64079f49da67 | 330 | if(dir==6){dir=7;if(flip){dir=5;}} |
| brianeason92 | 0:64079f49da67 | 331 | drawTile(enemyX1, enemyY1, BLACK); |
| brianeason92 | 0:64079f49da67 | 332 | } |
| brianeason92 | 0:64079f49da67 | 333 | } |
| brianeason92 | 0:64079f49da67 | 334 | } |
| brianeason92 | 0:64079f49da67 | 335 | i++; |
| brianeason92 | 0:64079f49da67 | 336 | } |
| brianeason92 | 0:64079f49da67 | 337 | |
| brianeason92 | 0:64079f49da67 | 338 | }} |
| brianeason92 | 0:64079f49da67 | 339 | |
| brianeason92 | 0:64079f49da67 | 340 | } |