summaryrefslogtreecommitdiffstats
path: root/src/game.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.c')
-rw-r--r--src/game.c51
1 files changed, 50 insertions, 1 deletions
diff --git a/src/game.c b/src/game.c
index c6edaf5..9b66d1a 100644
--- a/src/game.c
+++ b/src/game.c
@@ -5,6 +5,9 @@
#include "player.h"
static void draw_paddles(struct game *g);
+static void wait(struct game *g);
+static void input(struct game *g);
+static void draw(struct game *g);
struct game *
new_game(void)
@@ -32,7 +35,53 @@ free_game(struct game *g)
}
void
-draw_game(struct game *g)
+run_game(struct game *g)
+{
+ g->running = 1;
+
+ while (g->running) {
+ wait(g);
+ input(g);
+ draw(g);
+ }
+}
+
+static void
+wait(struct game *g)
+{
+ g->running = 1;
+}
+
+static void
+input(struct game *g)
+{
+ int c;
+
+ timeout(0);
+ for (;;) {
+ c = getch();
+ if (c == 'q') {
+ g->running = 0;
+ } else if (c == ERR) {
+ break;
+ } else if (c == KEY_LEFT) {
+ g->players[0]->paddle_h.pos -=
+ g->players[0]->paddle_h.speed;
+ } else if (c == KEY_RIGHT) {
+ g->players[0]->paddle_h.pos +=
+ g->players[0]->paddle_h.speed;
+ } else if (c == KEY_UP) {
+ g->players[0]->paddle_v.pos -=
+ g->players[0]->paddle_v.speed;
+ } else if (c == KEY_DOWN) {
+ g->players[0]->paddle_v.pos +=
+ g->players[0]->paddle_v.speed;
+ }
+ }
+}
+
+static void
+draw(struct game *g)
{
draw_paddles(g);
}