![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Stick_Runner
Dependencies: FXOS8700CQ Gamepad N5110 SDFileSystem mbed
Diff: main.cpp
- Revision:
- 5:1bf7c83f86cc
- Parent:
- 4:2fdafb53eac2
- Child:
- 6:bf601a65cb27
--- a/main.cpp Wed May 03 18:00:37 2017 +0000 +++ b/main.cpp Thu May 04 09:50:18 2017 +0000 @@ -24,7 +24,8 @@ char score[50]; //Structs -struct UserInput { +struct UserInput +{ Direction d; float mag; }; @@ -58,7 +59,7 @@ /* Intialization */ init(); -/* Drawing the intial frame */ +/* Drawing the initial frame */ welcome(); } @@ -92,7 +93,8 @@ //Funstion to display the Welcome page -void welcome() { +void welcome() +{ @@ -119,11 +121,12 @@ //Function to display the Menu page -void menu() { - //int fps =8; - bool i = true; +void menu() +{ + - lcd.clear(); + + lcd.clear(); lcd.printString(" Menu ",0,0); lcd.printString("A)New Game ",0,2); lcd.printString("B)Continue ",0,3); @@ -133,54 +136,62 @@ lcd.refresh(); - while(i == true) { - // wait flashing LEDs until start button is pressed - //Condition to start a new game - if( pad.check_event(Gamepad::A_PRESSED) ) { - //pad.tone(1000.0,0.5); - i = false; + while(1) + { + // wait flashing LEDs until start button is pressed + //Condition to start a new game + if( pad.check_event(Gamepad::A_PRESSED) ) + { + //pad.tone(1000.0,0.5); + - //Clear, refresh and intialize the game again so we can start a new game - lcd.clear(); - lcd.refresh(); - init(); - stickRunner(); + //Clear, refresh and intialize the game again so we can start a new game + lcd.clear(); + lcd.refresh(); + init(); + stickRunner(); - //break; - } + + } - //To continue the same game - else if( pad.check_event(Gamepad::B_PRESSED) ) { - //lcd.clear(); - // pad.tone(1000.0,0.5); - i = false; + //To continue the same game + else if( pad.check_event(Gamepad::B_PRESSED) ) + { + + // pad.tone(1000.0,0.5); + - //Simply refreshes the page and continues from where the user left the game - // as the intialize function init() is not called again - lcd.refresh(); - stickRunner(); + //Simply refreshes the page and continues from where the user left the game + // as the intialize function init() is not called again + lcd.refresh(); + stickRunner(); - } + } - //To read the game instructions - else if( pad.check_event(Gamepad::X_PRESSED) ) { - // pad.tone(1000.0,0.5); - Instructions(); + //To read the game instructions + else if( pad.check_event(Gamepad::X_PRESSED) ) + { + // pad.tone(1000.0,0.5); + Instructions(); - i = false; - } + + } - //To see the game high score - else if( pad.check_event(Gamepad::Y_PRESSED) ) { - //pad.tone(1000.0,0.5); - displayHighScore(); + //To see the game high score + else if( pad.check_event(Gamepad::Y_PRESSED) ) + { + //pad.tone(1000.0,0.5); + displayHighScore(); - i = false; - } + + + } + + sleep(); - } + } } @@ -191,12 +202,13 @@ { int fps = 8; - render(); - wait(1.0f/fps); + render(); + wait(1.0f/fps); /* Main game loop to read input, render the display and update the game state */ - while (1) { + while (1) + { //As long as the character survives update the score counter++; @@ -225,7 +237,7 @@ //To check whether the character has been hit by an obstacle by comparing the position of each obstacle // relative to the character - c.characterStatus(obstacle[i].getObstaclePos()); + c.characterStatus(obstacle[i].getObstaclePos()); } @@ -288,10 +300,10 @@ c.draw(lcd); } - if(c.getCharacterStatus() == false) - { - over(); - } + if(c.getCharacterStatus() == false) + { + over(); + } //Draws the obstacles if the status returned is true @@ -305,7 +317,7 @@ } //Draws the gems if the status returned is true - for(j=0;j<No_GEMS;j++) + for(j=0;j<No_GEMS;j++) { if(gems[j].getGemStatus()) { @@ -314,13 +326,9 @@ } - } - - - lcd.refresh(); } @@ -328,13 +336,14 @@ //Function to display end of game and also check whether the user got a new highscore and if not write it on the SD card -void over() { +void over() +{ //pad.tone(1000.0,0.5); pad.init(); - // lcd.init(); - // lcd.clear(); + // lcd.init(); + // lcd.clear(); - //Mounting on the SD card to read/write in it + //Mounting on the SD card to read/write in it //sd.mount(); //Converting the counter into a string 'score' to display on the lcd @@ -353,25 +362,26 @@ file = fopen("/sd/scoreFile.txt", "w"); fprintf(file,"%d",counter); fclose(file); - lcd.printString("HIGH SCORE",0,3); + lcd.printString("HIGH SCORE",0,3); } //if not empty compare against the exsisting high score and display whether the user has made a new high score - else{ - fscanf(file,"%d", &highScore); - fclose(file); + else + { + fscanf(file,"%d", &highScore); + fclose(file); - if(counter>highScore) - { + if(counter>highScore) + { - file = fopen("/sd/scoreFile.txt", "w"); - fprintf(file,"%d",counter); - fclose(file); - lcd.printString("HIGH SCORE",0,3); - } + file = fopen("/sd/scoreFile.txt", "w"); + fprintf(file,"%d",counter); + fclose(file); + lcd.printString("HIGH SCORE",0,3); + } - }*/ + }*/ lcd.printString(" PRESS START ",0,5); @@ -380,17 +390,19 @@ //sd.unmount(); //Takes the user back to the main for a new game - while ( pad.check_event(Gamepad::START_PRESSED) == false) { + 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); + // pad.tone(1000.0,0.5); wait(0.1); - if( pad.check_event(Gamepad::START_PRESSED)) { + if( pad.check_event(Gamepad::START_PRESSED)) + { main(); wait(1); - } + } } } @@ -402,48 +414,53 @@ sd.mount(); lcd.clear(); - //Open file - file = fopen("/sd/scoreFile.txt", "r"); - if(file ==NULL) + //Open file + file = fopen("/sd/scoreFile.txt", "r"); + if(file ==NULL) { highScore = 0; } - else{ + else + { //Read the high score from the file - fscanf(file,"%d", &highScore); - fclose(file); + fscanf(file,"%d", &highScore); + fclose(file); - } + } //Convert highscore(int) to score(String) to print on the lcd sprintf (score, "High Score : %d",highScore); lcd.printString(score,0,2); lcd.printString(" START - reset ",0,4); lcd.printString(" BACK - menu ",0,5); - lcd.refresh(); - sd.unmount(); + lcd.refresh(); + sd.unmount(); - while(1) - { + while(1) + { //To reset the highscore - if( pad.check_event(Gamepad::START_PRESSED)) { - sd.mount(); - file = fopen("/sd/scoreFile.txt", "r"); - if(!file ==NULL) - { //Delete the file if it is empty + if( pad.check_event(Gamepad::START_PRESSED)) + { + sd.mount(); + file = fopen("/sd/scoreFile.txt", "r"); + if(!file ==NULL) + { + //Delete the file if it is empty fclose(file); - remove("/sd/scoreFile.txt"); + remove("/sd/scoreFile.txt"); } - sd.unmount(); - displayHighScore(); + sd.unmount(); + displayHighScore(); } + //Back to menu - if( pad.check_event(Gamepad::BACK_PRESSED)) { - menu(); + if( pad.check_event(Gamepad::BACK_PRESSED)) + { + menu(); } sleep(); @@ -458,8 +475,8 @@ //Function to display the Instructions for the game void Instructions() { - bool i = true; - lcd.clear(); + bool i = true; + lcd.clear(); lcd.printString("INSTURCTIONS: ",0,0); lcd.printString("Collect the ",0,2); lcd.printString("gems and dodge ",0,3); @@ -467,13 +484,15 @@ lcd.printString("to get points ",0,5); lcd.refresh(); - while(i == true){ + while(i == true) + { - if( pad.check_event(Gamepad::BACK_PRESSED) ) { + if( pad.check_event(Gamepad::BACK_PRESSED) ) + { //pad.tone(1000.0,0.5); - i = false; - menu(); - } + i = false; + menu(); + } } - } \ No newline at end of file +} \ No newline at end of file