Rex Raj / Mbed 2 deprecated el17rrrs

Dependencies:   mbed Gamepad N5110 mbed-rtos

Committer:
RexRoshan
Date:
Sat Apr 13 01:13:53 2019 +0000
Revision:
0:99fa5a619081
Child:
1:45493d1d0689
Mission 1 & 2 works perfectly

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 0:99fa5a619081 16 enum MissionState { Mission1,Mission1Pass,Mission1Fail,Mission2,Mission2Pass,Mission2Fail };
RexRoshan 0:99fa5a619081 17
RexRoshan 0:99fa5a619081 18 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3
RexRoshan 0:99fa5a619081 19 Gamepad pad;
RexRoshan 0:99fa5a619081 20 Music play;
RexRoshan 0:99fa5a619081 21 Instruction draw;
RexRoshan 0:99fa5a619081 22 Thread thread;
RexRoshan 0:99fa5a619081 23 Spacecraft game;
RexRoshan 0:99fa5a619081 24 GameEngine shoot;
RexRoshan 0:99fa5a619081 25
RexRoshan 0:99fa5a619081 26 void init();
RexRoshan 0:99fa5a619081 27 void welcome();
RexRoshan 0:99fa5a619081 28 void render();
RexRoshan 0:99fa5a619081 29 void render2();
RexRoshan 0:99fa5a619081 30 void intro();
RexRoshan 0:99fa5a619081 31 void instruction();
RexRoshan 0:99fa5a619081 32 //void games();
RexRoshan 0:99fa5a619081 33
RexRoshan 0:99fa5a619081 34
RexRoshan 0:99fa5a619081 35 int main()
RexRoshan 0:99fa5a619081 36 {
RexRoshan 0:99fa5a619081 37 // first need to initialise display
RexRoshan 0:99fa5a619081 38 int fps = 8;
RexRoshan 0:99fa5a619081 39 lcd.setContrast(0.4);
RexRoshan 0:99fa5a619081 40 // It will return 0 by default and a 1 when pressed i.e. cause a rising edge
RexRoshan 0:99fa5a619081 41 init();
RexRoshan 0:99fa5a619081 42 // 0.4 appears to be a good starting point
RexRoshan 0:99fa5a619081 43 thread.start(welcome);
RexRoshan 0:99fa5a619081 44 // intro();
RexRoshan 0:99fa5a619081 45 thread.terminate();
RexRoshan 0:99fa5a619081 46 instruction();
RexRoshan 0:99fa5a619081 47 render();
RexRoshan 0:99fa5a619081 48 wait(1.0f/fps);
RexRoshan 0:99fa5a619081 49 MissionState currentState = Mission1;
RexRoshan 0:99fa5a619081 50
RexRoshan 0:99fa5a619081 51 while((currentState != Mission2Pass) && (pad.check_event(Gamepad::A_PRESSED) == false)) {
RexRoshan 0:99fa5a619081 52
RexRoshan 0:99fa5a619081 53 switch(currentState){
RexRoshan 0:99fa5a619081 54 case Mission1:
RexRoshan 0:99fa5a619081 55 shoot.read_input(pad);
RexRoshan 0:99fa5a619081 56 shoot.update(pad,lcd);
RexRoshan 0:99fa5a619081 57 render();
RexRoshan 0:99fa5a619081 58 wait(1.0f/fps);
RexRoshan 0:99fa5a619081 59 if(shoot.get_game_stage() == 1){
RexRoshan 0:99fa5a619081 60 currentState = Mission1Fail;
RexRoshan 0:99fa5a619081 61 break;
RexRoshan 0:99fa5a619081 62 }
RexRoshan 0:99fa5a619081 63 else if(shoot.get_game_stage() == 2){
RexRoshan 0:99fa5a619081 64 currentState = Mission1Pass;
RexRoshan 0:99fa5a619081 65 break;
RexRoshan 0:99fa5a619081 66 } else {
RexRoshan 0:99fa5a619081 67 currentState = Mission1;
RexRoshan 0:99fa5a619081 68 }
RexRoshan 0:99fa5a619081 69 break;
RexRoshan 0:99fa5a619081 70 case Mission1Fail:
RexRoshan 0:99fa5a619081 71 lcd.clear();
RexRoshan 0:99fa5a619081 72 lcd.drawSprite(6,5,42,73,(int *)mission_one_failure);
RexRoshan 0:99fa5a619081 73 lcd.refresh();
RexRoshan 0:99fa5a619081 74 if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 0:99fa5a619081 75 currentState = Mission1;
RexRoshan 0:99fa5a619081 76 shoot.restart_game_stage();
RexRoshan 0:99fa5a619081 77 init();
RexRoshan 0:99fa5a619081 78 }
RexRoshan 0:99fa5a619081 79 break;
RexRoshan 0:99fa5a619081 80 case Mission1Pass:
RexRoshan 0:99fa5a619081 81 lcd.clear();
RexRoshan 0:99fa5a619081 82 lcd.drawSprite(0,0,48,84,(int *)mission_one);
RexRoshan 0:99fa5a619081 83 lcd.refresh();
RexRoshan 0:99fa5a619081 84 if (pad.check_event(Gamepad::A_PRESSED) == true){
RexRoshan 0:99fa5a619081 85 currentState = Mission2;
RexRoshan 0:99fa5a619081 86 shoot.restart_game_stage();
RexRoshan 0:99fa5a619081 87 }
RexRoshan 0:99fa5a619081 88 break;
RexRoshan 0:99fa5a619081 89 case Mission2:
RexRoshan 0:99fa5a619081 90 shoot.read_input(pad);
RexRoshan 0:99fa5a619081 91 shoot.update2(pad,lcd);
RexRoshan 0:99fa5a619081 92 render2();
RexRoshan 0:99fa5a619081 93 wait(1.0f/fps);
RexRoshan 0:99fa5a619081 94 if(shoot.get_game_stage() == 3 ){
RexRoshan 0:99fa5a619081 95 currentState = Mission2Fail;
RexRoshan 0:99fa5a619081 96 }
RexRoshan 0:99fa5a619081 97 if(shoot.get_game_stage() == 4){
RexRoshan 0:99fa5a619081 98 currentState = Mission2Pass;
RexRoshan 0:99fa5a619081 99 }
RexRoshan 0:99fa5a619081 100 break;
RexRoshan 0:99fa5a619081 101 case Mission2Fail:
RexRoshan 0:99fa5a619081 102 lcd.clear();
RexRoshan 0:99fa5a619081 103 lcd.drawSprite(6,5,42,73,(int *)mission_two_failure);
RexRoshan 0:99fa5a619081 104 lcd.refresh();
RexRoshan 0:99fa5a619081 105 if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 0:99fa5a619081 106 currentState = Mission1;
RexRoshan 0:99fa5a619081 107 shoot.restart_game_stage();
RexRoshan 0:99fa5a619081 108 init();
RexRoshan 0:99fa5a619081 109 }
RexRoshan 0:99fa5a619081 110 break;
RexRoshan 0:99fa5a619081 111 case Mission2Pass:
RexRoshan 0:99fa5a619081 112 lcd.clear();
RexRoshan 0:99fa5a619081 113 lcd.drawSprite(0,0,48,84,(int *)mission_two);
RexRoshan 0:99fa5a619081 114 lcd.refresh();
RexRoshan 0:99fa5a619081 115 break;
RexRoshan 0:99fa5a619081 116 // case Mission3:
RexRoshan 0:99fa5a619081 117 // shoot.read_input(pad);
RexRoshan 0:99fa5a619081 118 // shoot.update3(pad,lcd);
RexRoshan 0:99fa5a619081 119 // render3();
RexRoshan 0:99fa5a619081 120 // if(_stage_three == false ){
RexRoshan 0:99fa5a619081 121 // currentState = Mission3Fail;
RexRoshan 0:99fa5a619081 122 // }
RexRoshan 0:99fa5a619081 123 // if(_stage_four == true){
RexRoshan 0:99fa5a619081 124 // currentState = Mission3Pass;
RexRoshan 0:99fa5a619081 125 // }
RexRoshan 0:99fa5a619081 126 // break;
RexRoshan 0:99fa5a619081 127 // case Mission3Fail:
RexRoshan 0:99fa5a619081 128 // lcd.clear();
RexRoshan 0:99fa5a619081 129 // lcd.drawSprite(6,5,42,73,(int *)mission_three_failure);
RexRoshan 0:99fa5a619081 130 // lcd.refresh();
RexRoshan 0:99fa5a619081 131 // if (pad.check_event(Gamepad::B_PRESSED) == true){
RexRoshan 0:99fa5a619081 132 // currentState = Mission1;
RexRoshan 0:99fa5a619081 133 // }
RexRoshan 0:99fa5a619081 134 // break;
RexRoshan 0:99fa5a619081 135 // case Mission3Pass:
RexRoshan 0:99fa5a619081 136 // lcd.clear();
RexRoshan 0:99fa5a619081 137 // lcd.drawSprite(0,0,48,84,(int *)mission_three);
RexRoshan 0:99fa5a619081 138 // lcd.refresh();
RexRoshan 0:99fa5a619081 139 // break;
RexRoshan 0:99fa5a619081 140 }
RexRoshan 0:99fa5a619081 141 }
RexRoshan 0:99fa5a619081 142 }
RexRoshan 0:99fa5a619081 143
RexRoshan 0:99fa5a619081 144
RexRoshan 0:99fa5a619081 145 void init(){
RexRoshan 0:99fa5a619081 146 // need to initialise LCD and Gamepad
RexRoshan 0:99fa5a619081 147 lcd.init();
RexRoshan 0:99fa5a619081 148 pad.init();
RexRoshan 0:99fa5a619081 149 shoot.init(WIDTH/12,HEIGHT/2-5,12,4,12,10,3,2,4);
RexRoshan 0:99fa5a619081 150
RexRoshan 0:99fa5a619081 151 }
RexRoshan 0:99fa5a619081 152
RexRoshan 0:99fa5a619081 153 void render()
RexRoshan 0:99fa5a619081 154 {
RexRoshan 0:99fa5a619081 155 // clear screen, re-draw and refresh
RexRoshan 0:99fa5a619081 156 lcd.clear();
RexRoshan 0:99fa5a619081 157 shoot.draw(pad,lcd);
RexRoshan 0:99fa5a619081 158 lcd.refresh();
RexRoshan 0:99fa5a619081 159 }
RexRoshan 0:99fa5a619081 160
RexRoshan 0:99fa5a619081 161 void render2()
RexRoshan 0:99fa5a619081 162 {
RexRoshan 0:99fa5a619081 163 // clear screen, re-draw and refresh
RexRoshan 0:99fa5a619081 164 lcd.clear();
RexRoshan 0:99fa5a619081 165 shoot.draw2(pad,lcd);
RexRoshan 0:99fa5a619081 166 lcd.refresh();
RexRoshan 0:99fa5a619081 167 }
RexRoshan 0:99fa5a619081 168
RexRoshan 0:99fa5a619081 169 void welcome() {
RexRoshan 0:99fa5a619081 170
RexRoshan 0:99fa5a619081 171 lcd.drawSprite(6,0,48,71,(int *)screen);
RexRoshan 0:99fa5a619081 172
RexRoshan 0:99fa5a619081 173 lcd.refresh();
RexRoshan 0:99fa5a619081 174
RexRoshan 0:99fa5a619081 175 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
RexRoshan 0:99fa5a619081 176 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 177 pad.leds_on();
RexRoshan 0:99fa5a619081 178 lcd.drawSprite(21,43,5,40,(int *)start);
RexRoshan 0:99fa5a619081 179 lcd.refresh();
RexRoshan 0:99fa5a619081 180 Thread::wait(800);
RexRoshan 0:99fa5a619081 181 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 182 pad.leds_off();
RexRoshan 0:99fa5a619081 183 lcd.drawSprite(21,43,5,40,(int *)start2);
RexRoshan 0:99fa5a619081 184 lcd.refresh();
RexRoshan 0:99fa5a619081 185 Thread::wait(800);
RexRoshan 0:99fa5a619081 186 if(pad.check_event(Gamepad::START_PRESSED) == true){break;}
RexRoshan 0:99fa5a619081 187
RexRoshan 0:99fa5a619081 188 }
RexRoshan 0:99fa5a619081 189 pad.leds_off();
RexRoshan 0:99fa5a619081 190 }
RexRoshan 0:99fa5a619081 191
RexRoshan 0:99fa5a619081 192 void intro() {
RexRoshan 0:99fa5a619081 193 play.intro_song(pad);
RexRoshan 0:99fa5a619081 194 }
RexRoshan 0:99fa5a619081 195
RexRoshan 0:99fa5a619081 196 void instruction(){
RexRoshan 0:99fa5a619081 197
RexRoshan 0:99fa5a619081 198 pad.leds_off();
RexRoshan 0:99fa5a619081 199 draw.instruction(lcd,pad);
RexRoshan 0:99fa5a619081 200 draw.instruction2(lcd,pad);
RexRoshan 0:99fa5a619081 201 draw.instruction3(lcd,pad);
RexRoshan 0:99fa5a619081 202 draw.instruction4(lcd,pad);
RexRoshan 0:99fa5a619081 203 draw.instruction5(lcd,pad);
RexRoshan 0:99fa5a619081 204 draw.instruction6(lcd,pad);
RexRoshan 0:99fa5a619081 205 draw.instruction7(lcd,pad);
RexRoshan 0:99fa5a619081 206
RexRoshan 0:99fa5a619081 207 }
RexRoshan 0:99fa5a619081 208
RexRoshan 0:99fa5a619081 209 //void games(){
RexRoshan 0:99fa5a619081 210 // lcd.clear();
RexRoshan 0:99fa5a619081 211 // game.background(lcd);
RexRoshan 0:99fa5a619081 212 // game.character(lcd);
RexRoshan 0:99fa5a619081 213 // game.enemy(lcd);
RexRoshan 0:99fa5a619081 214 // game.move_update(pad.get_direction(), pad.get_mag());
RexRoshan 0:99fa5a619081 215 // lcd.refresh();
RexRoshan 0:99fa5a619081 216 //}
RexRoshan 0:99fa5a619081 217