Final Version of GameProject

Dependencies:   GameEngine Gamepad HealthBar Joystick N5110 Player Projectile Target mbed

Committer:
ll14c4p
Date:
Thu May 04 11:54:02 2017 +0000
Revision:
21:276a24801583
Parent:
17:7786ccffb009
Final Published Version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ll14c4p 2:7ffa02ae8b8d 1 ///////// pre-processor directives ////////
ll14c4p 0:3bc1df655a9c 2 #include "mbed.h"
ll14c4p 0:3bc1df655a9c 3 #include "Gamepad.h"
ll14c4p 0:3bc1df655a9c 4 #include "N5110.h"
ll14c4p 2:7ffa02ae8b8d 5 #include "GameEngine.h"
ll14c4p 0:3bc1df655a9c 6
ll14c4p 2:7ffa02ae8b8d 7 /////////////// structs /////////////////
ll14c4p 2:7ffa02ae8b8d 8 struct UserInput {
ll14c4p 2:7ffa02ae8b8d 9 Direction d;
ll14c4p 2:7ffa02ae8b8d 10 float mag;
ll14c4p 2:7ffa02ae8b8d 11 };
ll14c4p 2:7ffa02ae8b8d 12 /////////////// objects ///////////////
ll14c4p 2:7ffa02ae8b8d 13 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
ll14c4p 2:7ffa02ae8b8d 14 Gamepad pad;
ll14c4p 2:7ffa02ae8b8d 15 GameEngine game;
ll14c4p 2:7ffa02ae8b8d 16 ///////////// prototypes ///////////////
ll14c4p 2:7ffa02ae8b8d 17 void init();
ll14c4p 2:7ffa02ae8b8d 18 void update_game(UserInput input);
ll14c4p 2:7ffa02ae8b8d 19 void render();
ll14c4p 2:7ffa02ae8b8d 20 void welcome();
ll14c4p 2:7ffa02ae8b8d 21 ///////////// functions ////////////////
ll14c4p 2:7ffa02ae8b8d 22 int main()
ll14c4p 2:7ffa02ae8b8d 23 {
ll14c4p 16:85e23bae5bb1 24 int fps = 15; // frames per second
ll14c4p 0:3bc1df655a9c 25
ll14c4p 2:7ffa02ae8b8d 26 init();
ll14c4p 2:7ffa02ae8b8d 27 welcome();
ll14c4p 0:3bc1df655a9c 28
ll14c4p 2:7ffa02ae8b8d 29 render(); // draw initial frame
ll14c4p 2:7ffa02ae8b8d 30 wait(1.0f/fps);
ll14c4p 2:7ffa02ae8b8d 31
ll14c4p 2:7ffa02ae8b8d 32 // game loop - read input, update the game state and render the display
ll14c4p 2:7ffa02ae8b8d 33 while (1) {
ll14c4p 2:7ffa02ae8b8d 34 game.read_input(pad);
ll14c4p 2:7ffa02ae8b8d 35 game.update(pad);
ll14c4p 2:7ffa02ae8b8d 36 render();
ll14c4p 16:85e23bae5bb1 37
ll14c4p 12:81d939d439e9 38
ll14c4p 11:0a703ecb50cf 39
ll14c4p 2:7ffa02ae8b8d 40 wait(1.0f/fps);
ll14c4p 16:85e23bae5bb1 41
ll14c4p 16:85e23bae5bb1 42
ll14c4p 16:85e23bae5bb1 43
ll14c4p 2:7ffa02ae8b8d 44 }
ll14c4p 2:7ffa02ae8b8d 45 }
ll14c4p 2:7ffa02ae8b8d 46
ll14c4p 2:7ffa02ae8b8d 47 void init()
ll14c4p 2:7ffa02ae8b8d 48 {
ll14c4p 2:7ffa02ae8b8d 49 // need to initialise LCD and Gamepad
ll14c4p 2:7ffa02ae8b8d 50 lcd.init();
ll14c4p 2:7ffa02ae8b8d 51 pad.init();
ll14c4p 2:7ffa02ae8b8d 52
ll14c4p 2:7ffa02ae8b8d 53 // initialise the game
ll14c4p 2:7ffa02ae8b8d 54 game.init();
ll14c4p 2:7ffa02ae8b8d 55
ll14c4p 2:7ffa02ae8b8d 56 }
ll14c4p 2:7ffa02ae8b8d 57
ll14c4p 2:7ffa02ae8b8d 58 void render()
ll14c4p 2:7ffa02ae8b8d 59 {
ll14c4p 2:7ffa02ae8b8d 60 // clear screen, re-draw and refresh
ll14c4p 2:7ffa02ae8b8d 61 lcd.clear();
ll14c4p 13:bbb6d6106d8c 62 game.draw(lcd, pad);
ll14c4p 6:464ebc3f10fa 63 game.get_pos();
ll14c4p 2:7ffa02ae8b8d 64 lcd.refresh();
ll14c4p 2:7ffa02ae8b8d 65 }
ll14c4p 2:7ffa02ae8b8d 66
ll14c4p 2:7ffa02ae8b8d 67 void welcome() {
ll14c4p 0:3bc1df655a9c 68
ll14c4p 16:85e23bae5bb1 69 lcd.printString(" Professional ",0,1);
ll14c4p 16:85e23bae5bb1 70 lcd.printString(" Boxing ",0,2);
ll14c4p 5:33e76ad2cf2b 71 lcd.printString(" Press Start ",0,4);
ll14c4p 2:7ffa02ae8b8d 72 lcd.refresh();
ll14c4p 2:7ffa02ae8b8d 73
ll14c4p 2:7ffa02ae8b8d 74 // wait flashing LEDs until start button is pressed
ll14c4p 2:7ffa02ae8b8d 75 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
ll14c4p 2:7ffa02ae8b8d 76 pad.leds_on();
ll14c4p 2:7ffa02ae8b8d 77 wait(0.1);
ll14c4p 2:7ffa02ae8b8d 78 pad.leds_off();
ll14c4p 2:7ffa02ae8b8d 79 wait(0.1);
ll14c4p 2:7ffa02ae8b8d 80 }
ll14c4p 2:7ffa02ae8b8d 81
ll14c4p 2:7ffa02ae8b8d 82 }