ELEC2645 (2018/19) / Mbed 2 deprecated henririgby98

Dependencies:   mbed

Committer:
henririgby98
Date:
Thu May 09 14:58:01 2019 +0000
Revision:
20:477d2ee5e461
Parent:
19:538c93b1b0c8
finish;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
henririgby98 12:3bfde5b4d834 1 /*
henririgby98 12:3bfde5b4d834 2 ELEC2645 Embedded Systems Project
henririgby98 12:3bfde5b4d834 3 School of Electronic & Electrical Engineering
henririgby98 12:3bfde5b4d834 4 University of Leeds
henririgby98 12:3bfde5b4d834 5 Name: Henri Rigby
henririgby98 12:3bfde5b4d834 6 Username: el17hr
henririgby98 12:3bfde5b4d834 7 Student ID Number: 201198821
henririgby98 12:3bfde5b4d834 8 Date: 09/05/2019
henririgby98 12:3bfde5b4d834 9 */
henririgby98 19:538c93b1b0c8 10
henririgby98 2:794ed187ffcd 11 #include "mbed.h"
henririgby98 2:794ed187ffcd 12 #include "Gamepad.h"
henririgby98 2:794ed187ffcd 13 #include "N5110.h"
henririgby98 4:d744920089ea 14 #include "SpaceRebEngine.h"
henririgby98 2:794ed187ffcd 15
henririgby98 5:0da65740cd5e 16 #define SPACEINVADER_WIDTH 8
henririgby98 5:0da65740cd5e 17 #define SPACEINVADER_HEIGHT 11
henririgby98 4:d744920089ea 18 #define MISSILES_SIZE 2
henririgby98 4:d744920089ea 19 #define MISSILES_SPEED 3
henririgby98 4:d744920089ea 20
henririgby98 4:d744920089ea 21 struct UserInput {
henririgby98 4:d744920089ea 22 Direction d;
henririgby98 4:d744920089ea 23 float mag;
henririgby98 4:d744920089ea 24 };
henririgby98 19:538c93b1b0c8 25
henririgby98 2:794ed187ffcd 26 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
henririgby98 2:794ed187ffcd 27 Gamepad pad;
henririgby98 4:d744920089ea 28 SpaceRebEngine spacerebellion;
henririgby98 4:d744920089ea 29
henririgby98 19:538c93b1b0c8 30
henririgby98 19:538c93b1b0c8 31 void init();
henririgby98 18:71ecb1a428b3 32 void update_game(UserInput input);
henririgby98 18:71ecb1a428b3 33 void render();
henririgby98 18:71ecb1a428b3 34 void welcome();
henririgby98 18:71ecb1a428b3 35 void menu();
henririgby98 18:71ecb1a428b3 36 void Story();
henririgby98 18:71ecb1a428b3 37 void Controls();
henririgby98 18:71ecb1a428b3 38 void Credits();
henririgby98 18:71ecb1a428b3 39 void Game1Over();
henririgby98 18:71ecb1a428b3 40 void x1_1();
henririgby98 18:71ecb1a428b3 41 void x1_2();
henririgby98 18:71ecb1a428b3 42 void x2_1();
henririgby98 18:71ecb1a428b3 43 void x2_2();
henririgby98 18:71ecb1a428b3 44 void x3_1();
henririgby98 18:71ecb1a428b3 45 void x3_2();
henririgby98 19:538c93b1b0c8 46
henririgby98 7:e0cab3e73df9 47 bool end = false;
henririgby98 7:e0cab3e73df9 48 int score = 0;
henririgby98 7:e0cab3e73df9 49 int speed = MISSILES_SPEED;
henririgby98 8:3c15554e6723 50 int i=0;
henririgby98 10:2b52d7e06712 51 int choose = 0;
henririgby98 8:3c15554e6723 52 int X_1[11][11] = {
henririgby98 8:3c15554e6723 53 { 1,1,0,0,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 54 { 1,1,1,0,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 55 { 0,1,1,1,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 56 { 0,0,1,1,1,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 57 { 0,0,0,1,1,1,0,0,0,0,0 },
henririgby98 8:3c15554e6723 58 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 8:3c15554e6723 59 { 0,0,0,0,0,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 60 { 0,0,0,0,0,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 61 { 0,0,0,0,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 62 { 0,0,0,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 63 { 0,0,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 64 };
henririgby98 8:3c15554e6723 65 int X_2[11][11] = {
henririgby98 8:3c15554e6723 66 { 1,1,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 67 { 1,1,1,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 68 { 0,1,1,1,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 69 { 0,0,1,1,1,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 70 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 71 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 8:3c15554e6723 72 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 73 { 0,0,1,1,1,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 74 { 0,1,1,1,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 75 { 1,1,1,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 76 { 1,1,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 77 };
henririgby98 8:3c15554e6723 78 int invader[8][11] = {
henririgby98 8:3c15554e6723 79 { 0,0,1,0,0,0,0,0,1,0,0 },
henririgby98 8:3c15554e6723 80 { 0,0,0,1,0,0,0,1,0,0,0 },
henririgby98 8:3c15554e6723 81 { 0,0,1,1,1,1,1,1,1,0,0 },
henririgby98 8:3c15554e6723 82 { 0,1,1,0,1,1,1,0,1,1,0 },
henririgby98 8:3c15554e6723 83 { 1,1,1,1,1,1,1,1,1,1,1 },
henririgby98 8:3c15554e6723 84 { 1,0,1,1,1,1,1,1,1,0,1 },
henririgby98 8:3c15554e6723 85 { 1,0,1,0,0,0,0,0,1,0,1 },
henririgby98 8:3c15554e6723 86 { 0,0,0,1,1,0,1,1,0,0,0 },
henririgby98 8:3c15554e6723 87 };
henririgby98 11:c60b61a80060 88 int arrowd[6][11] = {
henririgby98 11:c60b61a80060 89 { 1,1,1,1,1,1,1,1,1,1,1 },
henririgby98 11:c60b61a80060 90 { 0,1,1,1,1,1,1,1,1,1,0 },
henririgby98 11:c60b61a80060 91 { 0,0,1,1,1,1,1,1,1,0,0 },
henririgby98 11:c60b61a80060 92 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 11:c60b61a80060 93 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 11:c60b61a80060 94 { 0,0,0,0,0,1,0,0,0,0,0 },
henririgby98 11:c60b61a80060 95 };
henririgby98 19:538c93b1b0c8 96
henririgby98 4:d744920089ea 97 int main()
henririgby98 4:d744920089ea 98 {
henririgby98 4:d744920089ea 99 int fps = 8; // frames per second
henririgby98 7:e0cab3e73df9 100
henririgby98 18:71ecb1a428b3 101 init(); // initialises the lcd, pad and SpaceRebEngine
henririgby98 18:71ecb1a428b3 102 welcome(); // opening screen displaying game name
henririgby98 2:794ed187ffcd 103
henririgby98 10:2b52d7e06712 104 menu:
henririgby98 18:71ecb1a428b3 105 menu(); //menu to decide whether player wants to enter story, play, controls or credits
henririgby98 18:71ecb1a428b3 106 init(); //will reinitialise when play option is chosen so that screen does not skip to game1over() function
henririgby98 18:71ecb1a428b3 107 end = false; //set the value of end to equal false so game can be re_run multople times
henririgby98 4:d744920089ea 108 render(); // first draw the initial frame
henririgby98 18:71ecb1a428b3 109 wait(1.0f/fps); // waits for one frame period
henririgby98 4:d744920089ea 110
henririgby98 18:71ecb1a428b3 111 while (!end) { //this means game will play until boolean of end is inverted, equals true
henririgby98 18:71ecb1a428b3 112 spacerebellion.read_input(pad); //takes the input from the joystick
henririgby98 18:71ecb1a428b3 113 spacerebellion.update(pad); //runs the game mechanics
henririgby98 4:d744920089ea 114 render();
henririgby98 18:71ecb1a428b3 115 end = spacerebellion.game_end(); //when player dies game will end as valu of end will be true
henririgby98 4:d744920089ea 116 wait(1.0f/fps);
henririgby98 4:d744920089ea 117 }
henririgby98 7:e0cab3e73df9 118 lcd.clear();
henririgby98 8:3c15554e6723 119 i = 0;
henririgby98 18:71ecb1a428b3 120 while(i < 200) { //creates internal loop that displays animation until i = 200
henririgby98 18:71ecb1a428b3 121 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_BLACK); //pitch black screen
henririgby98 8:3c15554e6723 122 lcd.refresh();
henririgby98 18:71ecb1a428b3 123 i++; //increases integer i by 1
henririgby98 8:3c15554e6723 124 }
henririgby98 8:3c15554e6723 125 lcd.clear();
henririgby98 8:3c15554e6723 126 i = 0;
henririgby98 8:3c15554e6723 127 while(i < 200) {
henririgby98 18:71ecb1a428b3 128 x1_1(); //draws first half of first x
henririgby98 18:71ecb1a428b3 129 lcd.refresh();
henririgby98 18:71ecb1a428b3 130 pad.tone(1200.0,0.2); //plays low beep
henririgby98 18:71ecb1a428b3 131 i++;
henririgby98 18:71ecb1a428b3 132 }
henririgby98 18:71ecb1a428b3 133 i = 0;
henririgby98 18:71ecb1a428b3 134 while(i < 200) {
henririgby98 18:71ecb1a428b3 135 x1_2(); //draws first x
henririgby98 18:71ecb1a428b3 136 lcd.refresh();
henririgby98 18:71ecb1a428b3 137 pad.tone(1500.0,0.2); //plays high beep
henririgby98 18:71ecb1a428b3 138 i++;
henririgby98 18:71ecb1a428b3 139 }
henririgby98 18:71ecb1a428b3 140 i = 0;
henririgby98 18:71ecb1a428b3 141 while(i < 200) {
henririgby98 18:71ecb1a428b3 142 x2_1(); //draws first half of second x
henririgby98 8:3c15554e6723 143 lcd.refresh();
henririgby98 8:3c15554e6723 144 pad.tone(1200.0,0.2);
henririgby98 8:3c15554e6723 145 i++;
henririgby98 8:3c15554e6723 146 }
henririgby98 8:3c15554e6723 147 i = 0;
henririgby98 8:3c15554e6723 148 while(i < 200) {
henririgby98 18:71ecb1a428b3 149 x2_2(); //draws second x
henririgby98 8:3c15554e6723 150 lcd.refresh();
henririgby98 8:3c15554e6723 151 pad.tone(1500.0,0.2);
henririgby98 8:3c15554e6723 152 i++;
henririgby98 8:3c15554e6723 153 }
henririgby98 8:3c15554e6723 154 i = 0;
henririgby98 8:3c15554e6723 155 while(i < 200) {
henririgby98 18:71ecb1a428b3 156 x3_1(); //draws first half of third x
henririgby98 8:3c15554e6723 157 lcd.refresh();
henririgby98 8:3c15554e6723 158 pad.tone(1200.0,0.2);
henririgby98 8:3c15554e6723 159 i++;
henririgby98 8:3c15554e6723 160 }
henririgby98 8:3c15554e6723 161 i = 0;
henririgby98 8:3c15554e6723 162 while(i < 200) {
henririgby98 18:71ecb1a428b3 163 x3_2(); //draws third x
henririgby98 8:3c15554e6723 164 lcd.refresh();
henririgby98 8:3c15554e6723 165 pad.tone(1500.0,0.2);
henririgby98 8:3c15554e6723 166 i++;
henririgby98 8:3c15554e6723 167 }
henririgby98 8:3c15554e6723 168 lcd.clear();
henririgby98 18:71ecb1a428b3 169 Game1Over(); //displays the game over sequance
henririgby98 18:71ecb1a428b3 170 goto menu; //loops code back to the menu function
henririgby98 4:d744920089ea 171 }
henririgby98 4:d744920089ea 172
henririgby98 18:71ecb1a428b3 173
henririgby98 4:d744920089ea 174 void init()
henririgby98 4:d744920089ea 175 {
henririgby98 18:71ecb1a428b3 176
henririgby98 18:71ecb1a428b3 177 lcd.init(); //initialises lcd display
henririgby98 18:71ecb1a428b3 178 pad.init(); //initialises gamepad
henririgby98 18:71ecb1a428b3 179 //initialises spaceinvader and missiles
henririgby98 4:d744920089ea 180 spacerebellion.init(SPACEINVADER_WIDTH,SPACEINVADER_HEIGHT,MISSILES_SIZE,MISSILES_SPEED);
henririgby98 4:d744920089ea 181
henririgby98 4:d744920089ea 182 }
henririgby98 2:794ed187ffcd 183
henririgby98 18:71ecb1a428b3 184
henririgby98 4:d744920089ea 185 void render()
henririgby98 4:d744920089ea 186 {
henririgby98 4:d744920089ea 187 lcd.clear();
henririgby98 18:71ecb1a428b3 188 spacerebellion.draw(lcd); //draws game
henririgby98 4:d744920089ea 189 lcd.refresh();
henririgby98 4:d744920089ea 190 }
henririgby98 4:d744920089ea 191
henririgby98 18:71ecb1a428b3 192 void welcome() { //startup screen
henririgby98 4:d744920089ea 193
henririgby98 8:3c15554e6723 194 lcd.printString(" Space ",0,1);
henririgby98 8:3c15554e6723 195 lcd.printString(" Rebellion! ",0,2);
henririgby98 8:3c15554e6723 196 lcd.printString(" Press Start...",0,4);
henririgby98 8:3c15554e6723 197 lcd.drawSprite(8,3,8,11,(int *)invader); //adds spaceinvader into top left corner
henririgby98 8:3c15554e6723 198 lcd.drawSprite(WIDTH - 16,3,8,11,(int *)invader); //adds spaceinvader into top right corner
henririgby98 4:d744920089ea 199 lcd.refresh();
henririgby98 4:d744920089ea 200
henririgby98 4:d744920089ea 201 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
henririgby98 4:d744920089ea 202 pad.leds_on();
henririgby98 18:71ecb1a428b3 203 wait(0.15);
henririgby98 4:d744920089ea 204 pad.leds_off();
henririgby98 18:71ecb1a428b3 205 wait(0.15); //flashes leds on and of until start is pressed
henririgby98 2:794ed187ffcd 206 }
henririgby98 9:436b88b70fdd 207 lcd.clear();
henririgby98 9:436b88b70fdd 208 lcd.refresh();
henririgby98 9:436b88b70fdd 209 }
henririgby98 9:436b88b70fdd 210
henririgby98 18:71ecb1a428b3 211 void menu() { //menu screen
henririgby98 11:c60b61a80060 212 lcd.clear();
henririgby98 9:436b88b70fdd 213 lcd.printString(" MENU ",0,0);
henririgby98 9:436b88b70fdd 214 lcd.printString("A ==> Story ",0,1);
henririgby98 9:436b88b70fdd 215 lcd.printString("B ==> Play ",0,2);
henririgby98 9:436b88b70fdd 216 lcd.printString("X ==> Controls ",0,3);
henririgby98 9:436b88b70fdd 217 lcd.printString("Y ==> Credits ",0,4);
henririgby98 9:436b88b70fdd 218 lcd.refresh();
henririgby98 10:2b52d7e06712 219 choose = 0;
henririgby98 9:436b88b70fdd 220 // wait flashing LEDs until start button is pressed
henririgby98 10:2b52d7e06712 221 while (choose == 0) {
henririgby98 10:2b52d7e06712 222 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 18:71ecb1a428b3 223 choose = 1; //used to break menu while loop
henririgby98 18:71ecb1a428b3 224 Story(); //displays story
henririgby98 18:71ecb1a428b3 225 menu(); //returns to menu screen
henririgby98 10:2b52d7e06712 226 } else if (pad.check_event(Gamepad::B_PRESSED) == true) {
henririgby98 10:2b52d7e06712 227 choose = 1;
henririgby98 10:2b52d7e06712 228 } else if (pad.check_event(Gamepad::X_PRESSED) == true) {
henririgby98 10:2b52d7e06712 229 choose = 1;
henririgby98 18:71ecb1a428b3 230 Controls(); //displays controls
henririgby98 11:c60b61a80060 231 menu();
henririgby98 10:2b52d7e06712 232 } else if (pad.check_event(Gamepad::Y_PRESSED) == true) {
henririgby98 10:2b52d7e06712 233 choose = 1;
henririgby98 18:71ecb1a428b3 234 Credits(); //displays credits
henririgby98 11:c60b61a80060 235 menu();
henririgby98 10:2b52d7e06712 236 }
henririgby98 10:2b52d7e06712 237 pad.leds_on();
henririgby98 10:2b52d7e06712 238 wait(0.1);
henririgby98 10:2b52d7e06712 239 pad.leds_off();
henririgby98 10:2b52d7e06712 240 wait(0.1);
henririgby98 10:2b52d7e06712 241 }
henririgby98 10:2b52d7e06712 242 }
henririgby98 10:2b52d7e06712 243
henririgby98 11:c60b61a80060 244
henririgby98 10:2b52d7e06712 245 void Story() {
henririgby98 10:2b52d7e06712 246 lcd.clear();
henririgby98 11:c60b61a80060 247 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 248 lcd.printString("The Year: 2098",0,1);
henririgby98 11:c60b61a80060 249 lcd.printString("Humans Control",0,2);
henririgby98 11:c60b61a80060 250 lcd.printString("Sectors 3-8 Of",0,3);
henririgby98 11:c60b61a80060 251 lcd.printString("The Milky Way.",0,4);
henririgby98 18:71ecb1a428b3 252 lcd.printString(" Press A ",0,5);
henririgby98 18:71ecb1a428b3 253 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd); //adds arrow in bottom right corner
henririgby98 18:71ecb1a428b3 254 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd); //adds arrow in bottom left corner
henririgby98 10:2b52d7e06712 255 lcd.refresh();
henririgby98 18:71ecb1a428b3 256 int story = 0; //used to give story value of zero for while loops
henririgby98 10:2b52d7e06712 257 // wait flashing LEDs until start button is pressed
henririgby98 10:2b52d7e06712 258 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) {
henririgby98 11:c60b61a80060 259 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 11:c60b61a80060 260 lcd.clear();
henririgby98 11:c60b61a80060 261 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 262 lcd.printString("You, The Last ",0,1);
henririgby98 11:c60b61a80060 263 lcd.printString("Of The Zonians",0,2);
henririgby98 11:c60b61a80060 264 lcd.printString(" Are Captured ",0,3);
henririgby98 11:c60b61a80060 265 lcd.printString("Used for Sport",0,4);
henririgby98 11:c60b61a80060 266 lcd.printString(" Press A ",0,5);
henririgby98 18:71ecb1a428b3 267 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd); //adds arrow in bottom right corner
henririgby98 18:71ecb1a428b3 268 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd); //adds arrow in bottom left corner
henririgby98 11:c60b61a80060 269 lcd.refresh();
henririgby98 18:71ecb1a428b3 270 story = 1; //sets story to equal 1 to enter next while loop when a is pressed
henririgby98 11:c60b61a80060 271 while (story == 1) {
henririgby98 11:c60b61a80060 272 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 18:71ecb1a428b3 273 story = 2; //if a is pressed awe go to page 3 of story
henririgby98 11:c60b61a80060 274 }
henririgby98 11:c60b61a80060 275 }
henririgby98 11:c60b61a80060 276 while (story == 2){
henririgby98 11:c60b61a80060 277 lcd.clear();
henririgby98 11:c60b61a80060 278 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 279 lcd.printString("They Name you ",0,1);
henririgby98 11:c60b61a80060 280 lcd.printString("'Spaceinvader'",0,2);
henririgby98 11:c60b61a80060 281 lcd.printString(" This Is Your ",0,3);
henririgby98 11:c60b61a80060 282 lcd.printString("Colosseum,RUN!",0,4);
henririgby98 11:c60b61a80060 283 lcd.printString("**Press Back**",0,5);
henririgby98 11:c60b61a80060 284 lcd.refresh();
henririgby98 11:c60b61a80060 285 if ( pad.check_event(Gamepad::BACK_PRESSED) == true){
henririgby98 18:71ecb1a428b3 286 break; //breaks while loop when back is pressed in third page of story
henririgby98 11:c60b61a80060 287
henririgby98 11:c60b61a80060 288 }
henririgby98 11:c60b61a80060 289 }
henririgby98 18:71ecb1a428b3 290 break; //goes back to menu screen
henririgby98 11:c60b61a80060 291 }
henririgby98 10:2b52d7e06712 292 pad.leds_on();
henririgby98 10:2b52d7e06712 293 wait(0.1);
henririgby98 10:2b52d7e06712 294 pad.leds_off();
henririgby98 10:2b52d7e06712 295 wait(0.1);
henririgby98 10:2b52d7e06712 296 }
henririgby98 10:2b52d7e06712 297
henririgby98 10:2b52d7e06712 298 }
henririgby98 10:2b52d7e06712 299
henririgby98 10:2b52d7e06712 300 void Controls() {
henririgby98 11:c60b61a80060 301
henririgby98 10:2b52d7e06712 302 lcd.clear();
henririgby98 10:2b52d7e06712 303 lcd.printString(" Controls ",0,0);
henririgby98 11:c60b61a80060 304 lcd.printString(" Aim: ",0,1);
henririgby98 11:c60b61a80060 305 lcd.printString("!!!!!!!!!!!!!!",0,2);
henririgby98 11:c60b61a80060 306 lcd.printString("AVOID THE BOMB",0,3);
henririgby98 11:c60b61a80060 307 lcd.printString("!!!!!!!!!!!!!!",0,4);
henririgby98 11:c60b61a80060 308 lcd.printString(" Press X",0,5);
henririgby98 11:c60b61a80060 309 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 11:c60b61a80060 310 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 10:2b52d7e06712 311 lcd.refresh();
henririgby98 11:c60b61a80060 312 // wait flashing LEDs until start button is pressed
henririgby98 18:71ecb1a428b3 313 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) { //if back is pressed we will return to menu screen
henririgby98 18:71ecb1a428b3 314 if (pad.check_event(Gamepad::X_PRESSED) == true) { //if x is pressed then the next page of controls will be displayed
henririgby98 11:c60b61a80060 315 lcd.clear();
henririgby98 11:c60b61a80060 316 lcd.printString(" Controls ",0,0);
henririgby98 11:c60b61a80060 317 lcd.printString(" How: ",0,1);
henririgby98 11:c60b61a80060 318 lcd.printString(" Use Joystick ",0,2);
henririgby98 11:c60b61a80060 319 lcd.printString("To Move Around",0,3);
henririgby98 11:c60b61a80060 320 lcd.printString(" The Screen ",0,4);
henririgby98 11:c60b61a80060 321 lcd.printString("**Press Back**",0,5);
henririgby98 11:c60b61a80060 322 lcd.refresh();
henririgby98 11:c60b61a80060 323 }
henririgby98 11:c60b61a80060 324
henririgby98 9:436b88b70fdd 325 pad.leds_on();
henririgby98 9:436b88b70fdd 326 wait(0.1);
henririgby98 9:436b88b70fdd 327 pad.leds_off();
henririgby98 9:436b88b70fdd 328 wait(0.1);
henririgby98 9:436b88b70fdd 329 }
henririgby98 4:d744920089ea 330
henririgby98 2:794ed187ffcd 331 }
henririgby98 7:e0cab3e73df9 332
henririgby98 10:2b52d7e06712 333 void Credits() {
henririgby98 10:2b52d7e06712 334 lcd.clear();
henririgby98 10:2b52d7e06712 335 lcd.printString(" Credits ",0,0);
henririgby98 11:c60b61a80060 336 lcd.printString("By Henri Rigby ",0,3);
henririgby98 10:2b52d7e06712 337 lcd.printString("SID: 201198821 ",0,2);
henririgby98 11:c60b61a80060 338 lcd.printString("**Press Back** ",0,5);
henririgby98 10:2b52d7e06712 339 lcd.refresh();
henririgby98 10:2b52d7e06712 340 // wait flashing LEDs until start button is pressed
henririgby98 18:71ecb1a428b3 341 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) { //if back is pressed then will return to main menu after 'easter egg' loop
henririgby98 18:71ecb1a428b3 342 // easter egg is lights will flash my surname RIGBY in morse code accompanied by beeps
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 18:71ecb1a428b3 435 spacerebellion.print_scores(lcd); //this is used to print the score after game is played
henririgby98 18:71ecb1a428b3 436 lcd.drawSprite(5,3,11,11,(int *)X_2); //draws an X in top left corner
henririgby98 18:71ecb1a428b3 437 lcd.drawSprite(WIDTH - 13,3,11,11,(int *)X_2); //draws an X in top right corner
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 18:71ecb1a428b3 441 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) { // if back pressed will return to menu
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 18:71ecb1a428b3 451 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT); //draws rectangle around outline of lcd display
henririgby98 18:71ecb1a428b3 452 lcd.drawSprite(WIDTH/2 - 27,HEIGHT/2 - 6,11,11,(int *)X_1); //draws first half of first x
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 18:71ecb1a428b3 457 lcd.drawSprite(WIDTH/2 - 27,HEIGHT/2 - 6,11,11,(int *)X_2); //draws first x
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 18:71ecb1a428b3 462 lcd.drawSprite(WIDTH/2 - 6,HEIGHT/2 - 6,11,11,(int *)X_1); //draws first half of second x
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 18:71ecb1a428b3 467 lcd.drawSprite(WIDTH/2 - 6,HEIGHT/2 - 6,11,11,(int *)X_2); //draws second x
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 18:71ecb1a428b3 472 lcd.drawSprite(WIDTH/2 + 15,HEIGHT/2 - 6,11,11,(int *)X_1); //draws first half of third x
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 18:71ecb1a428b3 477 lcd.drawSprite(WIDTH/2 + 15,HEIGHT/2 - 6,11,11,(int *)X_2); //draws third x
henririgby98 8:3c15554e6723 478 }