Stick_Runner
Dependencies: FXOS8700CQ Gamepad N5110 SDFileSystem mbed
Fork of Stick_Runner by
main.cpp
- Committer:
- el15ss
- Date:
- 2017-04-28
- Revision:
- 0:12cfe63faa6a
- Child:
- 1:db9ff66f67c8
File content as of revision 0:12cfe63faa6a:
///////// pre-processor directives //////// #include "mbed.h" #include "Gamepad.h" #include "N5110.h" #include "Character.h" #include "Obstacles.h" #include "Gems.h" #include <iostream> #define OBS 8 #define GEMS 4 int i,j; /////////////// structs ///////////////// struct UserInput { Direction d; float mag; }; /////////////// objects /////////////// N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); Gamepad pad; Character c; Obstacles obstacle[OBS]; Gems gems[GEMS]; ///////////// prototypes /////////////// void init(); void update_game(UserInput input); void render(); void welcome(); void menu(); void over(); void Instructions(); ///////////// functions //////////////// int main() { int fps = 8; // frames per second init(); welcome(); wait(1.0f/fps); render(); // draw initial frame wait(1.0f/fps); // game loop - read input, update the game state and render the display while (1) { c.update(pad.get_direction(),pad.get_mag()); if(pad.check_event(Gamepad::BACK_PRESSED)) { lcd.clear(); lcd.refresh(); //lcd.printString(" Game Paused! ",0,1); //lcd.printString("Press Start to continue ",0,4); //lcd.refresh(); // welcome(); menu(); } for(i=0;i<OBS;i++) { obstacle[i].Obstacles_Status(obstacle[i].get_pos()); if(!obstacle[i].get_status()) { obstacle[i].init(); } c.Character_Status(obstacle[i].get_pos()); } for(j=0;j<GEMS;j++) { gems[j].Gems_Status(gems[i].get_pos()); if(!gems[j].get_status()) { gems[j].init(); } gems[j].Gems_Score(gems[j].get_pos()); } i =0; for(i=0;i<OBS;i++) { obstacle[i].update(); } j =0; for(j=0;j<GEMS;j++) { gems[j].update(); } render(); wait(1.0f/fps); } } void init() { // need to initialise LCD and Gamepad lcd.init(); pad.init(); c.init(); for(i=0;i<OBS;i++) { obstacle[i].init(); } for(j=0;j<GEMS;j++) { gems[j].init(); } } void render() { // clear screen, re-draw and refresh lcd.clear(); if(!c.get_status()) { over(); } if(c.get_status()) { c.draw(lcd); } //obstacle[i].draw(lcd); for(i=0;i<OBS;i++) { if(obstacle[i].get_status()) { obstacle[i].draw(lcd); } } for(j=0;j<GEMS;j++) { if(gems[j].get_status()) { gems[j].draw(lcd); } } lcd.refresh(); } void welcome() { lcd.printString("Stick Runner! ",0,1); lcd.printString(" Press Start ",0,4); lcd.refresh(); pad.tone(1500.0,0.5); pad.tone(1500.0,0.5); // wait flashing LEDs until start button is pressed while ( pad.check_event(Gamepad::START_PRESSED) == false) { pad.leds_on(); wait(0.1); pad.leds_off(); wait(0.1); } menu(); } void over() { lcd.clear(); lcd.printString(" GAME ",0,1); lcd.printString(" OVER!!!!! ",0,2); lcd.printString(" PRESS START ",0,4); lcd.refresh(); // wait flashing LEDs until start button is pressed while ( pad.check_event(Gamepad::START_PRESSED) == false) { pad.leds_on(); pad.tone(1000.0,0.5); wait(0.1); pad.leds_off(); pad.tone(1000.0,0.5); wait(0.1); if( pad.check_event(Gamepad::START_PRESSED)) { main(); wait(1); } } } void menu() { int fps =8; bool i = true; while(i == true) { lcd.printString(" Menu ",0,1); lcd.printString("A)New Game ",0,2); lcd.printString("B)Continue ",0,3); lcd.printString("X)Instructions ",0,4); lcd.refresh(); // wait flashing LEDs until start button is pressed if( pad.check_event(Gamepad::A_PRESSED) ) { pad.tone(1000.0,0.5); i = false; lcd.clear(); lcd.refresh(); //break; } else if( pad.check_event(Gamepad::B_PRESSED) ) { //lcd.clear(); pad.tone(1000.0,0.5); i = false; lcd.refresh(); } else if( pad.check_event(Gamepad::X_PRESSED) ) { pad.tone(1000.0,0.5); Instructions(); wait(100.0f/fps); i = false; } } } void Instructions() { bool i = true; lcd.clear(); lcd.printString("INSTURCTIONS: ",0,1); lcd.printString("Collect the ",0,2); lcd.printString("gems to get ",0,3); lcd.printString("points ",0,4); lcd.refresh(); while(i == true){ if( pad.check_event(Gamepad::BACK_PRESSED) ) { pad.tone(1000.0,0.5); i = false; menu(); } } }