ELEC2645 (2018/19) / Mbed 2 deprecated henririgby98

Dependencies:   mbed

Committer:
henririgby98
Date:
Thu May 09 02:59:11 2019 +0000
Revision:
11:c60b61a80060
Parent:
10:2b52d7e06712
Child:
12:3bfde5b4d834
Finished Game!!!!!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
henririgby98 4:d744920089ea 1 ///////// pre-processor directives ////////
henririgby98 2:794ed187ffcd 2 #include "mbed.h"
henririgby98 2:794ed187ffcd 3 #include "Gamepad.h"
henririgby98 2:794ed187ffcd 4 #include "N5110.h"
henririgby98 4:d744920089ea 5 #include "SpaceRebEngine.h"
henririgby98 2:794ed187ffcd 6
henririgby98 5:0da65740cd5e 7 #define SPACEINVADER_WIDTH 8
henririgby98 5:0da65740cd5e 8 #define SPACEINVADER_HEIGHT 11
henririgby98 4:d744920089ea 9 #define MISSILES_SIZE 2
henririgby98 4:d744920089ea 10 #define MISSILES_SPEED 3
henririgby98 4:d744920089ea 11
henririgby98 4:d744920089ea 12 /////////////// structs /////////////////
henririgby98 4:d744920089ea 13 struct UserInput {
henririgby98 4:d744920089ea 14 Direction d;
henririgby98 4:d744920089ea 15 float mag;
henririgby98 4:d744920089ea 16 };
henririgby98 4:d744920089ea 17 /////////////// objects ///////////////
henririgby98 2:794ed187ffcd 18 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
henririgby98 2:794ed187ffcd 19 Gamepad pad;
henririgby98 4:d744920089ea 20 SpaceRebEngine spacerebellion;
henririgby98 4:d744920089ea 21
henririgby98 4:d744920089ea 22 ///////////// prototypes ///////////////
henririgby98 4:d744920089ea 23 void init();
henririgby98 4:d744920089ea 24 void update_game(UserInput input);
henririgby98 4:d744920089ea 25 void render();
henririgby98 4:d744920089ea 26 void welcome();
henririgby98 9:436b88b70fdd 27 void menu();
henririgby98 10:2b52d7e06712 28 void Story();
henririgby98 10:2b52d7e06712 29 void Controls();
henririgby98 10:2b52d7e06712 30 void Credits();
henririgby98 7:e0cab3e73df9 31 void Game1Over();
henririgby98 8:3c15554e6723 32 void x1_1();
henririgby98 8:3c15554e6723 33 void x1_2();
henririgby98 8:3c15554e6723 34 void x2_1();
henririgby98 8:3c15554e6723 35 void x2_2();
henririgby98 8:3c15554e6723 36 void x3_1();
henririgby98 8:3c15554e6723 37 void x3_2();
henririgby98 7:e0cab3e73df9 38 ///////////// gloabal variable ////////////////
henririgby98 7:e0cab3e73df9 39 bool end = false;
henririgby98 7:e0cab3e73df9 40 float counter = 1.0;
henririgby98 7:e0cab3e73df9 41 int score = 0;
henririgby98 7:e0cab3e73df9 42 int speed = MISSILES_SPEED;
henririgby98 8:3c15554e6723 43 int i=0;
henririgby98 10:2b52d7e06712 44 int choose = 0;
henririgby98 8:3c15554e6723 45 int X_1[11][11] = {
henririgby98 8:3c15554e6723 46 { 1,1,0,0,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 47 { 1,1,1,0,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 48 { 0,1,1,1,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 49 { 0,0,1,1,1,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 50 { 0,0,0,1,1,1,0,0,0,0,0 },
henririgby98 8:3c15554e6723 51 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 8:3c15554e6723 52 { 0,0,0,0,0,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 53 { 0,0,0,0,0,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 54 { 0,0,0,0,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 55 { 0,0,0,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 56 { 0,0,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 57 };
henririgby98 8:3c15554e6723 58 int X_2[11][11] = {
henririgby98 8:3c15554e6723 59 { 1,1,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 60 { 1,1,1,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 61 { 0,1,1,1,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 62 { 0,0,1,1,1,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 63 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 64 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 8:3c15554e6723 65 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 66 { 0,0,1,1,1,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 67 { 0,1,1,1,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 68 { 1,1,1,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 69 { 1,1,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 70 };
henririgby98 8:3c15554e6723 71 int invader[8][11] = {
henririgby98 8:3c15554e6723 72 { 0,0,1,0,0,0,0,0,1,0,0 },
henririgby98 8:3c15554e6723 73 { 0,0,0,1,0,0,0,1,0,0,0 },
henririgby98 8:3c15554e6723 74 { 0,0,1,1,1,1,1,1,1,0,0 },
henririgby98 8:3c15554e6723 75 { 0,1,1,0,1,1,1,0,1,1,0 },
henririgby98 8:3c15554e6723 76 { 1,1,1,1,1,1,1,1,1,1,1 },
henririgby98 8:3c15554e6723 77 { 1,0,1,1,1,1,1,1,1,0,1 },
henririgby98 8:3c15554e6723 78 { 1,0,1,0,0,0,0,0,1,0,1 },
henririgby98 8:3c15554e6723 79 { 0,0,0,1,1,0,1,1,0,0,0 },
henririgby98 8:3c15554e6723 80 };
henririgby98 11:c60b61a80060 81 int arrowd[6][11] = {
henririgby98 11:c60b61a80060 82 { 1,1,1,1,1,1,1,1,1,1,1 },
henririgby98 11:c60b61a80060 83 { 0,1,1,1,1,1,1,1,1,1,0 },
henririgby98 11:c60b61a80060 84 { 0,0,1,1,1,1,1,1,1,0,0 },
henririgby98 11:c60b61a80060 85 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 11:c60b61a80060 86 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 11:c60b61a80060 87 { 0,0,0,0,0,1,0,0,0,0,0 },
henririgby98 11:c60b61a80060 88 };
henririgby98 4:d744920089ea 89 ///////////// functions ////////////////
henririgby98 4:d744920089ea 90 int main()
henririgby98 4:d744920089ea 91 {
henririgby98 4:d744920089ea 92 int fps = 8; // frames per second
henririgby98 7:e0cab3e73df9 93
henririgby98 4:d744920089ea 94 init(); // initialise and then display welcome screen...
henririgby98 4:d744920089ea 95 welcome(); // waiting for the user to start
henririgby98 2:794ed187ffcd 96
henririgby98 10:2b52d7e06712 97 menu:
henririgby98 9:436b88b70fdd 98 menu();
henririgby98 11:c60b61a80060 99 init();
henririgby98 11:c60b61a80060 100 end = false;
henririgby98 4:d744920089ea 101 render(); // first draw the initial frame
henririgby98 4:d744920089ea 102 wait(1.0f/fps); // and wait for one frame period
henririgby98 4:d744920089ea 103
henririgby98 4:d744920089ea 104 // game loop - read input, update the game state and render the display
henririgby98 7:e0cab3e73df9 105 while (!end) {
henririgby98 4:d744920089ea 106 spacerebellion.read_input(pad);
henririgby98 4:d744920089ea 107 spacerebellion.update(pad);
henririgby98 4:d744920089ea 108 render();
henririgby98 7:e0cab3e73df9 109 end = spacerebellion.game_end();
henririgby98 4:d744920089ea 110 wait(1.0f/fps);
henririgby98 7:e0cab3e73df9 111 counter = counter + 1/8;
henririgby98 4:d744920089ea 112 }
henririgby98 7:e0cab3e73df9 113 lcd.clear();
henririgby98 8:3c15554e6723 114 i = 0;
henririgby98 8:3c15554e6723 115 while(i < 200) {
henririgby98 8:3c15554e6723 116 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_BLACK);
henririgby98 8:3c15554e6723 117 lcd.refresh();
henririgby98 8:3c15554e6723 118 i++;
henririgby98 8:3c15554e6723 119 }
henririgby98 8:3c15554e6723 120 lcd.clear();
henririgby98 8:3c15554e6723 121 i = 0;
henririgby98 8:3c15554e6723 122 while(i < 200) {
henririgby98 8:3c15554e6723 123 x1_1();
henririgby98 8:3c15554e6723 124 lcd.refresh();
henririgby98 8:3c15554e6723 125 pad.tone(1200.0,0.2);
henririgby98 8:3c15554e6723 126 i++;
henririgby98 8:3c15554e6723 127 }
henririgby98 8:3c15554e6723 128 i = 0;
henririgby98 8:3c15554e6723 129 while(i < 200) {
henririgby98 8:3c15554e6723 130 x1_2();
henririgby98 8:3c15554e6723 131 lcd.refresh();
henririgby98 8:3c15554e6723 132 pad.tone(1500.0,0.2);
henririgby98 8:3c15554e6723 133 i++;
henririgby98 8:3c15554e6723 134 }
henririgby98 8:3c15554e6723 135 i = 0;
henririgby98 8:3c15554e6723 136 while(i < 200) {
henririgby98 8:3c15554e6723 137 x2_1();
henririgby98 8:3c15554e6723 138 lcd.refresh();
henririgby98 8:3c15554e6723 139 pad.tone(1200.0,0.2);
henririgby98 8:3c15554e6723 140 i++;
henririgby98 8:3c15554e6723 141 }
henririgby98 8:3c15554e6723 142 i = 0;
henririgby98 8:3c15554e6723 143 while(i < 200) {
henririgby98 8:3c15554e6723 144 x2_2();
henririgby98 8:3c15554e6723 145 lcd.refresh();
henririgby98 8:3c15554e6723 146 pad.tone(1500.0,0.2);
henririgby98 8:3c15554e6723 147 i++;
henririgby98 8:3c15554e6723 148 }
henririgby98 8:3c15554e6723 149 i = 0;
henririgby98 8:3c15554e6723 150 while(i < 200) {
henririgby98 8:3c15554e6723 151 x3_1();
henririgby98 8:3c15554e6723 152 lcd.refresh();
henririgby98 8:3c15554e6723 153 pad.tone(1200.0,0.2);
henririgby98 8:3c15554e6723 154 i++;
henririgby98 8:3c15554e6723 155 }
henririgby98 8:3c15554e6723 156 i = 0;
henririgby98 8:3c15554e6723 157 while(i < 200) {
henririgby98 8:3c15554e6723 158 x3_2();
henririgby98 8:3c15554e6723 159 lcd.refresh();
henririgby98 8:3c15554e6723 160 pad.tone(1500.0,0.2);
henririgby98 8:3c15554e6723 161 i++;
henririgby98 8:3c15554e6723 162 }
henririgby98 8:3c15554e6723 163 lcd.clear();
henririgby98 7:e0cab3e73df9 164 Game1Over();
henririgby98 11:c60b61a80060 165 goto menu;
henririgby98 4:d744920089ea 166 }
henririgby98 4:d744920089ea 167
henririgby98 4:d744920089ea 168 // initialies all classes and libraries
henririgby98 4:d744920089ea 169 void init()
henririgby98 4:d744920089ea 170 {
henririgby98 4:d744920089ea 171 // need to initialise LCD and Gamepad
henririgby98 4:d744920089ea 172 lcd.init();
henririgby98 4:d744920089ea 173 pad.init();
henririgby98 4:d744920089ea 174
henririgby98 4:d744920089ea 175 // initialise the game with correct ball and paddle sizes
henririgby98 4:d744920089ea 176 spacerebellion.init(SPACEINVADER_WIDTH,SPACEINVADER_HEIGHT,MISSILES_SIZE,MISSILES_SPEED);
henririgby98 4:d744920089ea 177
henririgby98 4:d744920089ea 178 }
henririgby98 2:794ed187ffcd 179
henririgby98 4:d744920089ea 180 // this function draws each frame on the LCD
henririgby98 4:d744920089ea 181 void render()
henririgby98 4:d744920089ea 182 {
henririgby98 4:d744920089ea 183 // clear screen, re-draw and refresh
henririgby98 4:d744920089ea 184 lcd.clear();
henririgby98 4:d744920089ea 185 spacerebellion.draw(lcd);
henririgby98 4:d744920089ea 186 lcd.refresh();
henririgby98 4:d744920089ea 187 }
henririgby98 4:d744920089ea 188
henririgby98 4:d744920089ea 189 // simple splash screen displayed on start-up
henririgby98 4:d744920089ea 190 void welcome() {
henririgby98 4:d744920089ea 191
henririgby98 8:3c15554e6723 192 lcd.printString(" Space ",0,1);
henririgby98 8:3c15554e6723 193 lcd.printString(" Rebellion! ",0,2);
henririgby98 8:3c15554e6723 194 lcd.printString(" Press Start...",0,4);
henririgby98 8:3c15554e6723 195 lcd.drawSprite(8,3,8,11,(int *)invader); //adds spaceinvader into top left corner
henririgby98 8:3c15554e6723 196 lcd.drawSprite(WIDTH - 16,3,8,11,(int *)invader); //adds spaceinvader into top right corner
henririgby98 4:d744920089ea 197 lcd.refresh();
henririgby98 4:d744920089ea 198
henririgby98 4:d744920089ea 199 // wait flashing LEDs until start button is pressed
henririgby98 4:d744920089ea 200 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
henririgby98 4:d744920089ea 201 pad.leds_on();
henririgby98 4:d744920089ea 202 wait(0.1);
henririgby98 4:d744920089ea 203 pad.leds_off();
henririgby98 4:d744920089ea 204 wait(0.1);
henririgby98 2:794ed187ffcd 205 }
henririgby98 9:436b88b70fdd 206 lcd.clear();
henririgby98 9:436b88b70fdd 207 lcd.refresh();
henririgby98 9:436b88b70fdd 208 }
henririgby98 9:436b88b70fdd 209
henririgby98 9:436b88b70fdd 210 void menu() {
henririgby98 11:c60b61a80060 211 lcd.clear();
henririgby98 9:436b88b70fdd 212 lcd.printString(" MENU ",0,0);
henririgby98 9:436b88b70fdd 213 lcd.printString("A ==> Story ",0,1);
henririgby98 9:436b88b70fdd 214 lcd.printString("B ==> Play ",0,2);
henririgby98 9:436b88b70fdd 215 lcd.printString("X ==> Controls ",0,3);
henririgby98 9:436b88b70fdd 216 lcd.printString("Y ==> Credits ",0,4);
henririgby98 9:436b88b70fdd 217 lcd.refresh();
henririgby98 10:2b52d7e06712 218 choose = 0;
henririgby98 9:436b88b70fdd 219 // wait flashing LEDs until start button is pressed
henririgby98 10:2b52d7e06712 220 while (choose == 0) {
henririgby98 10:2b52d7e06712 221 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 10:2b52d7e06712 222 choose = 1;
henririgby98 10:2b52d7e06712 223 Story();
henririgby98 11:c60b61a80060 224 menu();
henririgby98 10:2b52d7e06712 225 } else if (pad.check_event(Gamepad::B_PRESSED) == true) {
henririgby98 10:2b52d7e06712 226 choose = 1;
henririgby98 10:2b52d7e06712 227 } else if (pad.check_event(Gamepad::X_PRESSED) == true) {
henririgby98 10:2b52d7e06712 228 choose = 1;
henririgby98 10:2b52d7e06712 229 Controls();
henririgby98 11:c60b61a80060 230 menu();
henririgby98 10:2b52d7e06712 231 } else if (pad.check_event(Gamepad::Y_PRESSED) == true) {
henririgby98 10:2b52d7e06712 232 choose = 1;
henririgby98 10:2b52d7e06712 233 Credits();
henririgby98 11:c60b61a80060 234 menu();
henririgby98 10:2b52d7e06712 235 }
henririgby98 10:2b52d7e06712 236
henririgby98 10:2b52d7e06712 237
henririgby98 10:2b52d7e06712 238 pad.leds_on();
henririgby98 10:2b52d7e06712 239 wait(0.1);
henririgby98 10:2b52d7e06712 240 pad.leds_off();
henririgby98 10:2b52d7e06712 241 wait(0.1);
henririgby98 10:2b52d7e06712 242 }
henririgby98 10:2b52d7e06712 243 }
henririgby98 10:2b52d7e06712 244
henririgby98 11:c60b61a80060 245
henririgby98 10:2b52d7e06712 246 void Story() {
henririgby98 10:2b52d7e06712 247 lcd.clear();
henririgby98 11:c60b61a80060 248 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 249 lcd.printString("The Year: 2098",0,1);
henririgby98 11:c60b61a80060 250 lcd.printString("Humans Control",0,2);
henririgby98 11:c60b61a80060 251 lcd.printString("Sectors 3-8 Of",0,3);
henririgby98 11:c60b61a80060 252 lcd.printString("The Milky Way.",0,4);
henririgby98 11:c60b61a80060 253 lcd.printString(" Press A ",0,5);
henririgby98 11:c60b61a80060 254 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 11:c60b61a80060 255 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 10:2b52d7e06712 256 lcd.refresh();
henririgby98 11:c60b61a80060 257 int story = 0;
henririgby98 10:2b52d7e06712 258 // wait flashing LEDs until start button is pressed
henririgby98 10:2b52d7e06712 259 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) {
henririgby98 11:c60b61a80060 260 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 11:c60b61a80060 261 lcd.clear();
henririgby98 11:c60b61a80060 262 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 263 lcd.printString("You, The Last ",0,1);
henririgby98 11:c60b61a80060 264 lcd.printString("Of The Zonians",0,2);
henririgby98 11:c60b61a80060 265 lcd.printString(" Are Captured ",0,3);
henririgby98 11:c60b61a80060 266 lcd.printString("Used for Sport",0,4);
henririgby98 11:c60b61a80060 267 lcd.printString(" Press A ",0,5);
henririgby98 11:c60b61a80060 268 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 11:c60b61a80060 269 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 11:c60b61a80060 270 lcd.refresh();
henririgby98 11:c60b61a80060 271 story = 1;
henririgby98 11:c60b61a80060 272 while (story == 1) {
henririgby98 11:c60b61a80060 273 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 11:c60b61a80060 274 story = 2;
henririgby98 11:c60b61a80060 275 }
henririgby98 11:c60b61a80060 276 }
henririgby98 11:c60b61a80060 277 while (story == 2){
henririgby98 11:c60b61a80060 278 lcd.clear();
henririgby98 11:c60b61a80060 279 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 280 lcd.printString("They Name you ",0,1);
henririgby98 11:c60b61a80060 281 lcd.printString("'Spaceinvader'",0,2);
henririgby98 11:c60b61a80060 282 lcd.printString(" This Is Your ",0,3);
henririgby98 11:c60b61a80060 283 lcd.printString("Colosseum,RUN!",0,4);
henririgby98 11:c60b61a80060 284 lcd.printString("**Press Back**",0,5);
henririgby98 11:c60b61a80060 285 lcd.refresh();
henririgby98 11:c60b61a80060 286 if ( pad.check_event(Gamepad::BACK_PRESSED) == true){
henririgby98 11:c60b61a80060 287 break;
henririgby98 11:c60b61a80060 288
henririgby98 11:c60b61a80060 289 }
henririgby98 11:c60b61a80060 290 }
henririgby98 11:c60b61a80060 291 break;
henririgby98 11:c60b61a80060 292 }
henririgby98 10:2b52d7e06712 293 pad.leds_on();
henririgby98 10:2b52d7e06712 294 wait(0.1);
henririgby98 10:2b52d7e06712 295 pad.leds_off();
henririgby98 10:2b52d7e06712 296 wait(0.1);
henririgby98 10:2b52d7e06712 297 }
henririgby98 10:2b52d7e06712 298
henririgby98 10:2b52d7e06712 299 }
henririgby98 10:2b52d7e06712 300
henririgby98 10:2b52d7e06712 301 void Controls() {
henririgby98 11:c60b61a80060 302
henririgby98 10:2b52d7e06712 303 lcd.clear();
henririgby98 10:2b52d7e06712 304 lcd.printString(" Controls ",0,0);
henririgby98 11:c60b61a80060 305 lcd.printString(" Aim: ",0,1);
henririgby98 11:c60b61a80060 306 lcd.printString("!!!!!!!!!!!!!!",0,2);
henririgby98 11:c60b61a80060 307 lcd.printString("AVOID THE BOMB",0,3);
henririgby98 11:c60b61a80060 308 lcd.printString("!!!!!!!!!!!!!!",0,4);
henririgby98 11:c60b61a80060 309 lcd.printString(" Press X",0,5);
henririgby98 11:c60b61a80060 310 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 11:c60b61a80060 311 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 10:2b52d7e06712 312 lcd.refresh();
henririgby98 11:c60b61a80060 313 // wait flashing LEDs until start button is pressed
henririgby98 10:2b52d7e06712 314 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) {
henririgby98 11:c60b61a80060 315 if (pad.check_event(Gamepad::X_PRESSED) == true) {
henririgby98 11:c60b61a80060 316 lcd.clear();
henririgby98 11:c60b61a80060 317 lcd.printString(" Controls ",0,0);
henririgby98 11:c60b61a80060 318 lcd.printString(" How: ",0,1);
henririgby98 11:c60b61a80060 319 lcd.printString(" Use Joystick ",0,2);
henririgby98 11:c60b61a80060 320 lcd.printString("To Move Around",0,3);
henririgby98 11:c60b61a80060 321 lcd.printString(" The Screen ",0,4);
henririgby98 11:c60b61a80060 322 lcd.printString("**Press Back**",0,5);
henririgby98 11:c60b61a80060 323 lcd.refresh();
henririgby98 11:c60b61a80060 324 }
henririgby98 11:c60b61a80060 325
henririgby98 9:436b88b70fdd 326 pad.leds_on();
henririgby98 9:436b88b70fdd 327 wait(0.1);
henririgby98 9:436b88b70fdd 328 pad.leds_off();
henririgby98 9:436b88b70fdd 329 wait(0.1);
henririgby98 9:436b88b70fdd 330 }
henririgby98 4:d744920089ea 331
henririgby98 2:794ed187ffcd 332 }
henririgby98 7:e0cab3e73df9 333
henririgby98 10:2b52d7e06712 334 void Credits() {
henririgby98 10:2b52d7e06712 335 lcd.clear();
henririgby98 10:2b52d7e06712 336 lcd.printString(" Credits ",0,0);
henririgby98 11:c60b61a80060 337 lcd.printString("By Henri Rigby ",0,3);
henririgby98 10:2b52d7e06712 338 lcd.printString("SID: 201198821 ",0,2);
henririgby98 11:c60b61a80060 339 lcd.printString("**Press Back** ",0,5);
henririgby98 10:2b52d7e06712 340 lcd.refresh();
henririgby98 10:2b52d7e06712 341 // wait flashing LEDs until start button is pressed
henririgby98 10:2b52d7e06712 342 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) {
henririgby98 11:c60b61a80060 343 wait(1);
henririgby98 10:2b52d7e06712 344 pad.leds_on();
henririgby98 11:c60b61a80060 345 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 346 wait(0.1);
henririgby98 10:2b52d7e06712 347 pad.leds_off();
henririgby98 10:2b52d7e06712 348 wait(0.3);
henririgby98 10:2b52d7e06712 349 pad.leds_on();
henririgby98 11:c60b61a80060 350 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 351 wait(0.4);
henririgby98 10:2b52d7e06712 352 pad.leds_off();
henririgby98 10:2b52d7e06712 353 wait(0.3);
henririgby98 10:2b52d7e06712 354 pad.leds_on();
henririgby98 11:c60b61a80060 355 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 356 wait(0.1);
henririgby98 10:2b52d7e06712 357 pad.leds_off();
henririgby98 10:2b52d7e06712 358 wait(0.6);
henririgby98 10:2b52d7e06712 359
henririgby98 10:2b52d7e06712 360 pad.leds_on();
henririgby98 11:c60b61a80060 361 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 362 wait(0.1);
henririgby98 10:2b52d7e06712 363 pad.leds_off();
henririgby98 10:2b52d7e06712 364 wait(0.3);
henririgby98 10:2b52d7e06712 365 pad.leds_on();
henririgby98 11:c60b61a80060 366 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 367 wait(0.1);
henririgby98 10:2b52d7e06712 368 pad.leds_off();
henririgby98 10:2b52d7e06712 369 wait(0.6);
henririgby98 10:2b52d7e06712 370
henririgby98 10:2b52d7e06712 371 pad.leds_on();
henririgby98 11:c60b61a80060 372 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 373 wait(0.4);
henririgby98 10:2b52d7e06712 374 pad.leds_off();
henririgby98 10:2b52d7e06712 375 wait(0.3);
henririgby98 10:2b52d7e06712 376 pad.leds_on();
henririgby98 11:c60b61a80060 377 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 378 wait(0.4);
henririgby98 10:2b52d7e06712 379 pad.leds_off();
henririgby98 10:2b52d7e06712 380 wait(0.3);
henririgby98 10:2b52d7e06712 381 pad.leds_on();
henririgby98 11:c60b61a80060 382 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 383 wait(0.1);
henririgby98 10:2b52d7e06712 384 pad.leds_off();
henririgby98 10:2b52d7e06712 385 wait(0.6);
henririgby98 10:2b52d7e06712 386
henririgby98 10:2b52d7e06712 387 pad.leds_on();
henririgby98 11:c60b61a80060 388 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 389 wait(0.4);
henririgby98 10:2b52d7e06712 390 pad.leds_off();
henririgby98 10:2b52d7e06712 391 wait(0.3);
henririgby98 10:2b52d7e06712 392 pad.leds_on();
henririgby98 11:c60b61a80060 393 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 394 wait(0.1);
henririgby98 10:2b52d7e06712 395 pad.leds_off();
henririgby98 10:2b52d7e06712 396 wait(0.3);
henririgby98 10:2b52d7e06712 397 pad.leds_on();
henririgby98 11:c60b61a80060 398 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 399 wait(0.1);
henririgby98 10:2b52d7e06712 400 pad.leds_off();
henririgby98 10:2b52d7e06712 401 wait(0.3);
henririgby98 10:2b52d7e06712 402 pad.leds_on();
henririgby98 11:c60b61a80060 403 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 404 wait(0.1);
henririgby98 10:2b52d7e06712 405 pad.leds_off();
henririgby98 10:2b52d7e06712 406 wait(0.6);
henririgby98 10:2b52d7e06712 407
henririgby98 10:2b52d7e06712 408 pad.leds_on();
henririgby98 11:c60b61a80060 409 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 410 wait(0.4);
henririgby98 10:2b52d7e06712 411 pad.leds_off();
henririgby98 10:2b52d7e06712 412 wait(0.3);
henririgby98 10:2b52d7e06712 413 pad.leds_on();
henririgby98 11:c60b61a80060 414 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 415 wait(0.1);
henririgby98 10:2b52d7e06712 416 pad.leds_off();
henririgby98 10:2b52d7e06712 417 wait(0.3);
henririgby98 10:2b52d7e06712 418 pad.leds_on();
henririgby98 11:c60b61a80060 419 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 420 wait(0.4);
henririgby98 10:2b52d7e06712 421 pad.leds_off();
henririgby98 10:2b52d7e06712 422 wait(0.3);
henririgby98 10:2b52d7e06712 423 pad.leds_on();
henririgby98 11:c60b61a80060 424 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 425 wait(0.4);
henririgby98 10:2b52d7e06712 426 pad.leds_off();
henririgby98 11:c60b61a80060 427
henririgby98 10:2b52d7e06712 428 }
henririgby98 10:2b52d7e06712 429
henririgby98 10:2b52d7e06712 430 }
henririgby98 10:2b52d7e06712 431
henririgby98 7:e0cab3e73df9 432 void Game1Over() {
henririgby98 10:2b52d7e06712 433 lcd.printString(" You Died! ",0,1);
henririgby98 7:e0cab3e73df9 434 lcd.printString(" Score =",0,2);
henririgby98 7:e0cab3e73df9 435 spacerebellion.print_scores(lcd);
henririgby98 8:3c15554e6723 436 lcd.drawSprite(5,3,11,11,(int *)X_2);
henririgby98 8:3c15554e6723 437 lcd.drawSprite(WIDTH - 13,3,11,11,(int *)X_2);
henririgby98 8:3c15554e6723 438 lcd.printString(" Press BACK...",0,4);
henririgby98 7:e0cab3e73df9 439 lcd.refresh();
henririgby98 7:e0cab3e73df9 440 // wait flashing LEDs until start button is pressed
henririgby98 7:e0cab3e73df9 441 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) {
henririgby98 7:e0cab3e73df9 442 pad.leds_on();
henririgby98 7:e0cab3e73df9 443 wait(0.1);
henririgby98 7:e0cab3e73df9 444 pad.leds_off();
henririgby98 7:e0cab3e73df9 445 wait(0.1);
henririgby98 7:e0cab3e73df9 446 }
henririgby98 7:e0cab3e73df9 447
henririgby98 7:e0cab3e73df9 448 }
henririgby98 7:e0cab3e73df9 449
henririgby98 8:3c15554e6723 450 void x1_1() {
henririgby98 8:3c15554e6723 451 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 8:3c15554e6723 452 lcd.drawSprite(WIDTH/2 - 27,HEIGHT/2 - 6,11,11,(int *)X_1);
henririgby98 8:3c15554e6723 453 }
henririgby98 8:3c15554e6723 454
henririgby98 8:3c15554e6723 455 void x1_2() {
henririgby98 8:3c15554e6723 456 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 8:3c15554e6723 457 lcd.drawSprite(WIDTH/2 - 27,HEIGHT/2 - 6,11,11,(int *)X_2);
henririgby98 8:3c15554e6723 458 }
henririgby98 8:3c15554e6723 459
henririgby98 8:3c15554e6723 460 void x2_1() {
henririgby98 8:3c15554e6723 461 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 8:3c15554e6723 462 lcd.drawSprite(WIDTH/2 - 6,HEIGHT/2 - 6,11,11,(int *)X_1);
henririgby98 8:3c15554e6723 463 }
henririgby98 8:3c15554e6723 464
henririgby98 8:3c15554e6723 465 void x2_2() {
henririgby98 8:3c15554e6723 466 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 8:3c15554e6723 467 lcd.drawSprite(WIDTH/2 - 6,HEIGHT/2 - 6,11,11,(int *)X_2);
henririgby98 8:3c15554e6723 468 }
henririgby98 8:3c15554e6723 469
henririgby98 8:3c15554e6723 470 void x3_1() {
henririgby98 8:3c15554e6723 471 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 8:3c15554e6723 472 lcd.drawSprite(WIDTH/2 + 15,HEIGHT/2 - 6,11,11,(int *)X_1);
henririgby98 8:3c15554e6723 473 }
henririgby98 8:3c15554e6723 474
henririgby98 8:3c15554e6723 475 void x3_2() {
henririgby98 8:3c15554e6723 476 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 8:3c15554e6723 477 lcd.drawSprite(WIDTH/2 + 15,HEIGHT/2 - 6,11,11,(int *)X_2);
henririgby98 8:3c15554e6723 478 }