Dependencies:   mbed

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?

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