Harry Rance 200925395 Embedded Systems Project

Dependencies:   mbed

Committer:
harryrance
Date:
Sun Apr 30 15:30:30 2017 +0000
Revision:
4:107bdbbf78bf
Parent:
3:43970d8d642e
Child:
6:dca8b5e2ebe5
Full game engine and menu system complete. Need to go through and improve commenting;

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 0:c9bf674fe0c7 20 Gamepad pad;
harryrance 0:c9bf674fe0c7 21 GameEngine engine;
harryrance 3:43970d8d642e 22 Menu menu;
harryrance 0:c9bf674fe0c7 23
harryrance 0:c9bf674fe0c7 24 ////////// prototypes //////////
harryrance 0:c9bf674fe0c7 25 void init();
harryrance 0:c9bf674fe0c7 26 void render();
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 3:43970d8d642e 39 float brightness = pad.read_pot();
harryrance 3:43970d8d642e 40 lcd.setBrightness(brightness);
harryrance 3:43970d8d642e 41 if (menu.is_game_active() == 1){
harryrance 3:43970d8d642e 42 engine.read_input(pad);
harryrance 3:43970d8d642e 43 engine.update(pad);
harryrance 3:43970d8d642e 44 if (pad.check_event(Gamepad::START_PRESSED)){
harryrance 3:43970d8d642e 45 menu.stop_game();
harryrance 3:43970d8d642e 46 }
harryrance 3:43970d8d642e 47 else if (pad.check_event(Gamepad::BACK_PRESSED)){
harryrance 3:43970d8d642e 48 engine.initialise(US_X, AA_X, SPEED);
harryrance 3:43970d8d642e 49 menu.stop_game();
harryrance 3:43970d8d642e 50 }
harryrance 3:43970d8d642e 51 } else if (menu.is_game_active() == 0){
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 3:43970d8d642e 63 if (menu.is_game_active() == 1){
harryrance 3:43970d8d642e 64 engine.draw(lcd);
harryrance 3:43970d8d642e 65 } else if (menu.is_game_active() == 0) {
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