diff options
Diffstat (limited to 'src/game.c')
-rw-r--r-- | src/game.c | 51 |
1 files changed, 50 insertions, 1 deletions
@@ -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); } |