Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:e1442f3aa3c7
- Child:
- 1:25a839625a1e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Feb 08 19:51:44 2017 +0000
@@ -0,0 +1,83 @@
+///////// pre-processor directives ////////
+#include "mbed.h"
+#include "Gamepad.h"
+#include "N5110.h"
+#include "Paddle.h"
+#include "Ball.h"
+#include "PongEngine.h"
+
+#define PADDLE_WIDTH 2
+#define PADDLE_HEIGHT 10
+#define P1_X 1
+#define P2_X WIDTH - PADDLE_WIDTH - P1_X
+#define BALL_RADIUS 2
+#define BALL_SPEED 3
+/////////////// structs /////////////////
+struct UserInput {
+ Direction d;
+ float mag;
+};
+/////////////// objects ///////////////
+N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
+Gamepad pad;
+Paddle p1;
+Paddle p2;
+Ball ball;
+PongEngine pong;
+///////////// prototypes ///////////////
+void init();
+UserInput read_input();
+void update_game(UserInput input);
+void render();
+///////////// functions ////////////////
+int main()
+{
+ init();
+
+ int fps = 3;
+
+ while (1) {
+ UserInput input = read_input();
+ update_game(input);
+ render();
+ wait(1.0f/fps);
+ }
+}
+
+void init()
+{
+ lcd.init();
+ pad.init();
+
+ p1.init(P1_X,PADDLE_HEIGHT,PADDLE_WIDTH);
+ p2.init(P2_X,PADDLE_HEIGHT,PADDLE_WIDTH);
+ ball.init(BALL_RADIUS,BALL_SPEED,pad);
+ pong.init(); // does nothing yet
+}
+
+UserInput read_input()
+{
+ Direction d = pad.get_direction();
+ float mag = pad.get_mag();
+ UserInput input = {d,mag};
+ return input;
+}
+
+void update_game(UserInput input)
+{
+ // important to update paddles and ball before checking collisions so can
+ // correct for it before updating the display
+ p1.update(input.d,input.mag);
+ p2.update(input.d,input.mag);
+ ball.update();
+ pong.check_collisions(ball,p1,p2);
+}
+
+void render()
+{
+ lcd.clear(); // clear screen, re-draw and refresh
+ p1.draw(lcd);
+ p2.draw(lcd);
+ ball.draw(lcd);
+ lcd.refresh();
+}
\ No newline at end of file