Rex Raj / Mbed 2 deprecated el17rrrs

Dependencies:   mbed Gamepad N5110 mbed-rtos

Committer:
RexRoshan
Date:
Fri Apr 19 13:43:22 2019 +0000
Revision:
1:45493d1d0689
Parent:
0:99fa5a619081
Child:
2:b5c1bb7a39de
The Instruction page is not being drawn although the switch state works;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RexRoshan 0:99fa5a619081 1 #include "mbed.h"
RexRoshan 0:99fa5a619081 2 #include "N5110.h"
RexRoshan 0:99fa5a619081 3 #include "Gamepad.h"
RexRoshan 0:99fa5a619081 4 #include "Instruction.h"
RexRoshan 0:99fa5a619081 5 #include "Spacecraft.h"
RexRoshan 0:99fa5a619081 6 #include "GameEngine.h"
RexRoshan 0:99fa5a619081 7 #include "Solar.h"
RexRoshan 0:99fa5a619081 8 #include "Music.h"
RexRoshan 0:99fa5a619081 9 #include "rtos.h"
RexRoshan 0:99fa5a619081 10
RexRoshan 0:99fa5a619081 11 struct UserInput {
RexRoshan 0:99fa5a619081 12 Direction d;
RexRoshan 0:99fa5a619081 13 float mag;
RexRoshan 0:99fa5a619081 14 };
RexRoshan 0:99fa5a619081 15
RexRoshan 1:45493d1d0689 16 enum States { Life1,Life2,Life3,Life4,Life5,Life6,Life7,Life8,Life9,Life10,Life11 };
RexRoshan 1:45493d1d0689 17 enum MissionState {Mission1,Mission1Pass,Mission1Fail,Mission2,Mission2Pass,Mission2Fail,Mission3,Mission3Pass,Mission3Fail,Congratulations,Intro };
RexRoshan 0:99fa5a619081 18
RexRoshan 0:99fa5a619081 19 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3
RexRoshan 0:99fa5a619081 20 Gamepad pad;
RexRoshan 0:99fa5a619081 21 Music play;
RexRoshan 1:45493d1d0689 22 Instruction instruct;
RexRoshan 0:99fa5a619081 23 Thread thread;
RexRoshan 0:99fa5a619081 24 Spacecraft game;
RexRoshan 0:99fa5a619081 25 GameEngine shoot;
RexRoshan 0:99fa5a619081 26
RexRoshan 0:99fa5a619081 27 void init();
RexRoshan 0:99fa5a619081 28 void welcome();
RexRoshan 1:45493d1d0689 29 void rend();
RexRoshan 0:99fa5a619081 30 void render();
RexRoshan 0:99fa5a619081 31 void render2();
RexRoshan 1:45493d1d0689 32 void render3();
RexRoshan 0:99fa5a619081 33 void intro();
RexRoshan 0:99fa5a619081 34 void instruction();
RexRoshan 0:99fa5a619081 35 //void games();
RexRoshan 0:99fa5a619081 36
RexRoshan 0:99fa5a619081 37
RexRoshan 0:99fa5a619081 38 int main()
RexRoshan 0:99fa5a619081 39 {
RexRoshan 1:45493d1d0689 40 MissionState currentState = Mission2;
RexRoshan 0:99fa5a619081 41 // first need to initialise display
RexRoshan 0:99fa5a619081 42 int fps = 8;
RexRoshan 0:99fa5a619081 43 lcd.setContrast(0.4);
RexRoshan 0:99fa5a619081 44 // It will return 0 by default and a 1 when pressed i.e. cause a rising edge
RexRoshan 0:99fa5a619081 45 init();
RexRoshan 0:99fa5a619081 46 // 0.4 appears to be a good starting point
RexRoshan 1:45493d1d0689 47 // thread.start(welcome);
RexRoshan 1:45493d1d0689 48 // intro();
RexRoshan 1:45493d1d0689 49 // thread.terminate();
RexRoshan 0:99fa5a619081 50 instruction();
RexRoshan 0:99fa5a619081 51 render();
RexRoshan 1:45493d1d0689 52 wait(1.0f/fps);
RexRoshan 0:99fa5a619081 53
RexRoshan 1:45493d1d0689 54
RexRoshan 1:45493d1d0689 55 while(1) {
RexRoshan 0:99fa5a619081 56 switch(currentState){
RexRoshan 0:99fa5a619081 57 case Mission1:
RexRoshan 0:99fa5a619081 58 shoot.read_input(pad);
RexRoshan 0:99fa5a619081 59 shoot.update(pad,lcd);
RexRoshan 0:99fa5a619081 60 render();
RexRoshan 0:99fa5a619081 61 wait(1.0f/fps);
RexRoshan 0:99fa5a619081 62 if(shoot.get_game_stage() == 1){
RexRoshan 0:99fa5a619081 63 currentState = Mission1Fail;
RexRoshan 0:99fa5a619081 64 break;
RexRoshan 0:99fa5a619081 65 }
RexRoshan 0:99fa5a619081 66 else if(shoot.get_game_stage() == 2){
RexRoshan 0:99fa5a619081 67 currentState = Mission1Pass;
RexRoshan 0:99fa5a619081 68 break;
RexRoshan 0:99fa5a619081 69 } else {
RexRoshan 0:99fa5a619081 70 currentState = Mission1;
RexRoshan 0:99fa5a619081 71 }
RexRoshan 0:99fa5a619081 72 break;
RexRoshan 0:99fa5a619081 73 case Mission1Fail:
RexRoshan 0:99fa5a619081 74 lcd.clear();
RexRoshan 0:99fa5a619081 75 lcd.drawSprite(6,5,42,73,(int *)mission_one_failure);
RexRoshan 0:99fa5a619081 76 lcd.refresh();
RexRoshan 0:99fa5a619081 77 if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 0:99fa5a619081 78 currentState = Mission1;
RexRoshan 0:99fa5a619081 79 shoot.restart_game_stage();
RexRoshan 0:99fa5a619081 80 init();
RexRoshan 0:99fa5a619081 81 }
RexRoshan 0:99fa5a619081 82 break;
RexRoshan 0:99fa5a619081 83 case Mission1Pass:
RexRoshan 0:99fa5a619081 84 lcd.clear();
RexRoshan 0:99fa5a619081 85 lcd.drawSprite(0,0,48,84,(int *)mission_one);
RexRoshan 0:99fa5a619081 86 lcd.refresh();
RexRoshan 0:99fa5a619081 87 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 0:99fa5a619081 88 currentState = Mission2;
RexRoshan 0:99fa5a619081 89 shoot.restart_game_stage();
RexRoshan 0:99fa5a619081 90 }
RexRoshan 0:99fa5a619081 91 break;
RexRoshan 0:99fa5a619081 92 case Mission2:
RexRoshan 0:99fa5a619081 93 shoot.read_input(pad);
RexRoshan 0:99fa5a619081 94 shoot.update2(pad,lcd);
RexRoshan 0:99fa5a619081 95 render2();
RexRoshan 0:99fa5a619081 96 wait(1.0f/fps);
RexRoshan 0:99fa5a619081 97 if(shoot.get_game_stage() == 3 ){
RexRoshan 0:99fa5a619081 98 currentState = Mission2Fail;
RexRoshan 0:99fa5a619081 99 }
RexRoshan 0:99fa5a619081 100 if(shoot.get_game_stage() == 4){
RexRoshan 0:99fa5a619081 101 currentState = Mission2Pass;
RexRoshan 0:99fa5a619081 102 }
RexRoshan 0:99fa5a619081 103 break;
RexRoshan 0:99fa5a619081 104 case Mission2Fail:
RexRoshan 0:99fa5a619081 105 lcd.clear();
RexRoshan 0:99fa5a619081 106 lcd.drawSprite(6,5,42,73,(int *)mission_two_failure);
RexRoshan 0:99fa5a619081 107 lcd.refresh();
RexRoshan 0:99fa5a619081 108 if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 0:99fa5a619081 109 currentState = Mission1;
RexRoshan 0:99fa5a619081 110 shoot.restart_game_stage();
RexRoshan 0:99fa5a619081 111 init();
RexRoshan 0:99fa5a619081 112 }
RexRoshan 0:99fa5a619081 113 break;
RexRoshan 0:99fa5a619081 114 case Mission2Pass:
RexRoshan 0:99fa5a619081 115 lcd.clear();
RexRoshan 0:99fa5a619081 116 lcd.drawSprite(0,0,48,84,(int *)mission_two);
RexRoshan 0:99fa5a619081 117 lcd.refresh();
RexRoshan 1:45493d1d0689 118 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 1:45493d1d0689 119 currentState = Mission3;
RexRoshan 1:45493d1d0689 120 shoot.restart_game_stage();
RexRoshan 1:45493d1d0689 121 init();
RexRoshan 1:45493d1d0689 122 }
RexRoshan 0:99fa5a619081 123 break;
RexRoshan 1:45493d1d0689 124 case Mission3:
RexRoshan 1:45493d1d0689 125 shoot.read_input(pad);
RexRoshan 1:45493d1d0689 126 shoot.update3(pad,lcd);
RexRoshan 1:45493d1d0689 127 render3();
RexRoshan 1:45493d1d0689 128 wait(1.0f/fps);
RexRoshan 1:45493d1d0689 129 if(shoot.get_game_stage() == 5 ){
RexRoshan 1:45493d1d0689 130 currentState = Mission3Fail;
RexRoshan 1:45493d1d0689 131 }
RexRoshan 1:45493d1d0689 132 if(shoot.get_game_stage() == 6){
RexRoshan 1:45493d1d0689 133 currentState = Mission3Pass;
RexRoshan 1:45493d1d0689 134 }
RexRoshan 1:45493d1d0689 135 break;
RexRoshan 1:45493d1d0689 136 case Mission3Fail:
RexRoshan 1:45493d1d0689 137 lcd.clear();
RexRoshan 1:45493d1d0689 138 lcd.drawSprite(6,5,42,73,(int *)mission_three_failure);
RexRoshan 1:45493d1d0689 139 lcd.refresh();
RexRoshan 1:45493d1d0689 140 if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 1:45493d1d0689 141 currentState = Mission1;
RexRoshan 1:45493d1d0689 142 shoot.restart_game_stage();
RexRoshan 1:45493d1d0689 143 init();
RexRoshan 1:45493d1d0689 144 }
RexRoshan 1:45493d1d0689 145 break;
RexRoshan 1:45493d1d0689 146 case Mission3Pass:
RexRoshan 1:45493d1d0689 147 lcd.clear();
RexRoshan 1:45493d1d0689 148 lcd.drawSprite(0,0,48,84,(int *)mission_three);
RexRoshan 1:45493d1d0689 149 lcd.refresh();
RexRoshan 1:45493d1d0689 150 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 1:45493d1d0689 151 currentState = Congratulations;
RexRoshan 1:45493d1d0689 152 }
RexRoshan 1:45493d1d0689 153 break;
RexRoshan 1:45493d1d0689 154 case Congratulations:
RexRoshan 1:45493d1d0689 155 for(int i = 0; i < 3; i++){
RexRoshan 1:45493d1d0689 156 lcd.clear();
RexRoshan 1:45493d1d0689 157 lcd.drawSprite(0,0,48,84,(int *) congrats);
RexRoshan 1:45493d1d0689 158 lcd.drawSprite(0,23,25,84,(int *)party_popper);
RexRoshan 1:45493d1d0689 159 lcd.refresh();
RexRoshan 1:45493d1d0689 160 wait(0.5);
RexRoshan 1:45493d1d0689 161 lcd.clear();
RexRoshan 1:45493d1d0689 162 lcd.drawSprite(0,0,48,84,(int *) congrats);
RexRoshan 1:45493d1d0689 163 lcd.refresh();
RexRoshan 1:45493d1d0689 164 wait(0.5);
RexRoshan 1:45493d1d0689 165 }
RexRoshan 1:45493d1d0689 166 while(pad.check_event(Gamepad::A_PRESSED) == false){
RexRoshan 1:45493d1d0689 167 lcd.clear();
RexRoshan 1:45493d1d0689 168 lcd.drawSprite(0,0,48,84,(int *) congrats);
RexRoshan 1:45493d1d0689 169 lcd.drawSprite(25,28,13,36,(int *) exit1);
RexRoshan 1:45493d1d0689 170 lcd.refresh();
RexRoshan 1:45493d1d0689 171 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 1:45493d1d0689 172 currentState = Intro;
RexRoshan 1:45493d1d0689 173 break;
RexRoshan 1:45493d1d0689 174 }
RexRoshan 1:45493d1d0689 175 }
RexRoshan 1:45493d1d0689 176 break;
RexRoshan 1:45493d1d0689 177 case Intro:
RexRoshan 1:45493d1d0689 178 int fps = 8;
RexRoshan 1:45493d1d0689 179 lcd.setContrast(0.4);
RexRoshan 1:45493d1d0689 180 // It will return 0 by default and a 1 when pressed i.e. cause a rising edge
RexRoshan 1:45493d1d0689 181 init();
RexRoshan 1:45493d1d0689 182 // 0.4 appears to be a good starting point
RexRoshan 1:45493d1d0689 183 thread.start(welcome);
RexRoshan 1:45493d1d0689 184 intro();
RexRoshan 1:45493d1d0689 185 thread.terminate();
RexRoshan 1:45493d1d0689 186 instruction();
RexRoshan 1:45493d1d0689 187 render();
RexRoshan 1:45493d1d0689 188 wait(1.0f/fps);
RexRoshan 1:45493d1d0689 189 currentState = Mission1;
RexRoshan 1:45493d1d0689 190 break;
RexRoshan 0:99fa5a619081 191 }
RexRoshan 0:99fa5a619081 192 }
RexRoshan 0:99fa5a619081 193 }
RexRoshan 0:99fa5a619081 194
RexRoshan 0:99fa5a619081 195
RexRoshan 0:99fa5a619081 196 void init(){
RexRoshan 0:99fa5a619081 197 // need to initialise LCD and Gamepad
RexRoshan 0:99fa5a619081 198 lcd.init();
RexRoshan 0:99fa5a619081 199 pad.init();
RexRoshan 1:45493d1d0689 200 shoot.init(WIDTH/12,HEIGHT/2-5,12,4,12,10,20,7,3,2,4);
RexRoshan 0:99fa5a619081 201
RexRoshan 0:99fa5a619081 202 }
RexRoshan 0:99fa5a619081 203
RexRoshan 1:45493d1d0689 204 void rend()
RexRoshan 1:45493d1d0689 205 {
RexRoshan 1:45493d1d0689 206 lcd.clear();
RexRoshan 1:45493d1d0689 207 }
RexRoshan 0:99fa5a619081 208 void render()
RexRoshan 0:99fa5a619081 209 {
RexRoshan 0:99fa5a619081 210 // clear screen, re-draw and refresh
RexRoshan 0:99fa5a619081 211 lcd.clear();
RexRoshan 0:99fa5a619081 212 shoot.draw(pad,lcd);
RexRoshan 0:99fa5a619081 213 lcd.refresh();
RexRoshan 0:99fa5a619081 214 }
RexRoshan 0:99fa5a619081 215
RexRoshan 0:99fa5a619081 216 void render2()
RexRoshan 0:99fa5a619081 217 {
RexRoshan 0:99fa5a619081 218 // clear screen, re-draw and refresh
RexRoshan 0:99fa5a619081 219 lcd.clear();
RexRoshan 0:99fa5a619081 220 shoot.draw2(pad,lcd);
RexRoshan 0:99fa5a619081 221 lcd.refresh();
RexRoshan 0:99fa5a619081 222 }
RexRoshan 0:99fa5a619081 223
RexRoshan 1:45493d1d0689 224 void render3()
RexRoshan 1:45493d1d0689 225 {
RexRoshan 1:45493d1d0689 226 // clear screen, re-draw and refresh
RexRoshan 1:45493d1d0689 227 lcd.clear();
RexRoshan 1:45493d1d0689 228 shoot.draw3(pad,lcd);
RexRoshan 1:45493d1d0689 229 lcd.refresh();
RexRoshan 1:45493d1d0689 230 }
RexRoshan 1:45493d1d0689 231
RexRoshan 0:99fa5a619081 232 void welcome() {
RexRoshan 0:99fa5a619081 233
RexRoshan 0:99fa5a619081 234 lcd.drawSprite(6,0,48,71,(int *)screen);
RexRoshan 0:99fa5a619081 235
RexRoshan 0:99fa5a619081 236 lcd.refresh();
RexRoshan 0:99fa5a619081 237
RexRoshan 0:99fa5a619081 238 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
RexRoshan 0:99fa5a619081 239 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 240 pad.leds_on();
RexRoshan 0:99fa5a619081 241 lcd.drawSprite(21,43,5,40,(int *)start);
RexRoshan 0:99fa5a619081 242 lcd.refresh();
RexRoshan 0:99fa5a619081 243 Thread::wait(800);
RexRoshan 0:99fa5a619081 244 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 245 pad.leds_off();
RexRoshan 0:99fa5a619081 246 lcd.drawSprite(21,43,5,40,(int *)start2);
RexRoshan 0:99fa5a619081 247 lcd.refresh();
RexRoshan 0:99fa5a619081 248 Thread::wait(800);
RexRoshan 0:99fa5a619081 249 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 250
RexRoshan 0:99fa5a619081 251 }
RexRoshan 0:99fa5a619081 252 pad.leds_off();
RexRoshan 0:99fa5a619081 253 }
RexRoshan 0:99fa5a619081 254
RexRoshan 0:99fa5a619081 255 void intro() {
RexRoshan 0:99fa5a619081 256 play.intro_song(pad);
RexRoshan 0:99fa5a619081 257 }
RexRoshan 0:99fa5a619081 258
RexRoshan 0:99fa5a619081 259 void instruction(){
RexRoshan 0:99fa5a619081 260
RexRoshan 0:99fa5a619081 261 pad.leds_off();
RexRoshan 1:45493d1d0689 262 lcd.clear();
RexRoshan 1:45493d1d0689 263 instruct.rules(lcd,pad);
RexRoshan 1:45493d1d0689 264 lcd.refresh();
RexRoshan 1:45493d1d0689 265
RexRoshan 0:99fa5a619081 266
RexRoshan 1:45493d1d0689 267 }
RexRoshan 1:45493d1d0689 268 //draw.instruction3(lcd,pad);
RexRoshan 1:45493d1d0689 269 //draw.instruction4(lcd,pad);
RexRoshan 1:45493d1d0689 270 //draw.instruction5(lcd,pad);
RexRoshan 1:45493d1d0689 271 //draw.instruction6(lcd,pad);
RexRoshan 1:45493d1d0689 272 //draw.instruction7(lcd,pad);
RexRoshan 1:45493d1d0689 273
RexRoshan 0:99fa5a619081 274
RexRoshan 0:99fa5a619081 275 //void games(){
RexRoshan 0:99fa5a619081 276 // lcd.clear();
RexRoshan 0:99fa5a619081 277 // game.background(lcd);
RexRoshan 0:99fa5a619081 278 // game.character(lcd);
RexRoshan 0:99fa5a619081 279 // game.enemy(lcd);
RexRoshan 0:99fa5a619081 280 // game.move_update(pad.get_direction(), pad.get_mag());
RexRoshan 0:99fa5a619081 281 // lcd.refresh();
RexRoshan 0:99fa5a619081 282 //}
RexRoshan 0:99fa5a619081 283