Rex Raj / Mbed 2 deprecated el17rrrs

Dependencies:   mbed Gamepad N5110 mbed-rtos

Committer:
RexRoshan
Date:
Thu May 09 12:53:09 2019 +0000
Revision:
11:c3817962923d
Parent:
7:574c66ebd8b0
Child:
12:6017b3f30ad4
A slight modification has been done to comments.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RexRoshan 6:1fcfd331c047 1 /*
RexRoshan 6:1fcfd331c047 2 ELEC2645 Embedded Systems Project
RexRoshan 6:1fcfd331c047 3 School of Electronic & Electrical Engineering
RexRoshan 6:1fcfd331c047 4 University of Leeds
RexRoshan 6:1fcfd331c047 5 Name: Rex Roshan Raj
RexRoshan 6:1fcfd331c047 6 Username: el17rrs
RexRoshan 6:1fcfd331c047 7 Student ID Number: 201184290
RexRoshan 6:1fcfd331c047 8 Start Date: 25/03/2019
RexRoshan 7:574c66ebd8b0 9 End Date: 9/05/2019
RexRoshan 6:1fcfd331c047 10 */
RexRoshan 6:1fcfd331c047 11
RexRoshan 0:99fa5a619081 12 #include "mbed.h"
RexRoshan 0:99fa5a619081 13 #include "N5110.h"
RexRoshan 0:99fa5a619081 14 #include "Gamepad.h"
RexRoshan 0:99fa5a619081 15 #include "Instruction.h"
RexRoshan 0:99fa5a619081 16 #include "Spacecraft.h"
RexRoshan 0:99fa5a619081 17 #include "GameEngine.h"
RexRoshan 7:574c66ebd8b0 18 #include "MiniGame.h"
RexRoshan 0:99fa5a619081 19 #include "Solar.h"
RexRoshan 0:99fa5a619081 20 #include "Music.h"
RexRoshan 6:1fcfd331c047 21 #include "rtos.h"
RexRoshan 0:99fa5a619081 22
RexRoshan 6:1fcfd331c047 23 /** @file main.cpp
RexRoshan 6:1fcfd331c047 24 * @brief Contains the main code of the program.
RexRoshan 6:1fcfd331c047 25 */
RexRoshan 6:1fcfd331c047 26
RexRoshan 6:1fcfd331c047 27 // Structs
RexRoshan 0:99fa5a619081 28 struct UserInput {
RexRoshan 0:99fa5a619081 29 Direction d;
RexRoshan 0:99fa5a619081 30 float mag;
RexRoshan 0:99fa5a619081 31 };
RexRoshan 0:99fa5a619081 32
RexRoshan 7:574c66ebd8b0 33 // enum state for MainPage
RexRoshan 7:574c66ebd8b0 34 enum MainPage { TitleScreen, Menu, Mini_Game, Mission };
RexRoshan 7:574c66ebd8b0 35
RexRoshan 7:574c66ebd8b0 36 // enum state for MiniState
RexRoshan 7:574c66ebd8b0 37 enum MiniState { Dead, Alive };
RexRoshan 7:574c66ebd8b0 38
RexRoshan 4:4d673fb2d9dc 39 // enum state for Mission state
RexRoshan 7:574c66ebd8b0 40 enum MissionState {Mission1,Mission1Pass,Mission1Fail,Mission2,Mission2Pass,Mission2Fail,Mission3,Mission3Pass,Mission3Fail,Congratulations };
RexRoshan 0:99fa5a619081 41
RexRoshan 6:1fcfd331c047 42 // Objects
RexRoshan 0:99fa5a619081 43 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3
RexRoshan 0:99fa5a619081 44 Gamepad pad;
RexRoshan 0:99fa5a619081 45 Music play;
RexRoshan 1:45493d1d0689 46 Instruction instruct;
RexRoshan 0:99fa5a619081 47 Thread thread;
RexRoshan 0:99fa5a619081 48 Spacecraft game;
RexRoshan 0:99fa5a619081 49 GameEngine shoot;
RexRoshan 7:574c66ebd8b0 50 MiniGame mini;
RexRoshan 7:574c66ebd8b0 51
RexRoshan 0:99fa5a619081 52
RexRoshan 6:1fcfd331c047 53 // Prototypes
RexRoshan 0:99fa5a619081 54 void init();
RexRoshan 7:574c66ebd8b0 55 void mini_init();
RexRoshan 0:99fa5a619081 56 void welcome();
RexRoshan 7:574c66ebd8b0 57 void mini_render();
RexRoshan 7:574c66ebd8b0 58 void render_nothing();
RexRoshan 0:99fa5a619081 59 void render();
RexRoshan 0:99fa5a619081 60 void render2();
RexRoshan 1:45493d1d0689 61 void render3();
RexRoshan 7:574c66ebd8b0 62 void mini_rules();
RexRoshan 0:99fa5a619081 63 void intro();
RexRoshan 0:99fa5a619081 64 void instruction();
RexRoshan 7:574c66ebd8b0 65
RexRoshan 7:574c66ebd8b0 66 bool end = false;
RexRoshan 7:574c66ebd8b0 67 bool finish = false;
RexRoshan 7:574c66ebd8b0 68 bool music_end = false;
RexRoshan 0:99fa5a619081 69
RexRoshan 0:99fa5a619081 70
RexRoshan 0:99fa5a619081 71 int main()
RexRoshan 0:99fa5a619081 72 {
RexRoshan 7:574c66ebd8b0 73 int fps = 8; // Set the frames per second = 8
RexRoshan 7:574c66ebd8b0 74 lcd.setContrast(0.4); // 0.4 appears to be a good starting point
RexRoshan 7:574c66ebd8b0 75 init(); // Initialise all the parameters in GameEngine
RexRoshan 7:574c66ebd8b0 76
RexRoshan 7:574c66ebd8b0 77 MainPage currentState = TitleScreen; // Initial state of MainPage
RexRoshan 11:c3817962923d 78 MissionState currentMission = Mission1; // Initial state of MissionState
RexRoshan 11:c3817962923d 79 MiniState currentMini = Alive; // Initial state of MiniState
RexRoshan 0:99fa5a619081 80
RexRoshan 1:45493d1d0689 81
RexRoshan 1:45493d1d0689 82 while(1) {
RexRoshan 0:99fa5a619081 83 switch(currentState){
RexRoshan 7:574c66ebd8b0 84 case TitleScreen:
RexRoshan 7:574c66ebd8b0 85 // Draws the Title Screen
RexRoshan 1:45493d1d0689 86 lcd.clear();
RexRoshan 1:45493d1d0689 87 lcd.refresh();
RexRoshan 1:45493d1d0689 88 thread.start(welcome);
RexRoshan 1:45493d1d0689 89 intro();
RexRoshan 7:574c66ebd8b0 90 thread.terminate();
RexRoshan 7:574c66ebd8b0 91 render_nothing();
RexRoshan 1:45493d1d0689 92 wait(1.0f/fps);
RexRoshan 7:574c66ebd8b0 93 currentState = Menu;
RexRoshan 7:574c66ebd8b0 94 break;
RexRoshan 7:574c66ebd8b0 95 case Menu:
RexRoshan 7:574c66ebd8b0 96 // Draws the Menu Page
RexRoshan 7:574c66ebd8b0 97 lcd.clear();
RexRoshan 7:574c66ebd8b0 98 lcd.drawSprite(4,7,9,9, (int*)x_button);
RexRoshan 7:574c66ebd8b0 99 lcd.drawSprite(4,23,9,9, (int*)y_button);
RexRoshan 7:574c66ebd8b0 100 lcd.printString("Mission",20,1);
RexRoshan 7:574c66ebd8b0 101 lcd.printString("Mini Game",20,3);
RexRoshan 7:574c66ebd8b0 102 lcd.refresh();
RexRoshan 7:574c66ebd8b0 103 if (pad.check_event(Gamepad::X_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 104 currentState = Mission;
RexRoshan 7:574c66ebd8b0 105 end = false;
RexRoshan 11:c3817962923d 106 // instruction page for the game
RexRoshan 11:c3817962923d 107 instruction();
RexRoshan 7:574c66ebd8b0 108 } else if (pad.check_event(Gamepad::Y_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 109 currentState = Mini_Game;
RexRoshan 7:574c66ebd8b0 110 finish = false;
RexRoshan 11:c3817962923d 111 // rules page for the mini game
RexRoshan 7:574c66ebd8b0 112 mini_rules();
RexRoshan 7:574c66ebd8b0 113 }
RexRoshan 1:45493d1d0689 114 break;
RexRoshan 7:574c66ebd8b0 115
RexRoshan 11:c3817962923d 116 case Mission:
RexRoshan 11:c3817962923d 117 currentMission = Mission1;
RexRoshan 7:574c66ebd8b0 118 while(!end){
RexRoshan 7:574c66ebd8b0 119 switch(currentMission){
RexRoshan 11:c3817962923d 120 // First Mission
RexRoshan 7:574c66ebd8b0 121 case Mission1:
RexRoshan 7:574c66ebd8b0 122 shoot.read_input(pad);
RexRoshan 7:574c66ebd8b0 123 shoot.update_mission_one(pad,lcd);
RexRoshan 7:574c66ebd8b0 124 render();
RexRoshan 7:574c66ebd8b0 125 wait(1.0f/fps);
RexRoshan 7:574c66ebd8b0 126 if(shoot.get_game_stage() == 1){
RexRoshan 7:574c66ebd8b0 127 currentMission = Mission1Fail;
RexRoshan 7:574c66ebd8b0 128 break;
RexRoshan 7:574c66ebd8b0 129 }
RexRoshan 7:574c66ebd8b0 130 else if(shoot.get_game_stage() == 2){
RexRoshan 7:574c66ebd8b0 131 currentMission = Mission1Pass;
RexRoshan 7:574c66ebd8b0 132 break;
RexRoshan 7:574c66ebd8b0 133 }else {
RexRoshan 7:574c66ebd8b0 134 currentMission = Mission1;
RexRoshan 7:574c66ebd8b0 135 }
RexRoshan 7:574c66ebd8b0 136 break;
RexRoshan 11:c3817962923d 137 // Mission One Failed
RexRoshan 7:574c66ebd8b0 138 case Mission1Fail:
RexRoshan 11:c3817962923d 139 // output the mission fail page
RexRoshan 7:574c66ebd8b0 140 lcd.clear();
RexRoshan 7:574c66ebd8b0 141 lcd.drawSprite(6,5,42,73,(int *)mission_fail);
RexRoshan 7:574c66ebd8b0 142 lcd.drawSprite(51,11,7,19,(int *)m_one);
RexRoshan 7:574c66ebd8b0 143 lcd.refresh();
RexRoshan 11:c3817962923d 144 // play the mission failure song
RexRoshan 7:574c66ebd8b0 145 play.mission_fail(pad);
RexRoshan 7:574c66ebd8b0 146 if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 147 currentMission = Mission1;
RexRoshan 7:574c66ebd8b0 148 shoot.restart_game_stage();
RexRoshan 7:574c66ebd8b0 149 init();
RexRoshan 7:574c66ebd8b0 150 }
RexRoshan 7:574c66ebd8b0 151 break;
RexRoshan 7:574c66ebd8b0 152 case Mission1Pass:
RexRoshan 11:c3817962923d 153 // outputs the mission pass page
RexRoshan 7:574c66ebd8b0 154 lcd.clear();
RexRoshan 7:574c66ebd8b0 155 lcd.drawSprite(0,0,48,84,(int *)mission_pass);
RexRoshan 7:574c66ebd8b0 156 lcd.drawSprite(51,11,7,19,(int *)m_one);
RexRoshan 7:574c66ebd8b0 157 lcd.refresh();
RexRoshan 11:c3817962923d 158 // plays the mission success song
RexRoshan 7:574c66ebd8b0 159 play.mission_success(pad);
RexRoshan 7:574c66ebd8b0 160 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 161 currentMission = Mission2;
RexRoshan 7:574c66ebd8b0 162 shoot.restart_game_stage();
RexRoshan 7:574c66ebd8b0 163 init();
RexRoshan 7:574c66ebd8b0 164 }
RexRoshan 7:574c66ebd8b0 165 break;
RexRoshan 11:c3817962923d 166 // Mission two
RexRoshan 7:574c66ebd8b0 167 case Mission2:
RexRoshan 7:574c66ebd8b0 168 shoot.read_input(pad);
RexRoshan 7:574c66ebd8b0 169 shoot.update_mission_two(pad,lcd);
RexRoshan 7:574c66ebd8b0 170 render2();
RexRoshan 7:574c66ebd8b0 171 wait(1.0f/fps);
RexRoshan 7:574c66ebd8b0 172 if(shoot.get_game_stage() == 3 ){
RexRoshan 7:574c66ebd8b0 173 currentMission = Mission2Fail;
RexRoshan 7:574c66ebd8b0 174 }
RexRoshan 7:574c66ebd8b0 175 if(shoot.get_game_stage() == 4){
RexRoshan 7:574c66ebd8b0 176 currentMission = Mission2Pass;
RexRoshan 7:574c66ebd8b0 177 }
RexRoshan 7:574c66ebd8b0 178 break;
RexRoshan 7:574c66ebd8b0 179 case Mission2Fail:
RexRoshan 11:c3817962923d 180 // outputs the mission fail page
RexRoshan 7:574c66ebd8b0 181 lcd.clear();
RexRoshan 7:574c66ebd8b0 182 lcd.drawSprite(6,5,42,73,(int *)mission_fail);
RexRoshan 7:574c66ebd8b0 183 lcd.drawSprite(51,12,5,18,(int *)m_two);
RexRoshan 7:574c66ebd8b0 184 lcd.refresh();
RexRoshan 11:c3817962923d 185 // play mission failure song
RexRoshan 7:574c66ebd8b0 186 play.mission_fail(pad);
RexRoshan 7:574c66ebd8b0 187 if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 188 currentMission = Mission1;
RexRoshan 7:574c66ebd8b0 189 shoot.restart_game_stage();
RexRoshan 7:574c66ebd8b0 190 init();
RexRoshan 7:574c66ebd8b0 191 }
RexRoshan 7:574c66ebd8b0 192 break;
RexRoshan 7:574c66ebd8b0 193 case Mission2Pass:
RexRoshan 11:c3817962923d 194 // outputs the mission pass page
RexRoshan 7:574c66ebd8b0 195 lcd.clear();
RexRoshan 7:574c66ebd8b0 196 lcd.drawSprite(0,0,48,84,(int *)mission_pass);
RexRoshan 7:574c66ebd8b0 197 lcd.drawSprite(51,12,5,18,(int *)m_two);
RexRoshan 7:574c66ebd8b0 198 lcd.refresh();
RexRoshan 11:c3817962923d 199 // plays the mission success song
RexRoshan 7:574c66ebd8b0 200 play.mission_success(pad);
RexRoshan 7:574c66ebd8b0 201 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 202 currentMission = Mission3;
RexRoshan 7:574c66ebd8b0 203 shoot.restart_game_stage();
RexRoshan 7:574c66ebd8b0 204 init();
RexRoshan 7:574c66ebd8b0 205 }
RexRoshan 7:574c66ebd8b0 206 break;
RexRoshan 11:c3817962923d 207 // Mission three
RexRoshan 7:574c66ebd8b0 208 case Mission3:
RexRoshan 7:574c66ebd8b0 209 shoot.read_input(pad);
RexRoshan 7:574c66ebd8b0 210 shoot.update_mission_three(pad,lcd);
RexRoshan 7:574c66ebd8b0 211 render3();
RexRoshan 7:574c66ebd8b0 212 wait(1.0f/fps);
RexRoshan 7:574c66ebd8b0 213 if(shoot.get_game_stage() == 5 ){
RexRoshan 7:574c66ebd8b0 214 currentMission = Mission3Fail;
RexRoshan 7:574c66ebd8b0 215 }
RexRoshan 7:574c66ebd8b0 216 if(shoot.get_game_stage() == 6){
RexRoshan 7:574c66ebd8b0 217 currentMission = Mission3Pass;
RexRoshan 7:574c66ebd8b0 218 }
RexRoshan 7:574c66ebd8b0 219 break;
RexRoshan 7:574c66ebd8b0 220 case Mission3Fail:
RexRoshan 11:c3817962923d 221 // outputs a mission fail page
RexRoshan 7:574c66ebd8b0 222 lcd.clear();
RexRoshan 7:574c66ebd8b0 223 lcd.drawSprite(6,5,42,73,(int *)mission_fail);
RexRoshan 7:574c66ebd8b0 224 lcd.drawSprite(48,12,5,29,(int *)m_three);
RexRoshan 7:574c66ebd8b0 225 lcd.refresh();
RexRoshan 7:574c66ebd8b0 226 play.mission_fail(pad);
RexRoshan 7:574c66ebd8b0 227 if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 228 currentMission = Mission1;
RexRoshan 7:574c66ebd8b0 229 shoot.restart_game_stage();
RexRoshan 7:574c66ebd8b0 230 init();
RexRoshan 7:574c66ebd8b0 231 }
RexRoshan 7:574c66ebd8b0 232 break;
RexRoshan 7:574c66ebd8b0 233 case Mission3Pass:
RexRoshan 11:c3817962923d 234 // outputs a mission pass page
RexRoshan 7:574c66ebd8b0 235 lcd.clear();
RexRoshan 7:574c66ebd8b0 236 lcd.drawSprite(0,0,48,84,(int *)mission_pass);
RexRoshan 7:574c66ebd8b0 237 lcd.drawSprite(48,12,5,29,(int *)m_three);
RexRoshan 7:574c66ebd8b0 238 lcd.refresh();
RexRoshan 7:574c66ebd8b0 239 play.mission_success(pad);
RexRoshan 7:574c66ebd8b0 240 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 241 currentMission = Congratulations;
RexRoshan 7:574c66ebd8b0 242 }
RexRoshan 7:574c66ebd8b0 243 break;
RexRoshan 7:574c66ebd8b0 244 case Congratulations:
RexRoshan 7:574c66ebd8b0 245 for(int i = 0; i < 3; i++){
RexRoshan 7:574c66ebd8b0 246 lcd.clear();
RexRoshan 7:574c66ebd8b0 247 lcd.drawSprite(0,0,48,84,(int *) congrats);
RexRoshan 7:574c66ebd8b0 248 lcd.drawSprite(0,23,25,84,(int *)party_popper);
RexRoshan 7:574c66ebd8b0 249 lcd.refresh();
RexRoshan 7:574c66ebd8b0 250 wait(0.5);
RexRoshan 7:574c66ebd8b0 251 lcd.clear();
RexRoshan 7:574c66ebd8b0 252 lcd.drawSprite(0,0,48,84,(int *) congrats);
RexRoshan 7:574c66ebd8b0 253 lcd.refresh();
RexRoshan 7:574c66ebd8b0 254 wait(0.5);
RexRoshan 7:574c66ebd8b0 255 }
RexRoshan 7:574c66ebd8b0 256 while(pad.check_event(Gamepad::A_PRESSED) == false){
RexRoshan 7:574c66ebd8b0 257 lcd.clear();
RexRoshan 7:574c66ebd8b0 258 lcd.drawSprite(0,0,48,84,(int *) congrats);
RexRoshan 7:574c66ebd8b0 259 lcd.drawSprite(25,28,13,36,(int *) exit1);
RexRoshan 7:574c66ebd8b0 260 lcd.refresh();
RexRoshan 7:574c66ebd8b0 261 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 262 end = true;
RexRoshan 7:574c66ebd8b0 263 music_end = false;
RexRoshan 7:574c66ebd8b0 264 break;
RexRoshan 7:574c66ebd8b0 265 }
RexRoshan 7:574c66ebd8b0 266 }
RexRoshan 7:574c66ebd8b0 267 break;
RexRoshan 7:574c66ebd8b0 268 }
RexRoshan 7:574c66ebd8b0 269 }
RexRoshan 7:574c66ebd8b0 270 currentState = TitleScreen;
RexRoshan 7:574c66ebd8b0 271 break;
RexRoshan 7:574c66ebd8b0 272
RexRoshan 7:574c66ebd8b0 273 case Mini_Game:
RexRoshan 7:574c66ebd8b0 274 mini_init();
RexRoshan 7:574c66ebd8b0 275 currentMini = Alive;
RexRoshan 7:574c66ebd8b0 276 while(!finish) {
RexRoshan 7:574c66ebd8b0 277 switch(currentMini){
RexRoshan 7:574c66ebd8b0 278 case Alive:
RexRoshan 7:574c66ebd8b0 279 mini.read_input(pad);
RexRoshan 7:574c66ebd8b0 280 mini.update_minigame(pad,lcd);
RexRoshan 7:574c66ebd8b0 281 mini_render();
RexRoshan 7:574c66ebd8b0 282 wait(1.0f/fps);
RexRoshan 7:574c66ebd8b0 283 if(mini.get_game_stage() == 12){
RexRoshan 7:574c66ebd8b0 284 currentMini = Dead;
RexRoshan 7:574c66ebd8b0 285 break;
RexRoshan 7:574c66ebd8b0 286 }
RexRoshan 7:574c66ebd8b0 287 break;
RexRoshan 7:574c66ebd8b0 288
RexRoshan 7:574c66ebd8b0 289 case Dead:
RexRoshan 7:574c66ebd8b0 290 lcd.clear();
RexRoshan 7:574c66ebd8b0 291 lcd.printString(" Your ",0,1);
RexRoshan 7:574c66ebd8b0 292 lcd.printString(" Spacecraft",4,2);
RexRoshan 7:574c66ebd8b0 293 lcd.printString(" have fallen",0,3);
RexRoshan 7:574c66ebd8b0 294 lcd.drawSprite(72,39,9,9, (int*)x_button);
RexRoshan 7:574c66ebd8b0 295 mini.draw_score(lcd);
RexRoshan 7:574c66ebd8b0 296 lcd.refresh();
RexRoshan 7:574c66ebd8b0 297 wait(1.0f/fps);
RexRoshan 7:574c66ebd8b0 298 if (pad.check_event(Gamepad::X_PRESSED) == true){
RexRoshan 7:574c66ebd8b0 299 finish = true;
RexRoshan 7:574c66ebd8b0 300 music_end = false;
RexRoshan 7:574c66ebd8b0 301 }
RexRoshan 7:574c66ebd8b0 302 break;
RexRoshan 7:574c66ebd8b0 303 }
RexRoshan 7:574c66ebd8b0 304 }
RexRoshan 7:574c66ebd8b0 305 currentState = TitleScreen;
RexRoshan 7:574c66ebd8b0 306 break;
RexRoshan 7:574c66ebd8b0 307 }
RexRoshan 0:99fa5a619081 308 }
RexRoshan 0:99fa5a619081 309 }
RexRoshan 0:99fa5a619081 310
RexRoshan 11:c3817962923d 311 void init()
RexRoshan 11:c3817962923d 312 {
RexRoshan 4:4d673fb2d9dc 313 // need to initialise LCD,Gamepad and the Game
RexRoshan 0:99fa5a619081 314 lcd.init();
RexRoshan 0:99fa5a619081 315 pad.init();
RexRoshan 7:574c66ebd8b0 316 //Initialise (x pos of player spacecraft, y pos of player spacecraft, x pos of enemy stage 1,y pos of enemy stage 1, x pos of enemy1 stage 2, y pos of enemy1 stage 2, x pos of enemy2 stage 2, y pos of enemy2 stage 2, x pos of boss stage 3, y pos of boss stage 3, beam size 1, beam size 2, motion speed)
RexRoshan 7:574c66ebd8b0 317 shoot.init(WIDTH/12,HEIGHT/2-5,16,4,12,10,20,11,3,2,4);
RexRoshan 7:574c66ebd8b0 318
RexRoshan 7:574c66ebd8b0 319 }
RexRoshan 7:574c66ebd8b0 320
RexRoshan 11:c3817962923d 321 void mini_init()
RexRoshan 11:c3817962923d 322 {
RexRoshan 7:574c66ebd8b0 323 // need to initialise LCD,Gamepad and the Game
RexRoshan 7:574c66ebd8b0 324 lcd.init();
RexRoshan 7:574c66ebd8b0 325 pad.init();
RexRoshan 7:574c66ebd8b0 326 //Initialise (x pos of player spacecraft, y pos of player spacecraft, beam size 1)
RexRoshan 7:574c66ebd8b0 327 mini.init(WIDTH/12,HEIGHT/2-5,3,66,0,36,30);
RexRoshan 0:99fa5a619081 328
RexRoshan 0:99fa5a619081 329 }
RexRoshan 0:99fa5a619081 330
RexRoshan 4:4d673fb2d9dc 331
RexRoshan 0:99fa5a619081 332 void render()
RexRoshan 0:99fa5a619081 333 {
RexRoshan 0:99fa5a619081 334 // clear screen, re-draw and refresh
RexRoshan 4:4d673fb2d9dc 335 // Mission 1
RexRoshan 0:99fa5a619081 336 lcd.clear();
RexRoshan 2:b5c1bb7a39de 337 shoot.draw_mission_one(pad,lcd);
RexRoshan 0:99fa5a619081 338 lcd.refresh();
RexRoshan 0:99fa5a619081 339 }
RexRoshan 0:99fa5a619081 340
RexRoshan 0:99fa5a619081 341 void render2()
RexRoshan 0:99fa5a619081 342 {
RexRoshan 0:99fa5a619081 343 // clear screen, re-draw and refresh
RexRoshan 4:4d673fb2d9dc 344 // Mission 2
RexRoshan 0:99fa5a619081 345 lcd.clear();
RexRoshan 2:b5c1bb7a39de 346 shoot.draw_mission_two(pad,lcd);
RexRoshan 0:99fa5a619081 347 lcd.refresh();
RexRoshan 0:99fa5a619081 348 }
RexRoshan 0:99fa5a619081 349
RexRoshan 1:45493d1d0689 350 void render3()
RexRoshan 1:45493d1d0689 351 {
RexRoshan 1:45493d1d0689 352 // clear screen, re-draw and refresh
RexRoshan 4:4d673fb2d9dc 353 // Mission 3
RexRoshan 1:45493d1d0689 354 lcd.clear();
RexRoshan 2:b5c1bb7a39de 355 shoot.draw_mission_three(pad,lcd);
RexRoshan 1:45493d1d0689 356 lcd.refresh();
RexRoshan 1:45493d1d0689 357 }
RexRoshan 1:45493d1d0689 358
RexRoshan 4:4d673fb2d9dc 359 void welcome()
RexRoshan 4:4d673fb2d9dc 360 {
RexRoshan 0:99fa5a619081 361
RexRoshan 4:4d673fb2d9dc 362 // draws the sprites until the Start button is pressed
RexRoshan 4:4d673fb2d9dc 363
RexRoshan 0:99fa5a619081 364 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
RexRoshan 0:99fa5a619081 365 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 366 pad.leds_on();
RexRoshan 2:b5c1bb7a39de 367 lcd.drawSprite(6,0,48,71,(int *)screen);
RexRoshan 0:99fa5a619081 368 lcd.drawSprite(21,43,5,40,(int *)start);
RexRoshan 0:99fa5a619081 369 lcd.refresh();
RexRoshan 0:99fa5a619081 370 Thread::wait(800);
RexRoshan 0:99fa5a619081 371 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 372 pad.leds_off();
RexRoshan 2:b5c1bb7a39de 373 lcd.drawSprite(6,0,48,71,(int *)screen);
RexRoshan 0:99fa5a619081 374 lcd.refresh();
RexRoshan 0:99fa5a619081 375 Thread::wait(800);
RexRoshan 0:99fa5a619081 376 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 377
RexRoshan 0:99fa5a619081 378 }
RexRoshan 0:99fa5a619081 379 pad.leds_off();
RexRoshan 0:99fa5a619081 380 }
RexRoshan 0:99fa5a619081 381
RexRoshan 4:4d673fb2d9dc 382 void intro()
RexRoshan 4:4d673fb2d9dc 383 {
RexRoshan 4:4d673fb2d9dc 384 //plays the introduction music for game
RexRoshan 4:4d673fb2d9dc 385 play.intro_song(pad);
RexRoshan 4:4d673fb2d9dc 386 }
RexRoshan 0:99fa5a619081 387
RexRoshan 4:4d673fb2d9dc 388 void instruction()
RexRoshan 4:4d673fb2d9dc 389 {
RexRoshan 4:4d673fb2d9dc 390 // clears, draws the instrcution and game rules page and refreshes the page
RexRoshan 0:99fa5a619081 391 pad.leds_off();
RexRoshan 1:45493d1d0689 392 lcd.clear();
RexRoshan 1:45493d1d0689 393 instruct.rules(lcd,pad);
RexRoshan 1:45493d1d0689 394 lcd.refresh();
RexRoshan 1:45493d1d0689 395
RexRoshan 0:99fa5a619081 396
RexRoshan 1:45493d1d0689 397 }
RexRoshan 7:574c66ebd8b0 398
RexRoshan 7:574c66ebd8b0 399 void mini_rules()
RexRoshan 7:574c66ebd8b0 400 {
RexRoshan 11:c3817962923d 401 // clears, draws the mini game rules page and refreshes the page
RexRoshan 7:574c66ebd8b0 402 lcd.clear();
RexRoshan 7:574c66ebd8b0 403 instruct.mini_rules(lcd,pad);
RexRoshan 7:574c66ebd8b0 404 lcd.refresh();
RexRoshan 7:574c66ebd8b0 405 }
RexRoshan 4:4d673fb2d9dc 406
RexRoshan 7:574c66ebd8b0 407 void mini_render()
RexRoshan 7:574c66ebd8b0 408 {
RexRoshan 7:574c66ebd8b0 409 // Mini Game
RexRoshan 7:574c66ebd8b0 410 // clear screen, re-draw and refresh
RexRoshan 7:574c66ebd8b0 411 lcd.clear();
RexRoshan 7:574c66ebd8b0 412 mini.draw_minigame(pad,lcd);
RexRoshan 7:574c66ebd8b0 413 lcd.refresh();
RexRoshan 7:574c66ebd8b0 414 }
RexRoshan 7:574c66ebd8b0 415
RexRoshan 7:574c66ebd8b0 416 void render_nothing()
RexRoshan 7:574c66ebd8b0 417 {
RexRoshan 7:574c66ebd8b0 418 lcd.clear();
RexRoshan 7:574c66ebd8b0 419 lcd.refresh();
RexRoshan 7:574c66ebd8b0 420 }
RexRoshan 7:574c66ebd8b0 421