Lewis Cheadle 201245660

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }