harry rance
/
Revised_Space_Invaders
Harry Rance 200925395 Embedded Systems Project
main.cpp@4:107bdbbf78bf, 2017-04-30 (annotated)
- 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?
User | Revision | Line number | New 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 |