Harry Rance 200925395 Embedded Systems Project

Dependencies:   mbed

Committer:
harryrance
Date:
Wed May 03 16:24:01 2017 +0000
Revision:
6:dca8b5e2ebe5
Parent:
4:107bdbbf78bf
Full project complete with Doxygen commenting throughout; ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
harryrance 0:c9bf674fe0c7 1 ////////// pre-processor directives //////////
harryrance 0:c9bf674fe0c7 2 #include "mbed.h"
harryrance 0:c9bf674fe0c7 3 #include "Gamepad.h"
harryrance 0:c9bf674fe0c7 4 #include "N5110.h"
harryrance 0:c9bf674fe0c7 5 #include "GameEngine.h"
harryrance 3:43970d8d642e 6 #include "Menu.h"
harryrance 0:c9bf674fe0c7 7
harryrance 1:95d7dd44bb0d 8 #define US_X 42
harryrance 0:c9bf674fe0c7 9 #define AA_X 2
harryrance 3:43970d8d642e 10 #define SPEED 1.8
harryrance 0:c9bf674fe0c7 11
harryrance 0:c9bf674fe0c7 12 ////////// structs //////////
harryrance 0:c9bf674fe0c7 13 struct UserInput {
harryrance 0:c9bf674fe0c7 14 Direction d;
harryrance 0:c9bf674fe0c7 15 float mag;
harryrance 0:c9bf674fe0c7 16 };
harryrance 0:c9bf674fe0c7 17
harryrance 0:c9bf674fe0c7 18 ////////// objects //////////
harryrance 0:c9bf674fe0c7 19 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
harryrance 6:dca8b5e2ebe5 20 Gamepad pad; //gamepad object
harryrance 6:dca8b5e2ebe5 21 GameEngine engine; //GameEngine object
harryrance 6:dca8b5e2ebe5 22 Menu menu; //menu object
harryrance 0:c9bf674fe0c7 23
harryrance 0:c9bf674fe0c7 24 ////////// prototypes //////////
harryrance 6:dca8b5e2ebe5 25 void init(); //used to call all initialisations
harryrance 6:dca8b5e2ebe5 26 void render(); //used to call all items to be drawn on the LCD screen
harryrance 0:c9bf674fe0c7 27 void update_game(UserInput input);
harryrance 0:c9bf674fe0c7 28
harryrance 0:c9bf674fe0c7 29 ////////// functions //////////
harryrance 0:c9bf674fe0c7 30 int main()
harryrance 0:c9bf674fe0c7 31 {
harryrance 0:c9bf674fe0c7 32 int fps = 30;
harryrance 0:c9bf674fe0c7 33
harryrance 0:c9bf674fe0c7 34 init();
harryrance 0:c9bf674fe0c7 35 render();
harryrance 0:c9bf674fe0c7 36 wait(1.0f/fps);
harryrance 0:c9bf674fe0c7 37
harryrance 0:c9bf674fe0c7 38 while(1){
harryrance 6:dca8b5e2ebe5 39 float brightness = pad.read_pot(); //allows user control of screen brightness using potentiometer
harryrance 3:43970d8d642e 40 lcd.setBrightness(brightness);
harryrance 6:dca8b5e2ebe5 41 if (menu.is_game_active() == 1){ //checks if the game should run. If true, run game.
harryrance 3:43970d8d642e 42 engine.read_input(pad);
harryrance 3:43970d8d642e 43 engine.update(pad);
harryrance 6:dca8b5e2ebe5 44 if (pad.check_event(Gamepad::START_PRESSED)){ //pauses game bu taking user back to menu if START is pressed.
harryrance 3:43970d8d642e 45 menu.stop_game();
harryrance 3:43970d8d642e 46 }
harryrance 6:dca8b5e2ebe5 47 else if (pad.check_event(Gamepad::BACK_PRESSED)){ //restarts game by taking the user to the menu and re-initialising the game engine if BACK is pressed.
harryrance 3:43970d8d642e 48 engine.initialise(US_X, AA_X, SPEED);
harryrance 3:43970d8d642e 49 menu.stop_game();
harryrance 3:43970d8d642e 50 }
harryrance 6:dca8b5e2ebe5 51 } else if (menu.is_game_active() == 0){ //if the game is not active, display the menu screen
harryrance 3:43970d8d642e 52 menu.read_input(pad);
harryrance 4:107bdbbf78bf 53 menu.update(pad, lcd);
harryrance 3:43970d8d642e 54 }
harryrance 0:c9bf674fe0c7 55 render();
harryrance 0:c9bf674fe0c7 56 wait(1.0f/fps);
harryrance 0:c9bf674fe0c7 57 }
harryrance 0:c9bf674fe0c7 58 }
harryrance 0:c9bf674fe0c7 59
harryrance 0:c9bf674fe0c7 60 void render()
harryrance 0:c9bf674fe0c7 61 {
harryrance 0:c9bf674fe0c7 62 lcd.clear();
harryrance 6:dca8b5e2ebe5 63 if (menu.is_game_active() == 1){ //render game engine if game is active
harryrance 3:43970d8d642e 64 engine.draw(lcd);
harryrance 6:dca8b5e2ebe5 65 } else if (menu.is_game_active() == 0) { //render menu if game is not active
harryrance 3:43970d8d642e 66 menu.draw(lcd);
harryrance 3:43970d8d642e 67 }
harryrance 0:c9bf674fe0c7 68 lcd.refresh();
harryrance 0:c9bf674fe0c7 69 }
harryrance 0:c9bf674fe0c7 70
harryrance 0:c9bf674fe0c7 71 void init()
harryrance 0:c9bf674fe0c7 72 {
harryrance 0:c9bf674fe0c7 73 lcd.init();
harryrance 0:c9bf674fe0c7 74 pad.init();
harryrance 0:c9bf674fe0c7 75
harryrance 3:43970d8d642e 76 menu.initialise(25, 0);
harryrance 2:50feb42b982c 77 engine.initialise(US_X, AA_X, SPEED);
harryrance 0:c9bf674fe0c7 78
harryrance 0:c9bf674fe0c7 79 }
harryrance 0:c9bf674fe0c7 80