![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Brickbreaker
Dependencies: NokiaLCD PS2 mbed
Fork of Pong by
main.cpp@4:f3ac45fa2196, 2013-04-29 (annotated)
- Committer:
- ipapp3
- Date:
- Mon Apr 29 18:17:51 2013 +0000
- Revision:
- 4:f3ac45fa2196
- Parent:
- 3:e1328f84b107
final
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wjohnsto | 0:93dce1e528b9 | 1 | #include "mbed.h" |
wjohnsto | 0:93dce1e528b9 | 2 | #include "NokiaLCD.h" |
wjohnsto | 0:93dce1e528b9 | 3 | #include "PS2Keyboard.h" |
wjohnsto | 0:93dce1e528b9 | 4 | #include "ball.h" |
wjohnsto | 0:93dce1e528b9 | 5 | #include "paddle.h" |
ipapp3 | 3:e1328f84b107 | 6 | #include "block.h" |
wjohnsto | 0:93dce1e528b9 | 7 | |
wjohnsto | 1:3cc8b1413557 | 8 | // State enumerator |
wjohnsto | 0:93dce1e528b9 | 9 | typedef enum { |
ipapp3 | 3:e1328f84b107 | 10 | RESET1, RESET2, RUN, PAUSE, WIN |
wjohnsto | 0:93dce1e528b9 | 11 | } STATES; |
wjohnsto | 0:93dce1e528b9 | 12 | |
wjohnsto | 0:93dce1e528b9 | 13 | NokiaLCD lcd(p5, p7, p8, p9, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type |
wjohnsto | 0:93dce1e528b9 | 14 | |
wjohnsto | 0:93dce1e528b9 | 15 | PS2Keyboard ps2kb(p12, p11); // CLK, DAT |
wjohnsto | 0:93dce1e528b9 | 16 | |
wjohnsto | 0:93dce1e528b9 | 17 | DigitalIn sw2(p24); |
wjohnsto | 0:93dce1e528b9 | 18 | DigitalIn sw1(p25); |
wjohnsto | 0:93dce1e528b9 | 19 | |
wjohnsto | 0:93dce1e528b9 | 20 | PwmOut g(p21); |
wjohnsto | 0:93dce1e528b9 | 21 | PwmOut b(p22); |
wjohnsto | 0:93dce1e528b9 | 22 | PwmOut r(p23); |
wjohnsto | 0:93dce1e528b9 | 23 | |
wjohnsto | 1:3cc8b1413557 | 24 | // Button enumerator for PS/2 keyboard |
ipapp3 | 3:e1328f84b107 | 25 | enum BUTTONS { |
ipapp3 | 3:e1328f84b107 | 26 | UP = 0xe75, |
ipapp3 | 3:e1328f84b107 | 27 | DOWN = 0xe72, |
wjohnsto | 0:93dce1e528b9 | 28 | }; |
wjohnsto | 0:93dce1e528b9 | 29 | |
ipapp3 | 3:e1328f84b107 | 30 | /* |
wjohnsto | 1:3cc8b1413557 | 31 | * Subroutine drawScreen: |
ipapp3 | 3:e1328f84b107 | 32 | * Description: Draws paddle, blocks |
wjohnsto | 1:3cc8b1413557 | 33 | * and the ball. |
wjohnsto | 1:3cc8b1413557 | 34 | */ |
ipapp3 | 3:e1328f84b107 | 35 | void drawScreen(Paddle paddle1, Ball theBall, Block block1, Block block2, Block block3, Block block4, |
ipapp3 | 3:e1328f84b107 | 36 | Block block5, Block block6, Block block7, Block block8, Block block9, |
ipapp3 | 3:e1328f84b107 | 37 | Block block11, Block block12, Block block13, Block block14, |
ipapp3 | 3:e1328f84b107 | 38 | Block block15, Block block16, Block block17, Block block18, Block block19, bool isBlack) |
ipapp3 | 3:e1328f84b107 | 39 | { |
ipapp3 | 3:e1328f84b107 | 40 | paddle1.draw(lcd, isBlack); |
ipapp3 | 3:e1328f84b107 | 41 | theBall.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 42 | block1.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 43 | block2.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 44 | block3.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 45 | block4.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 46 | block5.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 47 | block6.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 48 | block7.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 49 | block8.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 50 | block9.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 51 | block11.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 52 | block12.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 53 | block13.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 54 | block14.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 55 | block15.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 56 | block16.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 57 | block17.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 58 | block18.draw(lcd ,isBlack); |
ipapp3 | 3:e1328f84b107 | 59 | block19.draw(lcd ,isBlack); |
wjohnsto | 0:93dce1e528b9 | 60 | } |
wjohnsto | 0:93dce1e528b9 | 61 | |
ipapp3 | 3:e1328f84b107 | 62 | /* |
wjohnsto | 1:3cc8b1413557 | 63 | * Subroutine drawScores: |
wjohnsto | 1:3cc8b1413557 | 64 | * Description: Draws the scoreboard |
wjohnsto | 1:3cc8b1413557 | 65 | */ |
ipapp3 | 3:e1328f84b107 | 66 | void drawScores(Paddle paddle1) |
ipapp3 | 3:e1328f84b107 | 67 | { |
ipapp3 | 3:e1328f84b107 | 68 | lcd.locate(6.5,0); |
ipapp3 | 3:e1328f84b107 | 69 | lcd.printf("%d",paddle1.getScore()); |
ipapp3 | 3:e1328f84b107 | 70 | lcd.locate(7.5,15); |
ipapp3 | 3:e1328f84b107 | 71 | lcd.putc('0' + paddle1.getLives()); |
wjohnsto | 0:93dce1e528b9 | 72 | } |
wjohnsto | 0:93dce1e528b9 | 73 | |
ipapp3 | 3:e1328f84b107 | 74 | int main() |
ipapp3 | 3:e1328f84b107 | 75 | { |
ipapp3 | 3:e1328f84b107 | 76 | PS2Keyboard::keyboard_event_t evt_kb; // Setup keyboard interrupt |
ipapp3 | 3:e1328f84b107 | 77 | lcd.background(0x000000); |
ipapp3 | 3:e1328f84b107 | 78 | lcd.cls(); |
ipapp3 | 3:e1328f84b107 | 79 | Paddle paddle1; |
ipapp3 | 3:e1328f84b107 | 80 | Ball theBall; |
ipapp3 | 3:e1328f84b107 | 81 | Block block1, block2, block3, block4, block5, block6, block7, block8, block9; |
ipapp3 | 3:e1328f84b107 | 82 | Block block11, block12, block13, block14, block15, block16, block17, block18, block19; |
ipapp3 | 3:e1328f84b107 | 83 | int temp, count=0; |
ipapp3 | 3:e1328f84b107 | 84 | drawScreen(paddle1, theBall, block1, block2, block3, block4, block5, block6, block7, block8, block9, |
ipapp3 | 3:e1328f84b107 | 85 | block11, block12, block13, block14, block15, block16, block17, block18, block19, false); |
ipapp3 | 3:e1328f84b107 | 86 | drawScores(paddle1); |
ipapp3 | 3:e1328f84b107 | 87 | STATES state = RESET1; // Initial state is RESET |
ipapp3 | 3:e1328f84b107 | 88 | while(1) { |
ipapp3 | 3:e1328f84b107 | 89 | switch(state) { |
ipapp3 | 3:e1328f84b107 | 90 | case WIN: // When palyer gets max score |
ipapp3 | 3:e1328f84b107 | 91 | lcd.locate(4,3); |
ipapp3 | 3:e1328f84b107 | 92 | lcd.printf("YOU WON!"); |
ipapp3 | 3:e1328f84b107 | 93 | if(!sw2) { // Reset if SW2 is pressed |
ipapp3 | 3:e1328f84b107 | 94 | while(!sw2); |
ipapp3 | 3:e1328f84b107 | 95 | paddle1.setLives(3); |
ipapp3 | 3:e1328f84b107 | 96 | paddle1.setScore(0); |
ipapp3 | 3:e1328f84b107 | 97 | state = RESET1; |
ipapp3 | 3:e1328f84b107 | 98 | break; |
ipapp3 | 3:e1328f84b107 | 99 | } |
ipapp3 | 3:e1328f84b107 | 100 | break; |
ipapp3 | 3:e1328f84b107 | 101 | case RESET1: // Reset objects, draw the screen, state = PAUSE |
ipapp3 | 3:e1328f84b107 | 102 | lcd.cls(); |
ipapp3 | 3:e1328f84b107 | 103 | paddle1 = Paddle(1,45,5,25,0xFFFFFF,paddle1.getLives(),paddle1.getScore()); |
ipapp3 | 3:e1328f84b107 | 104 | theBall = Ball(6,57,5,5,0xFFFF00,1,1); |
ipapp3 | 3:e1328f84b107 | 105 | block1 = Block(125,10,5,20,0x00FF00); |
ipapp3 | 3:e1328f84b107 | 106 | block2 = Block(125,40,5,20,0xFF0000); |
ipapp3 | 3:e1328f84b107 | 107 | block3 = Block(125,70,5,20,0xFFEE00); |
ipapp3 | 3:e1328f84b107 | 108 | block4 = Block(125,100,5,20,0x00FFFF); |
ipapp3 | 3:e1328f84b107 | 109 | block5 = Block(113,5,5,20,0x00FF00); |
ipapp3 | 3:e1328f84b107 | 110 | block6 = Block(113,30,5,20,0xFF0000); |
ipapp3 | 3:e1328f84b107 | 111 | block7 = Block(113,55,5,20,0xFFFFFF); |
ipapp3 | 3:e1328f84b107 | 112 | block8 = Block(113,80,5,20,0xFFEE00); |
ipapp3 | 3:e1328f84b107 | 113 | block9 = Block(113,105,5,20,0x00FFFF); |
ipapp3 | 3:e1328f84b107 | 114 | block11 = Block(101,10,5,20,0xFF0000); |
ipapp3 | 3:e1328f84b107 | 115 | block12 = Block(101,40,5,20,0x00FF00); |
ipapp3 | 3:e1328f84b107 | 116 | block13 = Block(101,70,5,20,0x00FFFF); |
ipapp3 | 3:e1328f84b107 | 117 | block14 = Block(101,100,5,20,0xFFEE00); |
ipapp3 | 3:e1328f84b107 | 118 | block15 = Block(89,5,5,20,0xFF0000); |
ipapp3 | 3:e1328f84b107 | 119 | block16 = Block(89,30,5,20,0x00FF00); |
ipapp3 | 3:e1328f84b107 | 120 | block17 = Block(89,55,5,20,0xFFFFFF); |
ipapp3 | 3:e1328f84b107 | 121 | block18 = Block(89,80,5,20,0x00FFFF); |
ipapp3 | 3:e1328f84b107 | 122 | block19 = Block(89,105,5,20,0xFFEE00); |
ipapp3 | 3:e1328f84b107 | 123 | drawScreen(paddle1, theBall, block1, block2, block3, block4, block5, block6, block7, block8, block9, |
ipapp3 | 3:e1328f84b107 | 124 | block11, block12, block13, block14, block15, block16, block17, block18, block19, false); |
ipapp3 | 3:e1328f84b107 | 125 | drawScores(paddle1); |
ipapp3 | 3:e1328f84b107 | 126 | state = PAUSE; |
ipapp3 | 3:e1328f84b107 | 127 | break; |
ipapp3 | 3:e1328f84b107 | 128 | case RESET2: // Reset objects, draw the screen, state = PAUSE |
ipapp3 | 3:e1328f84b107 | 129 | lcd.cls(); |
ipapp3 | 3:e1328f84b107 | 130 | paddle1 = Paddle(1,45,5,25,0xFFFFFF,paddle1.getLives(),paddle1.getScore()); |
ipapp3 | 3:e1328f84b107 | 131 | theBall = Ball(6,57,5,5,0xFFFF00,1,1); |
ipapp3 | 3:e1328f84b107 | 132 | drawScreen(paddle1, theBall, block1, block2, block3, block4, block5, block6, block7, block8, block9, |
ipapp3 | 3:e1328f84b107 | 133 | block11, block12, block13, block14, block15, block16, block17, block18, block19, false); |
ipapp3 | 3:e1328f84b107 | 134 | drawScores(paddle1); |
ipapp3 | 3:e1328f84b107 | 135 | state = PAUSE; |
ipapp3 | 3:e1328f84b107 | 136 | break; |
ipapp3 | 3:e1328f84b107 | 137 | case PAUSE: // Set RGB LED to Red, wait for switch input |
ipapp3 | 3:e1328f84b107 | 138 | r = 0; |
ipapp3 | 3:e1328f84b107 | 139 | b = g = 1; |
ipapp3 | 3:e1328f84b107 | 140 | if(!sw2) { |
ipapp3 | 3:e1328f84b107 | 141 | while(!sw2); |
ipapp3 | 3:e1328f84b107 | 142 | paddle1.setLives(3); |
ipapp3 | 3:e1328f84b107 | 143 | paddle1.setScore(0); |
ipapp3 | 3:e1328f84b107 | 144 | state = RESET1; |
ipapp3 | 3:e1328f84b107 | 145 | break; |
ipapp3 | 3:e1328f84b107 | 146 | } |
ipapp3 | 3:e1328f84b107 | 147 | if(!sw1) { |
ipapp3 | 3:e1328f84b107 | 148 | while(!sw1); |
ipapp3 | 3:e1328f84b107 | 149 | state = RUN; |
ipapp3 | 3:e1328f84b107 | 150 | } |
ipapp3 | 3:e1328f84b107 | 151 | break; |
ipapp3 | 3:e1328f84b107 | 152 | case RUN: // Set RGB LED to Blue and run program |
ipapp3 | 3:e1328f84b107 | 153 | r = g = 1; |
ipapp3 | 3:e1328f84b107 | 154 | b = 0; |
ipapp3 | 3:e1328f84b107 | 155 | if(!sw2) { // Reset if SW2 is pressed |
ipapp3 | 3:e1328f84b107 | 156 | while(!sw2); |
ipapp3 | 3:e1328f84b107 | 157 | paddle1.setLives(3); |
ipapp3 | 3:e1328f84b107 | 158 | paddle1.setScore(0); |
ipapp3 | 3:e1328f84b107 | 159 | state = RESET1; |
ipapp3 | 3:e1328f84b107 | 160 | break; |
ipapp3 | 3:e1328f84b107 | 161 | } |
ipapp3 | 3:e1328f84b107 | 162 | if(!sw1) { // Pause if SW1 is pressed |
ipapp3 | 3:e1328f84b107 | 163 | while(!sw1); |
ipapp3 | 3:e1328f84b107 | 164 | state = PAUSE; |
ipapp3 | 3:e1328f84b107 | 165 | break; |
ipapp3 | 3:e1328f84b107 | 166 | } |
ipapp3 | 3:e1328f84b107 | 167 | if (ps2kb.processing(&evt_kb)) { // Executes if a key is pressed |
ipapp3 | 3:e1328f84b107 | 168 | temp = evt_kb.scancode[0]; |
ipapp3 | 3:e1328f84b107 | 169 | for (int i = 1; i < evt_kb.length; i++) { // Parse keyboard input into a key |
ipapp3 | 3:e1328f84b107 | 170 | temp <<= 4; |
ipapp3 | 3:e1328f84b107 | 171 | temp |= evt_kb.scancode[i]; |
ipapp3 | 3:e1328f84b107 | 172 | } |
ipapp3 | 3:e1328f84b107 | 173 | switch(temp) { // Use key enumerator to move paddle1 |
ipapp3 | 3:e1328f84b107 | 174 | case UP: |
ipapp3 | 3:e1328f84b107 | 175 | if(paddle1.getY()>2) |
ipapp3 | 3:e1328f84b107 | 176 | paddle1.move(lcd, -2); |
ipapp3 | 3:e1328f84b107 | 177 | break; |
ipapp3 | 3:e1328f84b107 | 178 | case DOWN: |
ipapp3 | 3:e1328f84b107 | 179 | if(paddle1.getY()+paddle1.getHeight()<128) |
ipapp3 | 3:e1328f84b107 | 180 | paddle1.move(lcd, 2); |
ipapp3 | 3:e1328f84b107 | 181 | break; |
ipapp3 | 3:e1328f84b107 | 182 | } |
ipapp3 | 3:e1328f84b107 | 183 | |
ipapp3 | 3:e1328f84b107 | 184 | |
ipapp3 | 3:e1328f84b107 | 185 | } |
ipapp3 | 3:e1328f84b107 | 186 | |
ipapp3 | 3:e1328f84b107 | 187 | if(++count==3) { // Only move the ball once every 4 times through the loop |
ipapp3 | 3:e1328f84b107 | 188 | count = 0; |
ipapp3 | 3:e1328f84b107 | 189 | if(theBall.hitP1((paddle1.getX()+paddle1.getWidth()), paddle1.getY(), paddle1.getHeight())) |
ipapp3 | 3:e1328f84b107 | 190 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 191 | if(theBall.hitB1((block1.getX()+block1.getWidth()), block1.getY(), block1.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 192 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 193 | paddle1.addPoints(25); |
ipapp3 | 3:e1328f84b107 | 194 | block1.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 195 | } |
ipapp3 | 3:e1328f84b107 | 196 | if(theBall.hitB1((block2.getX()+block2.getWidth()), block2.getY(), block2.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 197 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 198 | paddle1.addPoints(25); |
ipapp3 | 3:e1328f84b107 | 199 | block2.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 200 | } |
ipapp3 | 3:e1328f84b107 | 201 | if(theBall.hitB1((block3.getX()+block3.getWidth()), block3.getY(), block3.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 202 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 203 | paddle1.addPoints(25); |
ipapp3 | 3:e1328f84b107 | 204 | block3.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 205 | } |
ipapp3 | 3:e1328f84b107 | 206 | if(theBall.hitB1((block4.getX()+block4.getWidth()), block4.getY(), block4.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 207 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 208 | paddle1.addPoints(25); |
ipapp3 | 3:e1328f84b107 | 209 | block4.move(lcd, -200); |
ipapp3 | 3:e1328f84b107 | 210 | } |
ipapp3 | 3:e1328f84b107 | 211 | if(theBall.hitB1((block5.getX()+block5.getWidth()), block5.getY(), block5.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 212 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 213 | paddle1.addPoints(20); |
ipapp3 | 3:e1328f84b107 | 214 | block5.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 215 | } |
ipapp3 | 3:e1328f84b107 | 216 | if(theBall.hitB1((block6.getX()+block6.getWidth()), block6.getY(), block6.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 217 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 218 | paddle1.addPoints(20); |
ipapp3 | 3:e1328f84b107 | 219 | block6.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 220 | } |
ipapp3 | 3:e1328f84b107 | 221 | if(theBall.hitB1((block7.getX()+block7.getWidth()), block7.getY(), block7.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 222 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 223 | paddle1.addPoints(20); |
ipapp3 | 3:e1328f84b107 | 224 | block7.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 225 | } |
ipapp3 | 3:e1328f84b107 | 226 | if(theBall.hitB1((block8.getX()+block8.getWidth()), block8.getY(), block8.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 227 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 228 | paddle1.addPoints(20); |
ipapp3 | 3:e1328f84b107 | 229 | block8.move(lcd, -200); |
ipapp3 | 3:e1328f84b107 | 230 | } |
ipapp3 | 3:e1328f84b107 | 231 | if(theBall.hitB1((block9.getX()+block9.getWidth()), block9.getY(), block9.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 232 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 233 | paddle1.addPoints(20); |
ipapp3 | 3:e1328f84b107 | 234 | block9.move(lcd, -200); |
ipapp3 | 3:e1328f84b107 | 235 | } |
ipapp3 | 3:e1328f84b107 | 236 | if(theBall.hitB1((block11.getX()+block11.getWidth()), block11.getY(), block11.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 237 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 238 | paddle1.addPoints(15); |
ipapp3 | 3:e1328f84b107 | 239 | block11.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 240 | } |
ipapp3 | 3:e1328f84b107 | 241 | if(theBall.hitB1((block12.getX()+block12.getWidth()), block12.getY(), block12.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 242 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 243 | paddle1.addPoints(15); |
ipapp3 | 3:e1328f84b107 | 244 | block12.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 245 | } |
ipapp3 | 3:e1328f84b107 | 246 | if(theBall.hitB1((block13.getX()+block13.getWidth()), block13.getY(), block13.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 247 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 248 | paddle1.addPoints(15); |
ipapp3 | 3:e1328f84b107 | 249 | block13.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 250 | } |
ipapp3 | 3:e1328f84b107 | 251 | if(theBall.hitB1((block14.getX()+block14.getWidth()), block14.getY(), block14.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 252 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 253 | paddle1.addPoints(15); |
ipapp3 | 3:e1328f84b107 | 254 | block14.move(lcd, -200); |
ipapp3 | 3:e1328f84b107 | 255 | } |
ipapp3 | 3:e1328f84b107 | 256 | if(theBall.hitB1((block15.getX()+block15.getWidth()), block15.getY(), block15.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 257 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 258 | paddle1.addPoints(10); |
ipapp3 | 3:e1328f84b107 | 259 | block15.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 260 | } |
ipapp3 | 3:e1328f84b107 | 261 | if(theBall.hitB1((block16.getX()+block16.getWidth()), block16.getY(), block16.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 262 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 263 | paddle1.addPoints(10); |
ipapp3 | 3:e1328f84b107 | 264 | block16.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 265 | } |
ipapp3 | 3:e1328f84b107 | 266 | if(theBall.hitB1((block17.getX()+block17.getWidth()), block17.getY(), block17.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 267 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 268 | paddle1.addPoints(10); |
ipapp3 | 3:e1328f84b107 | 269 | block17.move(lcd, -100); |
ipapp3 | 3:e1328f84b107 | 270 | } |
ipapp3 | 3:e1328f84b107 | 271 | if(theBall.hitB1((block18.getX()+block18.getWidth()), block18.getY(), block18.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 272 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 273 | paddle1.addPoints(10); |
ipapp3 | 3:e1328f84b107 | 274 | block18.move(lcd, -200); |
ipapp3 | 3:e1328f84b107 | 275 | } |
ipapp3 | 3:e1328f84b107 | 276 | if(theBall.hitB1((block19.getX()+block19.getWidth()), block19.getY(), block19.getHeight())) { |
ipapp3 | 3:e1328f84b107 | 277 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 278 | paddle1.addPoints(10); |
ipapp3 | 3:e1328f84b107 | 279 | block19.move(lcd, -200); |
ipapp3 | 3:e1328f84b107 | 280 | } |
ipapp3 | 3:e1328f84b107 | 281 | if(theBall.hitX()) { // If the ball hits one of the sides of the screen |
ipapp3 | 3:e1328f84b107 | 282 | if(theBall.getX()<7) { // If the ball hit paddle1's side |
ipapp3 | 3:e1328f84b107 | 283 | if(!paddle1.loseLife()) { // If paddle1 has no more lives |
ipapp3 | 3:e1328f84b107 | 284 | paddle1.setLives(3); |
ipapp3 | 3:e1328f84b107 | 285 | paddle1.setScore(0); |
ipapp3 | 3:e1328f84b107 | 286 | state = RESET1; // Reset the objects |
ipapp3 | 3:e1328f84b107 | 287 | break; |
ipapp3 | 3:e1328f84b107 | 288 | } |
ipapp3 | 3:e1328f84b107 | 289 | state = RESET2; // Reset the objects |
ipapp3 | 3:e1328f84b107 | 290 | } |
ipapp3 | 3:e1328f84b107 | 291 | theBall.reverseX(); |
ipapp3 | 3:e1328f84b107 | 292 | } |
ipapp3 | 3:e1328f84b107 | 293 | if(theBall.hitY()) |
ipapp3 | 3:e1328f84b107 | 294 | theBall.reverseY(); |
ipapp3 | 3:e1328f84b107 | 295 | theBall.move(lcd); |
ipapp3 | 3:e1328f84b107 | 296 | } |
ipapp3 | 3:e1328f84b107 | 297 | if(paddle1.getScore()==310) { |
ipapp3 | 3:e1328f84b107 | 298 | state=WIN; |
ipapp3 | 3:e1328f84b107 | 299 | } |
ipapp3 | 3:e1328f84b107 | 300 | break; |
wjohnsto | 0:93dce1e528b9 | 301 | } |
ipapp3 | 3:e1328f84b107 | 302 | drawScreen(paddle1, theBall, block1, block2, block3, block4, block5, block6, block7, block8, block9, |
ipapp3 | 3:e1328f84b107 | 303 | block11, block12, block13, block14, block15, block16, block17, block18, block19, false); |
ipapp3 | 3:e1328f84b107 | 304 | drawScores(paddle1); |
wjohnsto | 0:93dce1e528b9 | 305 | } |
wjohnsto | 0:93dce1e528b9 | 306 | } |