Lewis Cheadle 201245660
Dependencies: mbed
main.cpp@8:10eb578dd754, 2020-05-18 (annotated)
- Committer:
- ll17lrc
- Date:
- Mon May 18 15:08:54 2020 +0000
- Revision:
- 8:10eb578dd754
- Parent:
- 7:35465b3bf586
- Child:
- 13:fd290d2fd917
Level two complete;
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 | 4:a9d5fca3b7ba | 17 | ImpossEngine imposs; |
ll17lrc | 4:a9d5fca3b7ba | 18 | int level; |
ll17lrc | 4:a9d5fca3b7ba | 19 | int ball_x_pos; |
ll17lrc | 4:a9d5fca3b7ba | 20 | int ball_y_pos; |
ll17lrc | 2:823dea76ff2e | 21 | |
ll17lrc | 2:823dea76ff2e | 22 | ///////////// prototypes /////////////// |
ll17lrc | 2:823dea76ff2e | 23 | void init(); |
ll17lrc | 2:823dea76ff2e | 24 | void update_game(UserInput input); |
ll17lrc | 2:823dea76ff2e | 25 | void render(); |
ll17lrc | 2:823dea76ff2e | 26 | void welcome(); |
ll17lrc | 2:823dea76ff2e | 27 | void start_menu(); |
ll17lrc | 2:823dea76ff2e | 28 | |
ll17lrc | 2:823dea76ff2e | 29 | ///////////// functions //////////////// |
eencae | 0:b7f1f47bb26a | 30 | |
eencae | 0:b7f1f47bb26a | 31 | int main() |
eencae | 0:b7f1f47bb26a | 32 | { |
ll17lrc | 2:823dea76ff2e | 33 | //#ifdef WITH_TESTING |
ll17lrc | 2:823dea76ff2e | 34 | // int number_of_failures = run_all_tests(); |
ll17lrc | 2:823dea76ff2e | 35 | // |
ll17lrc | 2:823dea76ff2e | 36 | // if(number_of_failures > 0) return number_of_failures; |
ll17lrc | 2:823dea76ff2e | 37 | //#endif |
ll17lrc | 2:823dea76ff2e | 38 | |
ll17lrc | 2:823dea76ff2e | 39 | int fps = 6; // frames per second |
ll17lrc | 2:823dea76ff2e | 40 | |
ll17lrc | 2:823dea76ff2e | 41 | init(); // initialise and then display welcome screen... |
ll17lrc | 2:823dea76ff2e | 42 | welcome(); // waiting for the user to start |
ll17lrc | 4:a9d5fca3b7ba | 43 | imposs.complete(pad,lcd); // brings up start menu for user to select option |
ll17lrc | 2:823dea76ff2e | 44 | render(); // first draw the initial frame |
ll17lrc | 2:823dea76ff2e | 45 | wait(1.0f/fps); // and wait for one frame period |
ll17lrc | 2:823dea76ff2e | 46 | |
ll17lrc | 2:823dea76ff2e | 47 | |
ll17lrc | 2:823dea76ff2e | 48 | // game loop - read input, update the game state and render the display |
ll17lrc | 2:823dea76ff2e | 49 | while (1) { |
ll17lrc | 2:823dea76ff2e | 50 | imposs.read_input(pad); |
ll17lrc | 7:35465b3bf586 | 51 | imposs.update(pad,lcd); |
ll17lrc | 2:823dea76ff2e | 52 | render(); |
ll17lrc | 2:823dea76ff2e | 53 | wait(1.0f/fps); |
ll17lrc | 2:823dea76ff2e | 54 | } |
eencae | 0:b7f1f47bb26a | 55 | } |
eencae | 0:b7f1f47bb26a | 56 | |
ll17lrc | 2:823dea76ff2e | 57 | |
ll17lrc | 2:823dea76ff2e | 58 | // this function draws each frame on the LCD |
ll17lrc | 2:823dea76ff2e | 59 | void render() |
ll17lrc | 2:823dea76ff2e | 60 | { |
ll17lrc | 2:823dea76ff2e | 61 | // clear screen, re-draw and refresh |
ll17lrc | 2:823dea76ff2e | 62 | lcd.clear(); |
ll17lrc | 8:10eb578dd754 | 63 | imposs.draw(lcd,pad); |
ll17lrc | 2:823dea76ff2e | 64 | lcd.refresh(); |
ll17lrc | 2:823dea76ff2e | 65 | } |
ll17lrc | 2:823dea76ff2e | 66 | |
ll17lrc | 2:823dea76ff2e | 67 | // simple splash screen displayed on start-up |
ll17lrc | 2:823dea76ff2e | 68 | void welcome() { |
ll17lrc | 2:823dea76ff2e | 69 | |
ll17lrc | 2:823dea76ff2e | 70 | lcd.printString(" Welcome to ",0,1); |
ll17lrc | 2:823dea76ff2e | 71 | lcd.printString(" Impossible ",0,2); |
ll17lrc | 2:823dea76ff2e | 72 | lcd.printString(" Press Start ",0,4); |
ll17lrc | 2:823dea76ff2e | 73 | lcd.refresh(); |
ll17lrc | 2:823dea76ff2e | 74 | |
ll17lrc | 2:823dea76ff2e | 75 | // wait flashing LEDs until start button is pressed |
ll17lrc | 2:823dea76ff2e | 76 | while ( pad.start_pressed() == false) { |
ll17lrc | 2:823dea76ff2e | 77 | lcd.setContrast( pad.read_pot1()); |
ll17lrc | 2:823dea76ff2e | 78 | pad.leds_on(); |
ll17lrc | 2:823dea76ff2e | 79 | wait(0.2); |
ll17lrc | 2:823dea76ff2e | 80 | pad.leds_off(); |
ll17lrc | 2:823dea76ff2e | 81 | wait(0.2); |
ll17lrc | 2:823dea76ff2e | 82 | } |
ll17lrc | 2:823dea76ff2e | 83 | |
ll17lrc | 2:823dea76ff2e | 84 | } |
ll17lrc | 2:823dea76ff2e | 85 | |
ll17lrc | 2:823dea76ff2e | 86 | |
ll17lrc | 2:823dea76ff2e | 87 | |
ll17lrc | 3:4494e6928194 | 88 | |
ll17lrc | 3:4494e6928194 | 89 | void init() |
ll17lrc | 3:4494e6928194 | 90 | { |
ll17lrc | 3:4494e6928194 | 91 | // need to initialise LCD and Gamepad |
ll17lrc | 3:4494e6928194 | 92 | lcd.init(); |
ll17lrc | 3:4494e6928194 | 93 | pad.init(); |
ll17lrc | 3:4494e6928194 | 94 | |
ll17lrc | 2:823dea76ff2e | 95 | } |