runner

Dependencies:   mbed

Committer:
kamtas
Date:
Thu May 09 03:52:35 2019 +0000
Revision:
2:1900a4144537
Parent:
1:d7a334d806dd
Child:
3:59e67155e2dd
Initial game engine working, includes a basic sprite with an ability to jump

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kamtas 2:1900a4144537 1 // pre-processor directives
kamtas 2:1900a4144537 2 #include "mbed.h"
kamtas 2:1900a4144537 3 #include "Gamepad.h"
kamtas 2:1900a4144537 4 #include "N5110.h"
kamtas 2:1900a4144537 5 #include "GameEngine.h"
kamtas 2:1900a4144537 6
kamtas 2:1900a4144537 7
kamtas 2:1900a4144537 8 #define RUNNER_WIDTH 2
kamtas 2:1900a4144537 9 #define RUNNER_HEIGHT 8
kamtas 2:1900a4144537 10
kamtas 2:1900a4144537 11 // structs
kamtas 2:1900a4144537 12 struct UserInput {
kamtas 2:1900a4144537 13 Direction d;
kamtas 2:1900a4144537 14 float mag;
kamtas 2:1900a4144537 15 };
kamtas 2:1900a4144537 16 // objects
kamtas 2:1900a4144537 17 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
kamtas 2:1900a4144537 18 Gamepad pad;
kamtas 2:1900a4144537 19 GameEngine engine;
kamtas 2:1900a4144537 20
kamtas 2:1900a4144537 21 // prototypes
kamtas 2:1900a4144537 22 void init();
kamtas 2:1900a4144537 23 void update_game(UserInput input);
kamtas 2:1900a4144537 24 void render();
kamtas 2:1900a4144537 25 void welcome();
kamtas 2:1900a4144537 26
kamtas 2:1900a4144537 27 // functions
kamtas 2:1900a4144537 28 int main()
kamtas 2:1900a4144537 29 {
kamtas 2:1900a4144537 30
kamtas 2:1900a4144537 31 int fps = 8; // frames per second
kamtas 2:1900a4144537 32
kamtas 2:1900a4144537 33 init(); // initialise and then display welcome screen...
kamtas 2:1900a4144537 34 welcome(); // waiting for the user to start
kamtas 2:1900a4144537 35
kamtas 2:1900a4144537 36 render(); // first draw the initial frame
kamtas 2:1900a4144537 37 wait(1.0f/fps); // and wait for one frame period
kamtas 2:1900a4144537 38
kamtas 2:1900a4144537 39
kamtas 2:1900a4144537 40 // game loop - read input, update the game state and render the display
kamtas 2:1900a4144537 41 while (1) {
kamtas 2:1900a4144537 42 engine.read_input(pad);
kamtas 2:1900a4144537 43 engine.update(pad);
kamtas 2:1900a4144537 44 render();
kamtas 2:1900a4144537 45 wait(1.0f/fps);
kamtas 2:1900a4144537 46 }
kamtas 2:1900a4144537 47 }
kamtas 2:1900a4144537 48
kamtas 2:1900a4144537 49 // initialies all classes and libraries
kamtas 2:1900a4144537 50 void init()
kamtas 2:1900a4144537 51 {
kamtas 2:1900a4144537 52 // need to initialise LCD and Gamepad
kamtas 2:1900a4144537 53 lcd.init();
kamtas 2:1900a4144537 54 pad.init();
kamtas 2:1900a4144537 55
kamtas 2:1900a4144537 56 // initialise the game with correct ball and paddle sizes
kamtas 2:1900a4144537 57 engine.init(RUNNER_WIDTH,RUNNER_HEIGHT);
kamtas 2:1900a4144537 58
kamtas 2:1900a4144537 59 }
kamtas 2:1900a4144537 60
kamtas 2:1900a4144537 61 // this function draws each frame on the LCD
kamtas 2:1900a4144537 62 void render()
kamtas 2:1900a4144537 63 {
kamtas 2:1900a4144537 64 // clear screen, re-draw and refresh
kamtas 2:1900a4144537 65 lcd.clear();
kamtas 2:1900a4144537 66 engine.draw(lcd);
kamtas 2:1900a4144537 67 lcd.refresh();
kamtas 2:1900a4144537 68 }
kamtas 2:1900a4144537 69
kamtas 2:1900a4144537 70 // simple splash screen displayed on start-up
kamtas 2:1900a4144537 71 void welcome() {
kamtas 2:1900a4144537 72
kamtas 2:1900a4144537 73 lcd.printString(" Runner ",0,1);
kamtas 2:1900a4144537 74 lcd.printString(" Press Start ",0,4);
kamtas 2:1900a4144537 75 lcd.refresh();
kamtas 2:1900a4144537 76
kamtas 2:1900a4144537 77 // wait flashing LEDs until start button is pressed
kamtas 2:1900a4144537 78 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
kamtas 2:1900a4144537 79 pad.leds_on();
kamtas 2:1900a4144537 80 wait(0.1);
kamtas 2:1900a4144537 81 pad.leds_off();
kamtas 2:1900a4144537 82 wait(0.1);
kamtas 2:1900a4144537 83 }
kamtas 2:1900a4144537 84
kamtas 2:1900a4144537 85 }