James Heavey
/
EL17JH
FINAL VERSION
main.cpp@53:8e3da0b58fe9, 2019-04-27 (annotated)
- Committer:
- jamesheavey
- Date:
- Sat Apr 27 20:56:03 2019 +0000
- Revision:
- 53:8e3da0b58fe9
- Parent:
- 52:652b5f51319d
- Child:
- 54:d96f68f4735b
in settings, the tilt option doesnt select due to the order, need to fix somehow, also victory screen continue is now broked and title sprite needs to be redone
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jamesheavey | 0:7d4d2023ed9c | 1 | ///////// pre-processor directives //////// |
jamesheavey | 0:7d4d2023ed9c | 2 | #include "mbed.h" |
jamesheavey | 0:7d4d2023ed9c | 3 | #include "Gamepad.h" |
jamesheavey | 0:7d4d2023ed9c | 4 | #include "N5110.h" |
jamesheavey | 27:1b5038b0a7a2 | 5 | #include "BreakoutEngine.h" |
jamesheavey | 3:5719d0fe94ed | 6 | #include "Bitmap.h" |
jamesheavey | 4:6bd488b5b31a | 7 | #include<iostream> |
jamesheavey | 8:1ab6d90c4d60 | 8 | #include "Sprites.h" |
jamesheavey | 14:38560375d420 | 9 | //#include "MotionControl.h" |
jamesheavey | 0:7d4d2023ed9c | 10 | |
jamesheavey | 0:7d4d2023ed9c | 11 | #ifdef WITH_TESTING |
jamesheavey | 0:7d4d2023ed9c | 12 | # include "tests.h" |
jamesheavey | 0:7d4d2023ed9c | 13 | #endif |
jamesheavey | 0:7d4d2023ed9c | 14 | |
jamesheavey | 9:f6f0f39538c7 | 15 | #define PADDLE_WIDTH 15 |
jamesheavey | 0:7d4d2023ed9c | 16 | #define PADDLE_HEIGHT 2 |
jamesheavey | 0:7d4d2023ed9c | 17 | #define BALL_SIZE 2 |
jamesheavey | 0:7d4d2023ed9c | 18 | #define BALL_SPEED 3 |
jamesheavey | 0:7d4d2023ed9c | 19 | |
jamesheavey | 0:7d4d2023ed9c | 20 | /////////////// structs ///////////////// |
jamesheavey | 0:7d4d2023ed9c | 21 | struct UserInput { |
jamesheavey | 0:7d4d2023ed9c | 22 | Direction d; |
jamesheavey | 0:7d4d2023ed9c | 23 | float mag; |
jamesheavey | 0:7d4d2023ed9c | 24 | }; |
jamesheavey | 0:7d4d2023ed9c | 25 | /////////////// objects /////////////// |
jamesheavey | 0:7d4d2023ed9c | 26 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
jamesheavey | 0:7d4d2023ed9c | 27 | Gamepad pad; |
jamesheavey | 27:1b5038b0a7a2 | 28 | BreakoutEngine breakout; |
jamesheavey | 0:7d4d2023ed9c | 29 | |
jamesheavey | 0:7d4d2023ed9c | 30 | ///////////// prototypes /////////////// |
jamesheavey | 0:7d4d2023ed9c | 31 | void init(); |
jamesheavey | 0:7d4d2023ed9c | 32 | void update_game(UserInput input); |
jamesheavey | 0:7d4d2023ed9c | 33 | void render(); |
jamesheavey | 53:8e3da0b58fe9 | 34 | void main_menu(); |
jamesheavey | 51:9d5c10a88b22 | 35 | void settings(); |
jamesheavey | 50:3da51f34e253 | 36 | void how_to_play(); |
jamesheavey | 10:9f445faa892c | 37 | void end_screen(); |
jamesheavey | 49:31eb7807dbd3 | 38 | void title_screen(); |
jamesheavey | 47:1d1a827be81b | 39 | void main_game(bool tilt); |
jamesheavey | 47:1d1a827be81b | 40 | int i = 0; |
jamesheavey | 47:1d1a827be81b | 41 | int prev_score = 0; |
jamesheavey | 47:1d1a827be81b | 42 | |
jamesheavey | 47:1d1a827be81b | 43 | bool tilt = false; |
jamesheavey | 0:7d4d2023ed9c | 44 | |
jamesheavey | 0:7d4d2023ed9c | 45 | ///////////// functions //////////////// |
jamesheavey | 0:7d4d2023ed9c | 46 | int main() |
jamesheavey | 0:7d4d2023ed9c | 47 | { |
jamesheavey | 0:7d4d2023ed9c | 48 | #ifdef WITH_TESTING |
jamesheavey | 0:7d4d2023ed9c | 49 | int number_of_failures = run_all_tests(); |
jamesheavey | 0:7d4d2023ed9c | 50 | |
jamesheavey | 0:7d4d2023ed9c | 51 | if(number_of_failures > 0) return number_of_failures; |
jamesheavey | 0:7d4d2023ed9c | 52 | #endif |
jamesheavey | 51:9d5c10a88b22 | 53 | title_screen(); |
jamesheavey | 3:5719d0fe94ed | 54 | |
jamesheavey | 0:7d4d2023ed9c | 55 | } |
jamesheavey | 0:7d4d2023ed9c | 56 | |
jamesheavey | 0:7d4d2023ed9c | 57 | // initialies all classes and libraries |
jamesheavey | 47:1d1a827be81b | 58 | void init(int prev_score) |
jamesheavey | 0:7d4d2023ed9c | 59 | { |
jamesheavey | 0:7d4d2023ed9c | 60 | // need to initialise LCD and Gamepad |
jamesheavey | 0:7d4d2023ed9c | 61 | lcd.init(); |
jamesheavey | 0:7d4d2023ed9c | 62 | pad.init(); |
jamesheavey | 0:7d4d2023ed9c | 63 | |
jamesheavey | 0:7d4d2023ed9c | 64 | // initialise the game with correct ball and paddle sizes |
jamesheavey | 47:1d1a827be81b | 65 | breakout.init(PADDLE_WIDTH,PADDLE_HEIGHT,BALL_SIZE,pad.read_pot()*3+2,prev_score); |
jamesheavey | 0:7d4d2023ed9c | 66 | |
jamesheavey | 0:7d4d2023ed9c | 67 | } |
jamesheavey | 0:7d4d2023ed9c | 68 | |
jamesheavey | 0:7d4d2023ed9c | 69 | // this function draws each frame on the LCD |
jamesheavey | 0:7d4d2023ed9c | 70 | void render() |
jamesheavey | 0:7d4d2023ed9c | 71 | { |
jamesheavey | 0:7d4d2023ed9c | 72 | // clear screen, re-draw and refresh |
jamesheavey | 0:7d4d2023ed9c | 73 | lcd.clear(); |
jamesheavey | 26:25eea19c5fbe | 74 | breakout.draw(lcd); |
jamesheavey | 0:7d4d2023ed9c | 75 | lcd.refresh(); |
jamesheavey | 0:7d4d2023ed9c | 76 | } |
jamesheavey | 0:7d4d2023ed9c | 77 | |
jamesheavey | 0:7d4d2023ed9c | 78 | // simple splash screen displayed on start-up |
jamesheavey | 53:8e3da0b58fe9 | 79 | void main_menu() { |
jamesheavey | 0:7d4d2023ed9c | 80 | // wait flashing LEDs until start button is pressed |
jamesheavey | 14:38560375d420 | 81 | //bool joy = true; |
jamesheavey | 14:38560375d420 | 82 | |
jamesheavey | 50:3da51f34e253 | 83 | lcd.clear(); |
jamesheavey | 50:3da51f34e253 | 84 | lcd.printString(" START ",0,2); // start with default as joystick |
jamesheavey | 50:3da51f34e253 | 85 | lcd.printString(" SETTINGS ",0,3); // choose between joystick and tilt |
jamesheavey | 50:3da51f34e253 | 86 | lcd.printString(" HOW TO PLAY ",0,4); // brief text on how to do stuff |
jamesheavey | 50:3da51f34e253 | 87 | lcd.refresh(); |
jamesheavey | 53:8e3da0b58fe9 | 88 | wait(0.1); |
jamesheavey | 50:3da51f34e253 | 89 | |
jamesheavey | 53:8e3da0b58fe9 | 90 | int pointer = 2; |
jamesheavey | 52:652b5f51319d | 91 | |
jamesheavey | 50:3da51f34e253 | 92 | while (pad.check_event(Gamepad::A_PRESSED) == false) { //maybe add a jingle |
jamesheavey | 53:8e3da0b58fe9 | 93 | lcd.clear(); |
jamesheavey | 53:8e3da0b58fe9 | 94 | lcd.printString(" START ",0,2); // start with default as joystick |
jamesheavey | 53:8e3da0b58fe9 | 95 | lcd.printString(" SETTINGS ",0,3); // choose between joystick and tilt |
jamesheavey | 53:8e3da0b58fe9 | 96 | lcd.printString(" HOW TO PLAY ",0,4); // brief text on how to do stuff |
jamesheavey | 53:8e3da0b58fe9 | 97 | lcd.printString("->",0,pointer); |
jamesheavey | 53:8e3da0b58fe9 | 98 | lcd.refresh(); |
jamesheavey | 53:8e3da0b58fe9 | 99 | wait(0.1); |
jamesheavey | 53:8e3da0b58fe9 | 100 | if (pad.check_event(Gamepad::L_PRESSED) && pointer > 2) { // change to joystick |
jamesheavey | 50:3da51f34e253 | 101 | pointer -= 1; |
jamesheavey | 53:8e3da0b58fe9 | 102 | pad.tone(750.0,0.3); |
jamesheavey | 53:8e3da0b58fe9 | 103 | wait(0.1); |
jamesheavey | 53:8e3da0b58fe9 | 104 | } else if (pad.check_event(Gamepad::R_PRESSED) && pointer < 4) { |
jamesheavey | 50:3da51f34e253 | 105 | pointer += 1; |
jamesheavey | 53:8e3da0b58fe9 | 106 | pad.tone(750.0,0.3); |
jamesheavey | 53:8e3da0b58fe9 | 107 | wait(0.1); |
jamesheavey | 50:3da51f34e253 | 108 | } |
jamesheavey | 3:5719d0fe94ed | 109 | |
jamesheavey | 50:3da51f34e253 | 110 | } |
jamesheavey | 53:8e3da0b58fe9 | 111 | if (pointer == 2) { |
jamesheavey | 52:652b5f51319d | 112 | main_game(tilt); |
jamesheavey | 51:9d5c10a88b22 | 113 | } |
jamesheavey | 53:8e3da0b58fe9 | 114 | else if (pointer == 3){ |
jamesheavey | 51:9d5c10a88b22 | 115 | settings(); |
jamesheavey | 51:9d5c10a88b22 | 116 | } |
jamesheavey | 53:8e3da0b58fe9 | 117 | else if (pointer == 4){ |
jamesheavey | 51:9d5c10a88b22 | 118 | how_to_play(); |
jamesheavey | 51:9d5c10a88b22 | 119 | } |
jamesheavey | 50:3da51f34e253 | 120 | } |
jamesheavey | 50:3da51f34e253 | 121 | |
jamesheavey | 52:652b5f51319d | 122 | void settings() { |
jamesheavey | 50:3da51f34e253 | 123 | |
jamesheavey | 50:3da51f34e253 | 124 | lcd.clear(); |
jamesheavey | 50:3da51f34e253 | 125 | lcd.printString(" JOYSTICK ",0,2); // start with default as joystick |
jamesheavey | 50:3da51f34e253 | 126 | lcd.printString(" TILT ",0,3); // choose between joystick and tilt |
jamesheavey | 50:3da51f34e253 | 127 | lcd.refresh(); |
jamesheavey | 53:8e3da0b58fe9 | 128 | wait(0.1); |
jamesheavey | 53:8e3da0b58fe9 | 129 | |
jamesheavey | 53:8e3da0b58fe9 | 130 | int pointer = 2; |
jamesheavey | 52:652b5f51319d | 131 | |
jamesheavey | 50:3da51f34e253 | 132 | while (pad.check_event(Gamepad::A_PRESSED) || pad.check_event(Gamepad::B_PRESSED) == false) { |
jamesheavey | 53:8e3da0b58fe9 | 133 | lcd.clear(); |
jamesheavey | 53:8e3da0b58fe9 | 134 | lcd.printString(" JOYSTICK ",0,2); // start with default as joystick |
jamesheavey | 53:8e3da0b58fe9 | 135 | lcd.printString(" TILT ",0,3); // choose between joystick and tilt |
jamesheavey | 53:8e3da0b58fe9 | 136 | lcd.printString("->",0,pointer); |
jamesheavey | 53:8e3da0b58fe9 | 137 | lcd.refresh(); |
jamesheavey | 53:8e3da0b58fe9 | 138 | wait(0.1); |
jamesheavey | 53:8e3da0b58fe9 | 139 | |
jamesheavey | 53:8e3da0b58fe9 | 140 | if (pad.check_event(Gamepad::L_PRESSED) && pointer > 2) { |
jamesheavey | 50:3da51f34e253 | 141 | pointer -= 1; |
jamesheavey | 53:8e3da0b58fe9 | 142 | pad.tone(750.0,0.3); |
jamesheavey | 53:8e3da0b58fe9 | 143 | wait(0.1); |
jamesheavey | 53:8e3da0b58fe9 | 144 | } else if (pad.check_event(Gamepad::R_PRESSED) && pointer < 3) { |
jamesheavey | 50:3da51f34e253 | 145 | pointer += 1; |
jamesheavey | 53:8e3da0b58fe9 | 146 | pad.tone(750.0,0.3); |
jamesheavey | 53:8e3da0b58fe9 | 147 | wait(0.1); |
jamesheavey | 50:3da51f34e253 | 148 | } |
jamesheavey | 16:1761dfe801af | 149 | |
jamesheavey | 53:8e3da0b58fe9 | 150 | if (pad.check_event(Gamepad::A_PRESSED) && pointer == 2) { |
jamesheavey | 53:8e3da0b58fe9 | 151 | pad.tone(750.0,0.3); |
jamesheavey | 53:8e3da0b58fe9 | 152 | wait(0.1); |
jamesheavey | 51:9d5c10a88b22 | 153 | tilt = false; |
jamesheavey | 51:9d5c10a88b22 | 154 | } |
jamesheavey | 53:8e3da0b58fe9 | 155 | else if (pad.check_event(Gamepad::A_PRESSED) && pointer == 3) { // this one doesnt work because of the order?? |
jamesheavey | 53:8e3da0b58fe9 | 156 | pad.tone(750.0,0.3); |
jamesheavey | 53:8e3da0b58fe9 | 157 | wait(0.1); |
jamesheavey | 51:9d5c10a88b22 | 158 | tilt = true; |
jamesheavey | 50:3da51f34e253 | 159 | } |
jamesheavey | 53:8e3da0b58fe9 | 160 | if (pad.check_event(Gamepad::B_PRESSED)) { |
jamesheavey | 50:3da51f34e253 | 161 | main_menu(); |
jamesheavey | 16:1761dfe801af | 162 | } |
jamesheavey | 0:7d4d2023ed9c | 163 | } |
jamesheavey | 53:8e3da0b58fe9 | 164 | settings(); //sometimes the button bounce causes it to skip the while loop (could add wait in at the top) |
jamesheavey | 10:9f445faa892c | 165 | } |
jamesheavey | 10:9f445faa892c | 166 | |
jamesheavey | 52:652b5f51319d | 167 | void how_to_play() { |
jamesheavey | 50:3da51f34e253 | 168 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
jamesheavey | 50:3da51f34e253 | 169 | lcd.clear(); |
jamesheavey | 50:3da51f34e253 | 170 | lcd.printString(" explain ",2,2); |
jamesheavey | 50:3da51f34e253 | 171 | lcd.printString(" PRESS B ",1,4); |
jamesheavey | 50:3da51f34e253 | 172 | lcd.refresh(); |
jamesheavey | 53:8e3da0b58fe9 | 173 | wait(0.1); |
jamesheavey | 50:3da51f34e253 | 174 | } |
jamesheavey | 50:3da51f34e253 | 175 | main_menu(); |
jamesheavey | 50:3da51f34e253 | 176 | } |
jamesheavey | 16:1761dfe801af | 177 | |
jamesheavey | 10:9f445faa892c | 178 | void end_screen() { |
jamesheavey | 15:b867a6620f96 | 179 | lcd.clear(); |
jamesheavey | 38:3a077f0259df | 180 | lcd.printString(" RESTART? ",2,2); |
jamesheavey | 15:b867a6620f96 | 181 | lcd.printString(" PRESS START ",1,4); |
jamesheavey | 15:b867a6620f96 | 182 | lcd.refresh(); |
jamesheavey | 15:b867a6620f96 | 183 | pad.tone(750.0,0.3); |
jamesheavey | 15:b867a6620f96 | 184 | wait(0.4); |
jamesheavey | 15:b867a6620f96 | 185 | |
jamesheavey | 15:b867a6620f96 | 186 | pad.tone(300.0,0.3); |
jamesheavey | 15:b867a6620f96 | 187 | wait(0.4); |
jamesheavey | 10:9f445faa892c | 188 | |
jamesheavey | 10:9f445faa892c | 189 | while (pad.check_event(Gamepad::START_PRESSED) == false) { |
jamesheavey | 10:9f445faa892c | 190 | lcd.clear(); |
jamesheavey | 48:966f2cf803ec | 191 | lcd.printString(" RESTART? ",2,2); //print score here |
jamesheavey | 10:9f445faa892c | 192 | lcd.printString(" PRESS START ",1,4); |
jamesheavey | 10:9f445faa892c | 193 | lcd.refresh(); |
jamesheavey | 10:9f445faa892c | 194 | } |
jamesheavey | 49:31eb7807dbd3 | 195 | title_screen(); |
jamesheavey | 10:9f445faa892c | 196 | } |
jamesheavey | 10:9f445faa892c | 197 | |
jamesheavey | 13:418a71b24b37 | 198 | void victory_screen() { |
jamesheavey | 15:b867a6620f96 | 199 | lcd.clear(); |
jamesheavey | 43:81d22f68dfae | 200 | lcd.printString(" VICTORY! ",2,1); |
jamesheavey | 47:1d1a827be81b | 201 | lcd.printString(" CONT = START ",0,4); // print score here |
jamesheavey | 47:1d1a827be81b | 202 | lcd.printString(" MENU = BACK ",0,5); |
jamesheavey | 15:b867a6620f96 | 203 | lcd.refresh(); |
jamesheavey | 22:fa2e0b58043a | 204 | pad.tone(2500.0,0.1); |
jamesheavey | 22:fa2e0b58043a | 205 | wait(0.4); |
jamesheavey | 15:b867a6620f96 | 206 | |
jamesheavey | 22:fa2e0b58043a | 207 | pad.tone(2500.0,0.1); |
jamesheavey | 22:fa2e0b58043a | 208 | wait(0.2); |
jamesheavey | 15:b867a6620f96 | 209 | |
jamesheavey | 15:b867a6620f96 | 210 | pad.tone(4000.0,0.6); |
jamesheavey | 15:b867a6620f96 | 211 | wait(0.6); |
jamesheavey | 43:81d22f68dfae | 212 | while (pad.check_event(Gamepad::START_PRESSED) || pad.check_event(Gamepad::BACK_PRESSED) == false) { |
jamesheavey | 13:418a71b24b37 | 213 | lcd.clear(); |
jamesheavey | 43:81d22f68dfae | 214 | |
jamesheavey | 43:81d22f68dfae | 215 | lcd.printString(" VICTORY! ",2,1); |
jamesheavey | 47:1d1a827be81b | 216 | lcd.printString(" CONT = START ",0,4); |
jamesheavey | 47:1d1a827be81b | 217 | lcd.printString(" MENU = BACK ",0,5); |
jamesheavey | 43:81d22f68dfae | 218 | |
jamesheavey | 13:418a71b24b37 | 219 | lcd.refresh(); |
jamesheavey | 15:b867a6620f96 | 220 | |
jamesheavey | 43:81d22f68dfae | 221 | if (pad.check_event(Gamepad::START_PRESSED)) { |
jamesheavey | 47:1d1a827be81b | 222 | prev_score = breakout.get_prev_score(); |
jamesheavey | 47:1d1a827be81b | 223 | main_game(tilt); // placeholder, change so game restarts |
jamesheavey | 43:81d22f68dfae | 224 | } |
jamesheavey | 43:81d22f68dfae | 225 | else if (pad.check_event(Gamepad::BACK_PRESSED)) { |
jamesheavey | 49:31eb7807dbd3 | 226 | title_screen(); |
jamesheavey | 43:81d22f68dfae | 227 | } |
jamesheavey | 13:418a71b24b37 | 228 | } |
jamesheavey | 13:418a71b24b37 | 229 | } |
jamesheavey | 13:418a71b24b37 | 230 | |
jamesheavey | 49:31eb7807dbd3 | 231 | void title_screen() { |
jamesheavey | 47:1d1a827be81b | 232 | tilt = false; |
jamesheavey | 47:1d1a827be81b | 233 | prev_score = 0; |
jamesheavey | 47:1d1a827be81b | 234 | init(prev_score); // initialise and then display welcome screen... |
jamesheavey | 50:3da51f34e253 | 235 | |
jamesheavey | 50:3da51f34e253 | 236 | Bitmap breakwhite(breakwhite_data, 48, 84); |
jamesheavey | 50:3da51f34e253 | 237 | Bitmap breakblack(breakblack_data, 48, 84); |
jamesheavey | 50:3da51f34e253 | 238 | |
jamesheavey | 53:8e3da0b58fe9 | 239 | while (pad.check_event(Gamepad::START_PRESSED) == false) { //maybe add a jingle |
jamesheavey | 50:3da51f34e253 | 240 | |
jamesheavey | 50:3da51f34e253 | 241 | breakwhite.render(lcd, 0, 0); |
jamesheavey | 50:3da51f34e253 | 242 | lcd.refresh(); |
jamesheavey | 50:3da51f34e253 | 243 | pad.leds_on(); |
jamesheavey | 50:3da51f34e253 | 244 | wait(0.5); |
jamesheavey | 50:3da51f34e253 | 245 | |
jamesheavey | 50:3da51f34e253 | 246 | lcd.clear(); |
jamesheavey | 50:3da51f34e253 | 247 | |
jamesheavey | 50:3da51f34e253 | 248 | breakblack.render(lcd, 0, 0); |
jamesheavey | 50:3da51f34e253 | 249 | lcd.refresh(); |
jamesheavey | 50:3da51f34e253 | 250 | pad.leds_off(); |
jamesheavey | 50:3da51f34e253 | 251 | wait(0.5); |
jamesheavey | 50:3da51f34e253 | 252 | } |
jamesheavey | 53:8e3da0b58fe9 | 253 | pad.tone(2000.0,0.2); |
jamesheavey | 53:8e3da0b58fe9 | 254 | wait(0.2); |
jamesheavey | 53:8e3da0b58fe9 | 255 | main_menu(); |
jamesheavey | 47:1d1a827be81b | 256 | } |
jamesheavey | 47:1d1a827be81b | 257 | |
jamesheavey | 47:1d1a827be81b | 258 | void main_game(bool tilt) { |
jamesheavey | 47:1d1a827be81b | 259 | int fps = 8; // frames per second |
jamesheavey | 47:1d1a827be81b | 260 | i ++; //to init the stuff |
jamesheavey | 47:1d1a827be81b | 261 | if (i > 1) { |
jamesheavey | 47:1d1a827be81b | 262 | init(prev_score); |
jamesheavey | 47:1d1a827be81b | 263 | } |
jamesheavey | 47:1d1a827be81b | 264 | bool pause = false; |
jamesheavey | 47:1d1a827be81b | 265 | lcd.setBrightness(1); |
jamesheavey | 47:1d1a827be81b | 266 | |
jamesheavey | 10:9f445faa892c | 267 | Bitmap three(three_data, 48, 84); |
jamesheavey | 10:9f445faa892c | 268 | Bitmap two(two_data, 48, 84); |
jamesheavey | 10:9f445faa892c | 269 | Bitmap one(one_data, 48, 84); |
jamesheavey | 10:9f445faa892c | 270 | |
jamesheavey | 10:9f445faa892c | 271 | lcd.clear(); |
jamesheavey | 10:9f445faa892c | 272 | three.render(lcd, 0, 0); |
jamesheavey | 10:9f445faa892c | 273 | lcd.refresh(); |
jamesheavey | 15:b867a6620f96 | 274 | pad.tone(500.0,0.5); |
jamesheavey | 10:9f445faa892c | 275 | wait(1); |
jamesheavey | 10:9f445faa892c | 276 | |
jamesheavey | 10:9f445faa892c | 277 | lcd.clear(); |
jamesheavey | 10:9f445faa892c | 278 | two.render(lcd, 0, 0); |
jamesheavey | 10:9f445faa892c | 279 | lcd.refresh(); |
jamesheavey | 15:b867a6620f96 | 280 | pad.tone(500.0,0.5); |
jamesheavey | 10:9f445faa892c | 281 | wait(1); |
jamesheavey | 10:9f445faa892c | 282 | |
jamesheavey | 10:9f445faa892c | 283 | lcd.clear(); |
jamesheavey | 10:9f445faa892c | 284 | one.render(lcd, 0, 0); |
jamesheavey | 10:9f445faa892c | 285 | lcd.refresh(); |
jamesheavey | 15:b867a6620f96 | 286 | pad.tone(1000.0,1); |
jamesheavey | 10:9f445faa892c | 287 | wait(1); |
jamesheavey | 10:9f445faa892c | 288 | |
jamesheavey | 10:9f445faa892c | 289 | render(); // first draw the initial frame |
jamesheavey | 10:9f445faa892c | 290 | wait(1.0f/fps); // and wait for one frame period |
jamesheavey | 10:9f445faa892c | 291 | |
jamesheavey | 10:9f445faa892c | 292 | |
jamesheavey | 10:9f445faa892c | 293 | // game loop - read input, update the game state and render the display |
jamesheavey | 10:9f445faa892c | 294 | while (1) { |
jamesheavey | 26:25eea19c5fbe | 295 | breakout.read_input(pad,tilt); |
jamesheavey | 26:25eea19c5fbe | 296 | breakout.update(pad); |
jamesheavey | 10:9f445faa892c | 297 | render(); |
jamesheavey | 26:25eea19c5fbe | 298 | if (breakout.check_goal(pad) == true) { |
jamesheavey | 12:f714a9e8c55b | 299 | lcd.setBrightness(0); |
jamesheavey | 12:f714a9e8c55b | 300 | wait(0.1); |
jamesheavey | 12:f714a9e8c55b | 301 | lcd.setBrightness(1); |
jamesheavey | 12:f714a9e8c55b | 302 | wait(0.1); |
jamesheavey | 12:f714a9e8c55b | 303 | lcd.setBrightness(0); |
jamesheavey | 12:f714a9e8c55b | 304 | wait(0.1); |
jamesheavey | 12:f714a9e8c55b | 305 | lcd.setBrightness(1); |
jamesheavey | 12:f714a9e8c55b | 306 | wait(0.1); |
jamesheavey | 12:f714a9e8c55b | 307 | lcd.setBrightness(0); |
jamesheavey | 12:f714a9e8c55b | 308 | wait(0.1); |
jamesheavey | 12:f714a9e8c55b | 309 | lcd.setBrightness(1); |
jamesheavey | 12:f714a9e8c55b | 310 | wait(0.1); |
jamesheavey | 12:f714a9e8c55b | 311 | lcd.setBrightness(0); |
jamesheavey | 12:f714a9e8c55b | 312 | wait(0.1); |
jamesheavey | 12:f714a9e8c55b | 313 | lcd.setBrightness(1); |
jamesheavey | 12:f714a9e8c55b | 314 | } |
jamesheavey | 10:9f445faa892c | 315 | if (pad.check_event(Gamepad::BACK_PRESSED) == true) { |
jamesheavey | 10:9f445faa892c | 316 | pause = !pause; |
jamesheavey | 10:9f445faa892c | 317 | } |
jamesheavey | 10:9f445faa892c | 318 | while (pause == true) { |
jamesheavey | 10:9f445faa892c | 319 | lcd.clear(); |
jamesheavey | 10:9f445faa892c | 320 | lcd.printString(" PAUSED ",0,2); |
jamesheavey | 10:9f445faa892c | 321 | lcd.refresh(); |
jamesheavey | 10:9f445faa892c | 322 | if (pad.check_event(Gamepad::BACK_PRESSED) == true) { |
jamesheavey | 10:9f445faa892c | 323 | pause = !pause; |
jamesheavey | 10:9f445faa892c | 324 | } |
jamesheavey | 10:9f445faa892c | 325 | wait(1.0f/fps); |
jamesheavey | 10:9f445faa892c | 326 | } |
jamesheavey | 26:25eea19c5fbe | 327 | if (breakout.get_lives() == 0) { |
jamesheavey | 10:9f445faa892c | 328 | //if (end_screen() == true) { |
jamesheavey | 10:9f445faa892c | 329 | // main_menu(); |
jamesheavey | 10:9f445faa892c | 330 | //} |
jamesheavey | 10:9f445faa892c | 331 | //else { |
jamesheavey | 10:9f445faa892c | 332 | // main_menu(); |
jamesheavey | 10:9f445faa892c | 333 | //} |
jamesheavey | 14:38560375d420 | 334 | pad.leds_off(); //turns last led off (doesnt run through and update bored so last led doent turn off via lives leds |
jamesheavey | 10:9f445faa892c | 335 | end_screen(); |
jamesheavey | 10:9f445faa892c | 336 | } |
jamesheavey | 26:25eea19c5fbe | 337 | if (breakout.get_num_left() == 0) { |
jamesheavey | 13:418a71b24b37 | 338 | victory_screen(); |
jamesheavey | 13:418a71b24b37 | 339 | } |
jamesheavey | 10:9f445faa892c | 340 | wait(1.0f/fps); |
jamesheavey | 10:9f445faa892c | 341 | } |
jamesheavey | 10:9f445faa892c | 342 | } |
jamesheavey | 10:9f445faa892c | 343 |