Wang Lin 201090174

Dependencies:   mbed Gamepad N5110 FXOS8700Q

Committer:
eencae
Date:
Wed Mar 01 13:55:16 2017 +0000
Revision:
1:25a839625a1e
Parent:
0:e1442f3aa3c7
Child:
3:910d7e87f367
Child:
7:75ba0b323011
Beta version of Pong.

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 0:e1442f3aa3c7 8 #define PADDLE_HEIGHT 10
eencae 0:e1442f3aa3c7 9 #define BALL_RADIUS 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 0:e1442f3aa3c7 21 ///////////// prototypes ///////////////
eencae 0:e1442f3aa3c7 22 void init();
eencae 0:e1442f3aa3c7 23 void update_game(UserInput input);
eencae 0:e1442f3aa3c7 24 void render();
eencae 0:e1442f3aa3c7 25 ///////////// functions ////////////////
eencae 0:e1442f3aa3c7 26 int main()
eencae 0:e1442f3aa3c7 27 {
eencae 1:25a839625a1e 28 int fps = 8;
eencae 0:e1442f3aa3c7 29
eencae 1:25a839625a1e 30 init();
eencae 1:25a839625a1e 31
eencae 1:25a839625a1e 32 render(); // draw initial frame
eencae 1:25a839625a1e 33 wait(1.0f/fps);
eencae 0:e1442f3aa3c7 34
eencae 0:e1442f3aa3c7 35 while (1) {
eencae 1:25a839625a1e 36 pong.read_input(pad);
eencae 1:25a839625a1e 37 pong.update(pad);
eencae 0:e1442f3aa3c7 38 render();
eencae 0:e1442f3aa3c7 39 wait(1.0f/fps);
eencae 0:e1442f3aa3c7 40 }
eencae 0:e1442f3aa3c7 41 }
eencae 0:e1442f3aa3c7 42
eencae 0:e1442f3aa3c7 43 void init()
eencae 0:e1442f3aa3c7 44 {
eencae 0:e1442f3aa3c7 45 lcd.init();
eencae 0:e1442f3aa3c7 46 pad.init();
eencae 0:e1442f3aa3c7 47
eencae 1:25a839625a1e 48 float rand1 = pad.read_pot();
eencae 1:25a839625a1e 49 Vector2D rand2 = pad.get_coord();
eencae 1:25a839625a1e 50 int seed = int(1.0e6f*(rand1 + (rand2.x/rand2.y)));
eencae 1:25a839625a1e 51 // create some random number from ADC pins to use in srand
eencae 1:25a839625a1e 52
eencae 1:25a839625a1e 53 pong.init(PADDLE_WIDTH,PADDLE_HEIGHT,BALL_RADIUS,BALL_SPEED,seed);
eencae 0:e1442f3aa3c7 54
eencae 0:e1442f3aa3c7 55 }
eencae 0:e1442f3aa3c7 56
eencae 0:e1442f3aa3c7 57 void render()
eencae 0:e1442f3aa3c7 58 {
eencae 0:e1442f3aa3c7 59 lcd.clear(); // clear screen, re-draw and refresh
eencae 1:25a839625a1e 60 pong.draw(lcd);
eencae 0:e1442f3aa3c7 61 lcd.refresh();
eencae 0:e1442f3aa3c7 62 }