Dependencies: mbed
main.cpp@3:4494e6928194, 2020-05-16 (annotated)
- Committer:
- ll17lrc
- Date:
- Sat May 16 15:51:02 2020 +0000
- Revision:
- 3:4494e6928194
- Parent:
- 2:823dea76ff2e
- Child:
- 4:a9d5fca3b7ba
*some problems fixed*
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ll17lrc | 2:823dea76ff2e | 1 | ///////// pre-processor directives //////// |
eencae | 0:b7f1f47bb26a | 2 | #include "mbed.h" |
eencae | 0:b7f1f47bb26a | 3 | #include "Gamepad.h" |
eencae | 0:b7f1f47bb26a | 4 | #include "N5110.h" |
ll17lrc | 2:823dea76ff2e | 5 | #include "ImpossEngine.h" |
ll17lrc | 2:823dea76ff2e | 6 | |
eencae | 0:b7f1f47bb26a | 7 | |
eencae | 0:b7f1f47bb26a | 8 | |
ll17lrc | 2:823dea76ff2e | 9 | /////////////// structs ///////////////// |
ll17lrc | 2:823dea76ff2e | 10 | struct UserInput { |
ll17lrc | 2:823dea76ff2e | 11 | Direction d; |
ll17lrc | 2:823dea76ff2e | 12 | float mag; |
ll17lrc | 2:823dea76ff2e | 13 | }; |
ll17lrc | 2:823dea76ff2e | 14 | /////////////// objects /////////////// |
ll17lrc | 2:823dea76ff2e | 15 | N5110 lcd; |
eencae | 0:b7f1f47bb26a | 16 | Gamepad pad; |
ll17lrc | 2:823dea76ff2e | 17 | |
ll17lrc | 2:823dea76ff2e | 18 | ///////////// prototypes /////////////// |
ll17lrc | 2:823dea76ff2e | 19 | void init(); |
ll17lrc | 2:823dea76ff2e | 20 | void update_game(UserInput input); |
ll17lrc | 2:823dea76ff2e | 21 | void render(); |
ll17lrc | 2:823dea76ff2e | 22 | void welcome(); |
ll17lrc | 2:823dea76ff2e | 23 | void start_menu(); |
ll17lrc | 2:823dea76ff2e | 24 | |
ll17lrc | 2:823dea76ff2e | 25 | ///////////// functions //////////////// |
eencae | 0:b7f1f47bb26a | 26 | |
eencae | 0:b7f1f47bb26a | 27 | int main() |
eencae | 0:b7f1f47bb26a | 28 | { |
ll17lrc | 2:823dea76ff2e | 29 | //#ifdef WITH_TESTING |
ll17lrc | 2:823dea76ff2e | 30 | // int number_of_failures = run_all_tests(); |
ll17lrc | 2:823dea76ff2e | 31 | // |
ll17lrc | 2:823dea76ff2e | 32 | // if(number_of_failures > 0) return number_of_failures; |
ll17lrc | 2:823dea76ff2e | 33 | //#endif |
ll17lrc | 2:823dea76ff2e | 34 | |
ll17lrc | 2:823dea76ff2e | 35 | int fps = 6; // frames per second |
ll17lrc | 2:823dea76ff2e | 36 | |
ll17lrc | 2:823dea76ff2e | 37 | init(); // initialise and then display welcome screen... |
ll17lrc | 2:823dea76ff2e | 38 | welcome(); // waiting for the user to start |
ll17lrc | 3:4494e6928194 | 39 | imposs.complete(); // brings up start menu for user to select option |
ll17lrc | 2:823dea76ff2e | 40 | ball.init(); //initialise ball position |
ll17lrc | 2:823dea76ff2e | 41 | render(); // first draw the initial frame |
ll17lrc | 2:823dea76ff2e | 42 | wait(1.0f/fps); // and wait for one frame period |
ll17lrc | 2:823dea76ff2e | 43 | |
ll17lrc | 2:823dea76ff2e | 44 | |
ll17lrc | 2:823dea76ff2e | 45 | // game loop - read input, update the game state and render the display |
ll17lrc | 2:823dea76ff2e | 46 | while (1) { |
ll17lrc | 2:823dea76ff2e | 47 | imposs.read_input(pad); |
ll17lrc | 2:823dea76ff2e | 48 | imposs.update(pad); |
ll17lrc | 2:823dea76ff2e | 49 | render(); |
ll17lrc | 2:823dea76ff2e | 50 | wait(1.0f/fps); |
ll17lrc | 2:823dea76ff2e | 51 | } |
eencae | 0:b7f1f47bb26a | 52 | } |
eencae | 0:b7f1f47bb26a | 53 | |
ll17lrc | 2:823dea76ff2e | 54 | |
ll17lrc | 2:823dea76ff2e | 55 | // this function draws each frame on the LCD |
ll17lrc | 2:823dea76ff2e | 56 | void render() |
ll17lrc | 2:823dea76ff2e | 57 | { |
ll17lrc | 2:823dea76ff2e | 58 | // clear screen, re-draw and refresh |
ll17lrc | 2:823dea76ff2e | 59 | lcd.clear(); |
ll17lrc | 2:823dea76ff2e | 60 | imposs.draw(lcd); |
ll17lrc | 2:823dea76ff2e | 61 | lcd.refresh(); |
ll17lrc | 2:823dea76ff2e | 62 | } |
ll17lrc | 2:823dea76ff2e | 63 | |
ll17lrc | 2:823dea76ff2e | 64 | // simple splash screen displayed on start-up |
ll17lrc | 2:823dea76ff2e | 65 | void welcome() { |
ll17lrc | 2:823dea76ff2e | 66 | |
ll17lrc | 2:823dea76ff2e | 67 | lcd.printString(" Welcome to ",0,1); |
ll17lrc | 2:823dea76ff2e | 68 | lcd.printString(" Impossible ",0,2); |
ll17lrc | 2:823dea76ff2e | 69 | lcd.printString(" Press Start ",0,4); |
ll17lrc | 2:823dea76ff2e | 70 | lcd.refresh(); |
ll17lrc | 2:823dea76ff2e | 71 | |
ll17lrc | 2:823dea76ff2e | 72 | // wait flashing LEDs until start button is pressed |
ll17lrc | 2:823dea76ff2e | 73 | while ( pad.start_pressed() == false) { |
ll17lrc | 2:823dea76ff2e | 74 | lcd.setContrast( pad.read_pot1()); |
ll17lrc | 2:823dea76ff2e | 75 | pad.leds_on(); |
ll17lrc | 2:823dea76ff2e | 76 | wait(0.2); |
ll17lrc | 2:823dea76ff2e | 77 | pad.leds_off(); |
ll17lrc | 2:823dea76ff2e | 78 | wait(0.2); |
ll17lrc | 2:823dea76ff2e | 79 | } |
ll17lrc | 2:823dea76ff2e | 80 | |
ll17lrc | 2:823dea76ff2e | 81 | } |
ll17lrc | 2:823dea76ff2e | 82 | |
ll17lrc | 2:823dea76ff2e | 83 | void start_menu() { |
ll17lrc | 2:823dea76ff2e | 84 | |
ll17lrc | 2:823dea76ff2e | 85 | startmenu.complete(pad); |
ll17lrc | 2:823dea76ff2e | 86 | |
ll17lrc | 2:823dea76ff2e | 87 | } |
ll17lrc | 2:823dea76ff2e | 88 | |
ll17lrc | 2:823dea76ff2e | 89 | |
ll17lrc | 2:823dea76ff2e | 90 | |
ll17lrc | 3:4494e6928194 | 91 | } |
ll17lrc | 3:4494e6928194 | 92 | |
ll17lrc | 3:4494e6928194 | 93 | void init() |
ll17lrc | 3:4494e6928194 | 94 | { |
ll17lrc | 3:4494e6928194 | 95 | // need to initialise LCD and Gamepad |
ll17lrc | 3:4494e6928194 | 96 | lcd.init(); |
ll17lrc | 3:4494e6928194 | 97 | pad.init(); |
ll17lrc | 3:4494e6928194 | 98 | |
ll17lrc | 2:823dea76ff2e | 99 | } |