From 6c69108044469c2ec69ad27eb768ca4680e131e1 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Mon, 20 May 2013 15:00:54 -0400 Subject: Setup game, player, and paddle data structures. --- diff --git a/src/game.c b/src/game.c new file mode 100644 index 0000000..f591781 --- /dev/null +++ b/src/game.c @@ -0,0 +1,29 @@ +#include + +#include "game.h" +#include "player.h" + +struct game * +new_game(void) +{ + struct game *g; + + g = malloc(sizeof(*g)); + if (g == NULL) { + return NULL; + } + + g->players[0] = new_player(); + g->players[1] = new_player(); + + return g; +} + +void +free_game(struct game *g) +{ + free_player(g->players[0]); + free_player(g->players[1]); + + free(g); +} diff --git a/src/game.h b/src/game.h new file mode 100644 index 0000000..abd5638 --- /dev/null +++ b/src/game.h @@ -0,0 +1,13 @@ +#ifndef GAME_H +#define GAME_H + +#include "player.h" + +struct game { + struct player *players[2]; +}; + +struct game *new_game(void); +void free_game(struct game *g); + +#endif diff --git a/src/local.mk b/src/local.mk index 6d30651..199d4e5 100644 --- a/src/local.mk +++ b/src/local.mk @@ -1,2 +1,4 @@ src_SOURCES = \ - src/main.c + src/main.c \ + src/game.c \ + src/player.c diff --git a/src/main.c b/src/main.c index b014b94..67cdb02 100644 --- a/src/main.c +++ b/src/main.c @@ -1,9 +1,36 @@ -#include +#include + +#include "game.h" + +static void init_curses(void); +static void fini_curses(void); int main(void) { - puts("Hello, world!"); + struct game *g; + + init_curses(); + g = new_game(); + + free_game(g); + fini_curses(); return 0; } + +static void +init_curses(void) +{ + initscr(); + noecho(); + raw(); + curs_set(0); +} + +static void +fini_curses(void) +{ + delwin(stdscr); + endwin(); +} diff --git a/src/paddle.h b/src/paddle.h new file mode 100644 index 0000000..6845945 --- /dev/null +++ b/src/paddle.h @@ -0,0 +1,17 @@ +#ifndef PADDLE_H +#define PADDLE_H + +static const char PADDLE_H_POS_START = 40; +static const char PADDLE_V_POS_START = 12; +static const char PADDLE_H_SIZE_NORMAL = 8; +static const char PADDLE_V_SIZE_NORMAL = 4; +static const char PADDLE_H_SPEED_NORMAL = 2; +static const char PADDLE_V_SPEED_NORMAL = 1; + +struct paddle { + char pos; + char size; + char speed; +}; + +#endif diff --git a/src/player.c b/src/player.c new file mode 100644 index 0000000..58ef6b5 --- /dev/null +++ b/src/player.c @@ -0,0 +1,31 @@ +#include + +#include "player.h" +#include "paddle.h" + +struct player * +new_player(void) +{ + struct player *p; + + p = malloc(sizeof(*p)); + if (p == NULL) { + return NULL; + } + + p->score = 0; + p->paddle_h.pos = PADDLE_H_POS_START; + p->paddle_v.pos = PADDLE_V_POS_START; + p->paddle_h.size = PADDLE_H_SIZE_NORMAL; + p->paddle_v.size = PADDLE_V_SIZE_NORMAL; + p->paddle_h.speed = PADDLE_H_SPEED_NORMAL; + p->paddle_v.speed = PADDLE_V_SPEED_NORMAL; + + return p; +} + +void +free_player(struct player *p) +{ + free(p); +} diff --git a/src/player.h b/src/player.h new file mode 100644 index 0000000..e78cbdc --- /dev/null +++ b/src/player.h @@ -0,0 +1,15 @@ +#ifndef PLAYER_H +#define PLAYER_H + +#include "paddle.h" + +struct player { + char score; + struct paddle paddle_h; + struct paddle paddle_v; +}; + +struct player *new_player(void); +void free_player(struct player *p); + +#endif -- cgit v0.9.1