Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:8fb740fa6356
- Child:
- 1:679d7ada8de7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat May 11 14:58:43 2019 +0000 @@ -0,0 +1,129 @@ +#include "mbed.h" +#include "N5110.h" +#include "Gamepad.h" +#include "MainTank.h" +#include "TankEngine.h" + +/* +ELEC2645 Embedded Systems Project +School of Electronic & Electrical Engineering +University of Leeds +Name:Pengxi Huang +Username:Pengxi Huang +Student ID Number:201199000 +Date:11.05.2019 +*/ + +struct UserInput { + Direction d; + float mag; +}; + +void init(); +void update_game(UserInput input); +void render(); +void welcome(); +void end_game(int score); +void print_level(); +int quite(); + +N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); +Gamepad pad; +TankEngine Tank; +//main function +int main() +{ + int fps = 6;//frame per second + int life = 0; + int score = 0; + wait(1.0f/fps); + + //game loop + while(1){ + init();//init everthing + welcome();//print the starting menu + render();//draw the inital image + while(1) { + Tank.read_input(pad); + Tank.update(pad); + render(); + life = Tank.get_life(); + score = Tank.hello_score(); + + wait(1.0f/fps); + if (quite() == 1)//quite to starting menu if back been pressed + { + break; + } + if (life == 0)//if lose print end menu and start again + { + init(); + end_game(score); + wait(3); + break; + } + } + } +} + +//init everthing that needs in the game +void init() +{ + //initialise LCD and Gamepad + lcd.init(); + pad.init(); + lcd.setContrast(0.5); + + // initialise the tank to start the game + Tank.init(); + +} + +//update the tank iamge in the lcd +void render() +{ + // clear screen, re-draw and refresh + lcd.clear(); + Tank.Draw(lcd); + lcd.refresh(); +} + +//start menu with game name +void welcome() +{ + lcd.printString("Escape rocket ",0,1); + 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(); + wait(0.1); + pad.leds_off(); + wait(0.1); + } + } + + // signal of quiting to start menu whenever the back is pressed + int quite() + { + int quite = 0; + //vheck the status od back button + while ( pad.check_event(Gamepad::BACK_PRESSED) == true) { + quite = 1; + } + return quite; + } + + // end menu when palyer lost all life in the game + void end_game(int score) + { + char buffer1[13]; + sprintf(buffer1,"%2d",score); + lcd.printString(" Good Game ",0,1); + lcd.printString(" Final score is ",0,3); + //print its final score + lcd.printString(buffer1,35,4); + lcd.refresh(); + } + \ No newline at end of file