Wang Lin 201090174

Dependencies:   mbed Gamepad N5110 FXOS8700Q

Committer:
eencae
Date:
Wed Feb 21 10:04:46 2018 +0000
Revision:
6:d9d05b321b4d
Parent:
4:d349e5d847cf
Child:
10:167d0aa1c9b3
Converted libraries to folders.

Who changed what in which revision?

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