ELEC2645 (2018/19) / Mbed 2 deprecated henririgby98

Dependencies:   mbed

Committer:
henririgby98
Date:
Thu May 09 13:59:41 2019 +0000
Revision:
18:71ecb1a428b3
Parent:
12:3bfde5b4d834
Child:
19:538c93b1b0c8
finished 1;

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 4:d744920089ea 10 ///////// pre-processor directives ////////
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 /////////////// structs /////////////////
henririgby98 4:d744920089ea 22 struct UserInput {
henririgby98 4:d744920089ea 23 Direction d;
henririgby98 4:d744920089ea 24 float mag;
henririgby98 4:d744920089ea 25 };
henririgby98 4:d744920089ea 26 /////////////// objects ///////////////
henririgby98 2:794ed187ffcd 27 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
henririgby98 2:794ed187ffcd 28 Gamepad pad;
henririgby98 4:d744920089ea 29 SpaceRebEngine spacerebellion;
henririgby98 4:d744920089ea 30
henririgby98 4:d744920089ea 31 ///////////// prototypes ///////////////
henririgby98 18:71ecb1a428b3 32 /**
henririgby98 18:71ecb1a428b3 33 * @brief Initialises spaceinvader, missiles, lcd and pad
henririgby98 18:71ecb1a428b3 34 * @param sets spaceinvader @details Sets height and width of the spaceinvader private variables
henririgby98 18:71ecb1a428b3 35 * @param sets missiles @details Sets size and speed of the missiles private variables
henririgby98 18:71ecb1a428b3 36 */
henririgby98 18:71ecb1a428b3 37 void init();
henririgby98 18:71ecb1a428b3 38
henririgby98 18:71ecb1a428b3 39 void update_game(UserInput input);
henririgby98 18:71ecb1a428b3 40 void render();
henririgby98 18:71ecb1a428b3 41 void welcome();
henririgby98 18:71ecb1a428b3 42 void menu();
henririgby98 18:71ecb1a428b3 43 void Story();
henririgby98 18:71ecb1a428b3 44 void Controls();
henririgby98 18:71ecb1a428b3 45 void Credits();
henririgby98 18:71ecb1a428b3 46 void Game1Over();
henririgby98 18:71ecb1a428b3 47 /**
henririgby98 18:71ecb1a428b3 48 * @brief Draws first half of first X
henririgby98 18:71ecb1a428b3 49 * @return draw initial first X @details Draws the first half of the first X
henririgby98 18:71ecb1a428b3 50 */
henririgby98 18:71ecb1a428b3 51 void x1_1();
henririgby98 18:71ecb1a428b3 52 /**
henririgby98 18:71ecb1a428b3 53 * @brief Draws first X
henririgby98 18:71ecb1a428b3 54 * @return draw first X @details Draws the complete first X
henririgby98 18:71ecb1a428b3 55 */
henririgby98 18:71ecb1a428b3 56 void x1_2();
henririgby98 18:71ecb1a428b3 57 /**
henririgby98 18:71ecb1a428b3 58 * @brief Draws first half of second X
henririgby98 18:71ecb1a428b3 59 * @return draw initial second X @details Draws the first half of the second X
henririgby98 18:71ecb1a428b3 60 */
henririgby98 18:71ecb1a428b3 61 void x2_1();
henririgby98 18:71ecb1a428b3 62 /**
henririgby98 18:71ecb1a428b3 63 * @brief Draws second X
henririgby98 18:71ecb1a428b3 64 * @return draw second X @details Draws the complete second X
henririgby98 18:71ecb1a428b3 65 */
henririgby98 18:71ecb1a428b3 66 void x2_2();
henririgby98 18:71ecb1a428b3 67 /**
henririgby98 18:71ecb1a428b3 68 * @brief Draws first half of third X
henririgby98 18:71ecb1a428b3 69 * @return draw initial third X @details Draws the first half of the third X
henririgby98 18:71ecb1a428b3 70 */
henririgby98 18:71ecb1a428b3 71 void x3_1();
henririgby98 18:71ecb1a428b3 72 /**
henririgby98 18:71ecb1a428b3 73 * @brief Draws third X
henririgby98 18:71ecb1a428b3 74 * @return draw third X @details Draws the complete third X
henririgby98 18:71ecb1a428b3 75 */
henririgby98 18:71ecb1a428b3 76 void x3_2();
henririgby98 7:e0cab3e73df9 77 ///////////// gloabal variable ////////////////
henririgby98 7:e0cab3e73df9 78 bool end = false;
henririgby98 7:e0cab3e73df9 79 int score = 0;
henririgby98 7:e0cab3e73df9 80 int speed = MISSILES_SPEED;
henririgby98 8:3c15554e6723 81 int i=0;
henririgby98 10:2b52d7e06712 82 int choose = 0;
henririgby98 8:3c15554e6723 83 int X_1[11][11] = {
henririgby98 8:3c15554e6723 84 { 1,1,0,0,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 85 { 1,1,1,0,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 86 { 0,1,1,1,0,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 87 { 0,0,1,1,1,0,0,0,0,0,0 },
henririgby98 8:3c15554e6723 88 { 0,0,0,1,1,1,0,0,0,0,0 },
henririgby98 8:3c15554e6723 89 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 8:3c15554e6723 90 { 0,0,0,0,0,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 91 { 0,0,0,0,0,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 92 { 0,0,0,0,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 93 { 0,0,0,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 94 { 0,0,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 95 };
henririgby98 8:3c15554e6723 96 int X_2[11][11] = {
henririgby98 8:3c15554e6723 97 { 1,1,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 98 { 1,1,1,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 99 { 0,1,1,1,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 100 { 0,0,1,1,1,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 101 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 102 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 8:3c15554e6723 103 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 8:3c15554e6723 104 { 0,0,1,1,1,0,1,1,1,0,0 },
henririgby98 8:3c15554e6723 105 { 0,1,1,1,0,0,0,1,1,1,0 },
henririgby98 8:3c15554e6723 106 { 1,1,1,0,0,0,0,0,1,1,1 },
henririgby98 8:3c15554e6723 107 { 1,1,0,0,0,0,0,0,0,1,1 },
henririgby98 8:3c15554e6723 108 };
henririgby98 8:3c15554e6723 109 int invader[8][11] = {
henririgby98 8:3c15554e6723 110 { 0,0,1,0,0,0,0,0,1,0,0 },
henririgby98 8:3c15554e6723 111 { 0,0,0,1,0,0,0,1,0,0,0 },
henririgby98 8:3c15554e6723 112 { 0,0,1,1,1,1,1,1,1,0,0 },
henririgby98 8:3c15554e6723 113 { 0,1,1,0,1,1,1,0,1,1,0 },
henririgby98 8:3c15554e6723 114 { 1,1,1,1,1,1,1,1,1,1,1 },
henririgby98 8:3c15554e6723 115 { 1,0,1,1,1,1,1,1,1,0,1 },
henririgby98 8:3c15554e6723 116 { 1,0,1,0,0,0,0,0,1,0,1 },
henririgby98 8:3c15554e6723 117 { 0,0,0,1,1,0,1,1,0,0,0 },
henririgby98 8:3c15554e6723 118 };
henririgby98 11:c60b61a80060 119 int arrowd[6][11] = {
henririgby98 11:c60b61a80060 120 { 1,1,1,1,1,1,1,1,1,1,1 },
henririgby98 11:c60b61a80060 121 { 0,1,1,1,1,1,1,1,1,1,0 },
henririgby98 11:c60b61a80060 122 { 0,0,1,1,1,1,1,1,1,0,0 },
henririgby98 11:c60b61a80060 123 { 0,0,0,1,1,1,1,1,0,0,0 },
henririgby98 11:c60b61a80060 124 { 0,0,0,0,1,1,1,0,0,0,0 },
henririgby98 11:c60b61a80060 125 { 0,0,0,0,0,1,0,0,0,0,0 },
henririgby98 11:c60b61a80060 126 };
henririgby98 4:d744920089ea 127 ///////////// functions ////////////////
henririgby98 4:d744920089ea 128 int main()
henririgby98 4:d744920089ea 129 {
henririgby98 4:d744920089ea 130 int fps = 8; // frames per second
henririgby98 7:e0cab3e73df9 131
henririgby98 18:71ecb1a428b3 132 init(); // initialises the lcd, pad and SpaceRebEngine
henririgby98 18:71ecb1a428b3 133 welcome(); // opening screen displaying game name
henririgby98 2:794ed187ffcd 134
henririgby98 10:2b52d7e06712 135 menu:
henririgby98 18:71ecb1a428b3 136 menu(); //menu to decide whether player wants to enter story, play, controls or credits
henririgby98 18:71ecb1a428b3 137 init(); //will reinitialise when play option is chosen so that screen does not skip to game1over() function
henririgby98 18:71ecb1a428b3 138 end = false; //set the value of end to equal false so game can be re_run multople times
henririgby98 4:d744920089ea 139 render(); // first draw the initial frame
henririgby98 18:71ecb1a428b3 140 wait(1.0f/fps); // waits for one frame period
henririgby98 4:d744920089ea 141
henririgby98 18:71ecb1a428b3 142 while (!end) { //this means game will play until boolean of end is inverted, equals true
henririgby98 18:71ecb1a428b3 143 spacerebellion.read_input(pad); //takes the input from the joystick
henririgby98 18:71ecb1a428b3 144 spacerebellion.update(pad); //runs the game mechanics
henririgby98 4:d744920089ea 145 render();
henririgby98 18:71ecb1a428b3 146 end = spacerebellion.game_end(); //when player dies game will end as valu of end will be true
henririgby98 4:d744920089ea 147 wait(1.0f/fps);
henririgby98 4:d744920089ea 148 }
henririgby98 7:e0cab3e73df9 149 lcd.clear();
henririgby98 8:3c15554e6723 150 i = 0;
henririgby98 18:71ecb1a428b3 151 while(i < 200) { //creates internal loop that displays animation until i = 200
henririgby98 18:71ecb1a428b3 152 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_BLACK); //pitch black screen
henririgby98 8:3c15554e6723 153 lcd.refresh();
henririgby98 18:71ecb1a428b3 154 i++; //increases integer i by 1
henririgby98 8:3c15554e6723 155 }
henririgby98 8:3c15554e6723 156 lcd.clear();
henririgby98 8:3c15554e6723 157 i = 0;
henririgby98 8:3c15554e6723 158 while(i < 200) {
henririgby98 18:71ecb1a428b3 159 x1_1(); //draws first half of first x
henririgby98 18:71ecb1a428b3 160 lcd.refresh();
henririgby98 18:71ecb1a428b3 161 pad.tone(1200.0,0.2); //plays low beep
henririgby98 18:71ecb1a428b3 162 i++;
henririgby98 18:71ecb1a428b3 163 }
henririgby98 18:71ecb1a428b3 164 i = 0;
henririgby98 18:71ecb1a428b3 165 while(i < 200) {
henririgby98 18:71ecb1a428b3 166 x1_2(); //draws first x
henririgby98 18:71ecb1a428b3 167 lcd.refresh();
henririgby98 18:71ecb1a428b3 168 pad.tone(1500.0,0.2); //plays high beep
henririgby98 18:71ecb1a428b3 169 i++;
henririgby98 18:71ecb1a428b3 170 }
henririgby98 18:71ecb1a428b3 171 i = 0;
henririgby98 18:71ecb1a428b3 172 while(i < 200) {
henririgby98 18:71ecb1a428b3 173 x2_1(); //draws first half of second x
henririgby98 8:3c15554e6723 174 lcd.refresh();
henririgby98 8:3c15554e6723 175 pad.tone(1200.0,0.2);
henririgby98 8:3c15554e6723 176 i++;
henririgby98 8:3c15554e6723 177 }
henririgby98 8:3c15554e6723 178 i = 0;
henririgby98 8:3c15554e6723 179 while(i < 200) {
henririgby98 18:71ecb1a428b3 180 x2_2(); //draws second x
henririgby98 8:3c15554e6723 181 lcd.refresh();
henririgby98 8:3c15554e6723 182 pad.tone(1500.0,0.2);
henririgby98 8:3c15554e6723 183 i++;
henririgby98 8:3c15554e6723 184 }
henririgby98 8:3c15554e6723 185 i = 0;
henririgby98 8:3c15554e6723 186 while(i < 200) {
henririgby98 18:71ecb1a428b3 187 x3_1(); //draws first half of third x
henririgby98 8:3c15554e6723 188 lcd.refresh();
henririgby98 8:3c15554e6723 189 pad.tone(1200.0,0.2);
henririgby98 8:3c15554e6723 190 i++;
henririgby98 8:3c15554e6723 191 }
henririgby98 8:3c15554e6723 192 i = 0;
henririgby98 8:3c15554e6723 193 while(i < 200) {
henririgby98 18:71ecb1a428b3 194 x3_2(); //draws third x
henririgby98 8:3c15554e6723 195 lcd.refresh();
henririgby98 8:3c15554e6723 196 pad.tone(1500.0,0.2);
henririgby98 8:3c15554e6723 197 i++;
henririgby98 8:3c15554e6723 198 }
henririgby98 8:3c15554e6723 199 lcd.clear();
henririgby98 18:71ecb1a428b3 200 Game1Over(); //displays the game over sequance
henririgby98 18:71ecb1a428b3 201 goto menu; //loops code back to the menu function
henririgby98 4:d744920089ea 202 }
henririgby98 4:d744920089ea 203
henririgby98 18:71ecb1a428b3 204
henririgby98 4:d744920089ea 205 void init()
henririgby98 4:d744920089ea 206 {
henririgby98 18:71ecb1a428b3 207
henririgby98 18:71ecb1a428b3 208 lcd.init(); //initialises lcd display
henririgby98 18:71ecb1a428b3 209 pad.init(); //initialises gamepad
henririgby98 18:71ecb1a428b3 210 //initialises spaceinvader and missiles
henririgby98 4:d744920089ea 211 spacerebellion.init(SPACEINVADER_WIDTH,SPACEINVADER_HEIGHT,MISSILES_SIZE,MISSILES_SPEED);
henririgby98 4:d744920089ea 212
henririgby98 4:d744920089ea 213 }
henririgby98 2:794ed187ffcd 214
henririgby98 18:71ecb1a428b3 215
henririgby98 4:d744920089ea 216 void render()
henririgby98 4:d744920089ea 217 {
henririgby98 4:d744920089ea 218 lcd.clear();
henririgby98 18:71ecb1a428b3 219 spacerebellion.draw(lcd); //draws game
henririgby98 4:d744920089ea 220 lcd.refresh();
henririgby98 4:d744920089ea 221 }
henririgby98 4:d744920089ea 222
henririgby98 18:71ecb1a428b3 223 void welcome() { //startup screen
henririgby98 4:d744920089ea 224
henririgby98 8:3c15554e6723 225 lcd.printString(" Space ",0,1);
henririgby98 8:3c15554e6723 226 lcd.printString(" Rebellion! ",0,2);
henririgby98 8:3c15554e6723 227 lcd.printString(" Press Start...",0,4);
henririgby98 8:3c15554e6723 228 lcd.drawSprite(8,3,8,11,(int *)invader); //adds spaceinvader into top left corner
henririgby98 8:3c15554e6723 229 lcd.drawSprite(WIDTH - 16,3,8,11,(int *)invader); //adds spaceinvader into top right corner
henririgby98 4:d744920089ea 230 lcd.refresh();
henririgby98 4:d744920089ea 231
henririgby98 4:d744920089ea 232 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
henririgby98 4:d744920089ea 233 pad.leds_on();
henririgby98 18:71ecb1a428b3 234 wait(0.15);
henririgby98 4:d744920089ea 235 pad.leds_off();
henririgby98 18:71ecb1a428b3 236 wait(0.15); //flashes leds on and of until start is pressed
henririgby98 2:794ed187ffcd 237 }
henririgby98 9:436b88b70fdd 238 lcd.clear();
henririgby98 9:436b88b70fdd 239 lcd.refresh();
henririgby98 9:436b88b70fdd 240 }
henririgby98 9:436b88b70fdd 241
henririgby98 18:71ecb1a428b3 242 void menu() { //menu screen
henririgby98 11:c60b61a80060 243 lcd.clear();
henririgby98 9:436b88b70fdd 244 lcd.printString(" MENU ",0,0);
henririgby98 9:436b88b70fdd 245 lcd.printString("A ==> Story ",0,1);
henririgby98 9:436b88b70fdd 246 lcd.printString("B ==> Play ",0,2);
henririgby98 9:436b88b70fdd 247 lcd.printString("X ==> Controls ",0,3);
henririgby98 9:436b88b70fdd 248 lcd.printString("Y ==> Credits ",0,4);
henririgby98 9:436b88b70fdd 249 lcd.refresh();
henririgby98 10:2b52d7e06712 250 choose = 0;
henririgby98 9:436b88b70fdd 251 // wait flashing LEDs until start button is pressed
henririgby98 10:2b52d7e06712 252 while (choose == 0) {
henririgby98 10:2b52d7e06712 253 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 18:71ecb1a428b3 254 choose = 1; //used to break menu while loop
henririgby98 18:71ecb1a428b3 255 Story(); //displays story
henririgby98 18:71ecb1a428b3 256 menu(); //returns to menu screen
henririgby98 10:2b52d7e06712 257 } else if (pad.check_event(Gamepad::B_PRESSED) == true) {
henririgby98 10:2b52d7e06712 258 choose = 1;
henririgby98 10:2b52d7e06712 259 } else if (pad.check_event(Gamepad::X_PRESSED) == true) {
henririgby98 10:2b52d7e06712 260 choose = 1;
henririgby98 18:71ecb1a428b3 261 Controls(); //displays controls
henririgby98 11:c60b61a80060 262 menu();
henririgby98 10:2b52d7e06712 263 } else if (pad.check_event(Gamepad::Y_PRESSED) == true) {
henririgby98 10:2b52d7e06712 264 choose = 1;
henririgby98 18:71ecb1a428b3 265 Credits(); //displays credits
henririgby98 11:c60b61a80060 266 menu();
henririgby98 10:2b52d7e06712 267 }
henririgby98 10:2b52d7e06712 268 pad.leds_on();
henririgby98 10:2b52d7e06712 269 wait(0.1);
henririgby98 10:2b52d7e06712 270 pad.leds_off();
henririgby98 10:2b52d7e06712 271 wait(0.1);
henririgby98 10:2b52d7e06712 272 }
henririgby98 10:2b52d7e06712 273 }
henririgby98 10:2b52d7e06712 274
henririgby98 11:c60b61a80060 275
henririgby98 10:2b52d7e06712 276 void Story() {
henririgby98 10:2b52d7e06712 277 lcd.clear();
henririgby98 11:c60b61a80060 278 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 279 lcd.printString("The Year: 2098",0,1);
henririgby98 11:c60b61a80060 280 lcd.printString("Humans Control",0,2);
henririgby98 11:c60b61a80060 281 lcd.printString("Sectors 3-8 Of",0,3);
henririgby98 11:c60b61a80060 282 lcd.printString("The Milky Way.",0,4);
henririgby98 18:71ecb1a428b3 283 lcd.printString(" Press A ",0,5);
henririgby98 18:71ecb1a428b3 284 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd); //adds arrow in bottom right corner
henririgby98 18:71ecb1a428b3 285 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd); //adds arrow in bottom left corner
henririgby98 10:2b52d7e06712 286 lcd.refresh();
henririgby98 18:71ecb1a428b3 287 int story = 0; //used to give story value of zero for while loops
henririgby98 10:2b52d7e06712 288 // wait flashing LEDs until start button is pressed
henririgby98 10:2b52d7e06712 289 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) {
henririgby98 11:c60b61a80060 290 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 11:c60b61a80060 291 lcd.clear();
henririgby98 11:c60b61a80060 292 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 293 lcd.printString("You, The Last ",0,1);
henririgby98 11:c60b61a80060 294 lcd.printString("Of The Zonians",0,2);
henririgby98 11:c60b61a80060 295 lcd.printString(" Are Captured ",0,3);
henririgby98 11:c60b61a80060 296 lcd.printString("Used for Sport",0,4);
henririgby98 11:c60b61a80060 297 lcd.printString(" Press A ",0,5);
henririgby98 18:71ecb1a428b3 298 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd); //adds arrow in bottom right corner
henririgby98 18:71ecb1a428b3 299 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd); //adds arrow in bottom left corner
henririgby98 11:c60b61a80060 300 lcd.refresh();
henririgby98 18:71ecb1a428b3 301 story = 1; //sets story to equal 1 to enter next while loop when a is pressed
henririgby98 11:c60b61a80060 302 while (story == 1) {
henririgby98 11:c60b61a80060 303 if (pad.check_event(Gamepad::A_PRESSED) == true) {
henririgby98 18:71ecb1a428b3 304 story = 2; //if a is pressed awe go to page 3 of story
henririgby98 11:c60b61a80060 305 }
henririgby98 11:c60b61a80060 306 }
henririgby98 11:c60b61a80060 307 while (story == 2){
henririgby98 11:c60b61a80060 308 lcd.clear();
henririgby98 11:c60b61a80060 309 lcd.printString(" Story ",0,0);
henririgby98 11:c60b61a80060 310 lcd.printString("They Name you ",0,1);
henririgby98 11:c60b61a80060 311 lcd.printString("'Spaceinvader'",0,2);
henririgby98 11:c60b61a80060 312 lcd.printString(" This Is Your ",0,3);
henririgby98 11:c60b61a80060 313 lcd.printString("Colosseum,RUN!",0,4);
henririgby98 11:c60b61a80060 314 lcd.printString("**Press Back**",0,5);
henririgby98 11:c60b61a80060 315 lcd.refresh();
henririgby98 11:c60b61a80060 316 if ( pad.check_event(Gamepad::BACK_PRESSED) == true){
henririgby98 18:71ecb1a428b3 317 break; //breaks while loop when back is pressed in third page of story
henririgby98 11:c60b61a80060 318
henririgby98 11:c60b61a80060 319 }
henririgby98 11:c60b61a80060 320 }
henririgby98 18:71ecb1a428b3 321 break; //goes back to menu screen
henririgby98 11:c60b61a80060 322 }
henririgby98 10:2b52d7e06712 323 pad.leds_on();
henririgby98 10:2b52d7e06712 324 wait(0.1);
henririgby98 10:2b52d7e06712 325 pad.leds_off();
henririgby98 10:2b52d7e06712 326 wait(0.1);
henririgby98 10:2b52d7e06712 327 }
henririgby98 10:2b52d7e06712 328
henririgby98 10:2b52d7e06712 329 }
henririgby98 10:2b52d7e06712 330
henririgby98 10:2b52d7e06712 331 void Controls() {
henririgby98 11:c60b61a80060 332
henririgby98 10:2b52d7e06712 333 lcd.clear();
henririgby98 10:2b52d7e06712 334 lcd.printString(" Controls ",0,0);
henririgby98 11:c60b61a80060 335 lcd.printString(" Aim: ",0,1);
henririgby98 11:c60b61a80060 336 lcd.printString("!!!!!!!!!!!!!!",0,2);
henririgby98 11:c60b61a80060 337 lcd.printString("AVOID THE BOMB",0,3);
henririgby98 11:c60b61a80060 338 lcd.printString("!!!!!!!!!!!!!!",0,4);
henririgby98 11:c60b61a80060 339 lcd.printString(" Press X",0,5);
henririgby98 11:c60b61a80060 340 lcd.drawSprite(WIDTH - 12,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 11:c60b61a80060 341 lcd.drawSprite(1,HEIGHT - 7,6,11,(int *)arrowd);
henririgby98 10:2b52d7e06712 342 lcd.refresh();
henririgby98 11:c60b61a80060 343 // wait flashing LEDs until start button is pressed
henririgby98 18:71ecb1a428b3 344 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) { //if back is pressed we will return to menu screen
henririgby98 18:71ecb1a428b3 345 if (pad.check_event(Gamepad::X_PRESSED) == true) { //if x is pressed then the next page of controls will be displayed
henririgby98 11:c60b61a80060 346 lcd.clear();
henririgby98 11:c60b61a80060 347 lcd.printString(" Controls ",0,0);
henririgby98 11:c60b61a80060 348 lcd.printString(" How: ",0,1);
henririgby98 11:c60b61a80060 349 lcd.printString(" Use Joystick ",0,2);
henririgby98 11:c60b61a80060 350 lcd.printString("To Move Around",0,3);
henririgby98 11:c60b61a80060 351 lcd.printString(" The Screen ",0,4);
henririgby98 11:c60b61a80060 352 lcd.printString("**Press Back**",0,5);
henririgby98 11:c60b61a80060 353 lcd.refresh();
henririgby98 11:c60b61a80060 354 }
henririgby98 11:c60b61a80060 355
henririgby98 9:436b88b70fdd 356 pad.leds_on();
henririgby98 9:436b88b70fdd 357 wait(0.1);
henririgby98 9:436b88b70fdd 358 pad.leds_off();
henririgby98 9:436b88b70fdd 359 wait(0.1);
henririgby98 9:436b88b70fdd 360 }
henririgby98 4:d744920089ea 361
henririgby98 2:794ed187ffcd 362 }
henririgby98 7:e0cab3e73df9 363
henririgby98 10:2b52d7e06712 364 void Credits() {
henririgby98 10:2b52d7e06712 365 lcd.clear();
henririgby98 10:2b52d7e06712 366 lcd.printString(" Credits ",0,0);
henririgby98 11:c60b61a80060 367 lcd.printString("By Henri Rigby ",0,3);
henririgby98 10:2b52d7e06712 368 lcd.printString("SID: 201198821 ",0,2);
henririgby98 11:c60b61a80060 369 lcd.printString("**Press Back** ",0,5);
henririgby98 10:2b52d7e06712 370 lcd.refresh();
henririgby98 10:2b52d7e06712 371 // wait flashing LEDs until start button is pressed
henririgby98 18:71ecb1a428b3 372 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 373 // easter egg is lights will flash my surname RIGBY in morse code accompanied by beeps
henririgby98 11:c60b61a80060 374 wait(1);
henririgby98 10:2b52d7e06712 375 pad.leds_on();
henririgby98 11:c60b61a80060 376 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 377 wait(0.1);
henririgby98 10:2b52d7e06712 378 pad.leds_off();
henririgby98 10:2b52d7e06712 379 wait(0.3);
henririgby98 10:2b52d7e06712 380 pad.leds_on();
henririgby98 11:c60b61a80060 381 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 382 wait(0.4);
henririgby98 10:2b52d7e06712 383 pad.leds_off();
henririgby98 10:2b52d7e06712 384 wait(0.3);
henririgby98 10:2b52d7e06712 385 pad.leds_on();
henririgby98 11:c60b61a80060 386 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 387 wait(0.1);
henririgby98 10:2b52d7e06712 388 pad.leds_off();
henririgby98 10:2b52d7e06712 389 wait(0.6);
henririgby98 10:2b52d7e06712 390
henririgby98 10:2b52d7e06712 391 pad.leds_on();
henririgby98 11:c60b61a80060 392 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 393 wait(0.1);
henririgby98 10:2b52d7e06712 394 pad.leds_off();
henririgby98 10:2b52d7e06712 395 wait(0.3);
henririgby98 10:2b52d7e06712 396 pad.leds_on();
henririgby98 11:c60b61a80060 397 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 398 wait(0.1);
henririgby98 10:2b52d7e06712 399 pad.leds_off();
henririgby98 10:2b52d7e06712 400 wait(0.6);
henririgby98 10:2b52d7e06712 401
henririgby98 10:2b52d7e06712 402 pad.leds_on();
henririgby98 11:c60b61a80060 403 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 404 wait(0.4);
henririgby98 10:2b52d7e06712 405 pad.leds_off();
henririgby98 10:2b52d7e06712 406 wait(0.3);
henririgby98 10:2b52d7e06712 407 pad.leds_on();
henririgby98 11:c60b61a80060 408 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 409 wait(0.4);
henririgby98 10:2b52d7e06712 410 pad.leds_off();
henririgby98 10:2b52d7e06712 411 wait(0.3);
henririgby98 10:2b52d7e06712 412 pad.leds_on();
henririgby98 11:c60b61a80060 413 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 414 wait(0.1);
henririgby98 10:2b52d7e06712 415 pad.leds_off();
henririgby98 10:2b52d7e06712 416 wait(0.6);
henririgby98 10:2b52d7e06712 417
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(1500.0,0.1);
henririgby98 10:2b52d7e06712 425 wait(0.1);
henririgby98 10:2b52d7e06712 426 pad.leds_off();
henririgby98 10:2b52d7e06712 427 wait(0.3);
henririgby98 10:2b52d7e06712 428 pad.leds_on();
henririgby98 11:c60b61a80060 429 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 430 wait(0.1);
henririgby98 10:2b52d7e06712 431 pad.leds_off();
henririgby98 10:2b52d7e06712 432 wait(0.3);
henririgby98 10:2b52d7e06712 433 pad.leds_on();
henririgby98 11:c60b61a80060 434 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 435 wait(0.1);
henririgby98 10:2b52d7e06712 436 pad.leds_off();
henririgby98 10:2b52d7e06712 437 wait(0.6);
henririgby98 10:2b52d7e06712 438
henririgby98 10:2b52d7e06712 439 pad.leds_on();
henririgby98 11:c60b61a80060 440 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 441 wait(0.4);
henririgby98 10:2b52d7e06712 442 pad.leds_off();
henririgby98 10:2b52d7e06712 443 wait(0.3);
henririgby98 10:2b52d7e06712 444 pad.leds_on();
henririgby98 11:c60b61a80060 445 pad.tone(1500.0,0.1);
henririgby98 10:2b52d7e06712 446 wait(0.1);
henririgby98 10:2b52d7e06712 447 pad.leds_off();
henririgby98 10:2b52d7e06712 448 wait(0.3);
henririgby98 10:2b52d7e06712 449 pad.leds_on();
henririgby98 11:c60b61a80060 450 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 451 wait(0.4);
henririgby98 10:2b52d7e06712 452 pad.leds_off();
henririgby98 10:2b52d7e06712 453 wait(0.3);
henririgby98 10:2b52d7e06712 454 pad.leds_on();
henririgby98 11:c60b61a80060 455 pad.tone(1200.0,0.4);
henririgby98 10:2b52d7e06712 456 wait(0.4);
henririgby98 10:2b52d7e06712 457 pad.leds_off();
henririgby98 11:c60b61a80060 458
henririgby98 10:2b52d7e06712 459 }
henririgby98 10:2b52d7e06712 460
henririgby98 10:2b52d7e06712 461 }
henririgby98 10:2b52d7e06712 462
henririgby98 7:e0cab3e73df9 463 void Game1Over() {
henririgby98 10:2b52d7e06712 464 lcd.printString(" You Died! ",0,1);
henririgby98 7:e0cab3e73df9 465 lcd.printString(" Score =",0,2);
henririgby98 18:71ecb1a428b3 466 spacerebellion.print_scores(lcd); //this is used to print the score after game is played
henririgby98 18:71ecb1a428b3 467 lcd.drawSprite(5,3,11,11,(int *)X_2); //draws an X in top left corner
henririgby98 18:71ecb1a428b3 468 lcd.drawSprite(WIDTH - 13,3,11,11,(int *)X_2); //draws an X in top right corner
henririgby98 8:3c15554e6723 469 lcd.printString(" Press BACK...",0,4);
henririgby98 7:e0cab3e73df9 470 lcd.refresh();
henririgby98 7:e0cab3e73df9 471 // wait flashing LEDs until start button is pressed
henririgby98 18:71ecb1a428b3 472 while ( pad.check_event(Gamepad::BACK_PRESSED) == false) { // if back pressed will return to menu
henririgby98 7:e0cab3e73df9 473 pad.leds_on();
henririgby98 7:e0cab3e73df9 474 wait(0.1);
henririgby98 7:e0cab3e73df9 475 pad.leds_off();
henririgby98 7:e0cab3e73df9 476 wait(0.1);
henririgby98 7:e0cab3e73df9 477 }
henririgby98 7:e0cab3e73df9 478
henririgby98 7:e0cab3e73df9 479 }
henririgby98 7:e0cab3e73df9 480
henririgby98 8:3c15554e6723 481 void x1_1() {
henririgby98 18:71ecb1a428b3 482 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT); //draws rectangle around outline of lcd display
henririgby98 18:71ecb1a428b3 483 lcd.drawSprite(WIDTH/2 - 27,HEIGHT/2 - 6,11,11,(int *)X_1); //draws first half of first x
henririgby98 8:3c15554e6723 484 }
henririgby98 8:3c15554e6723 485
henririgby98 8:3c15554e6723 486 void x1_2() {
henririgby98 8:3c15554e6723 487 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 18:71ecb1a428b3 488 lcd.drawSprite(WIDTH/2 - 27,HEIGHT/2 - 6,11,11,(int *)X_2); //draws first x
henririgby98 8:3c15554e6723 489 }
henririgby98 8:3c15554e6723 490
henririgby98 8:3c15554e6723 491 void x2_1() {
henririgby98 8:3c15554e6723 492 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 18:71ecb1a428b3 493 lcd.drawSprite(WIDTH/2 - 6,HEIGHT/2 - 6,11,11,(int *)X_1); //draws first half of second x
henririgby98 8:3c15554e6723 494 }
henririgby98 8:3c15554e6723 495
henririgby98 8:3c15554e6723 496 void x2_2() {
henririgby98 8:3c15554e6723 497 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 18:71ecb1a428b3 498 lcd.drawSprite(WIDTH/2 - 6,HEIGHT/2 - 6,11,11,(int *)X_2); //draws second x
henririgby98 8:3c15554e6723 499 }
henririgby98 8:3c15554e6723 500
henririgby98 8:3c15554e6723 501 void x3_1() {
henririgby98 8:3c15554e6723 502 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 18:71ecb1a428b3 503 lcd.drawSprite(WIDTH/2 + 15,HEIGHT/2 - 6,11,11,(int *)X_1); //draws first half of third x
henririgby98 8:3c15554e6723 504 }
henririgby98 8:3c15554e6723 505
henririgby98 8:3c15554e6723 506 void x3_2() {
henririgby98 8:3c15554e6723 507 lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT);
henririgby98 18:71ecb1a428b3 508 lcd.drawSprite(WIDTH/2 + 15,HEIGHT/2 - 6,11,11,(int *)X_2); //draws third x
henririgby98 8:3c15554e6723 509 }