summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2013-05-20 15:00:54 (EDT)
committer P. J. McDermott <pjm@nac.net>2013-05-20 15:00:54 (EDT)
commit6c69108044469c2ec69ad27eb768ca4680e131e1 (patch)
treec715006bfdcbd971e042d69ffba99eee08a1591f
parent41caa6f8cafcef43ce5ac20bd18ba5ae64cf829d (diff)
downloadcursespong-6c69108044469c2ec69ad27eb768ca4680e131e1.zip
cursespong-6c69108044469c2ec69ad27eb768ca4680e131e1.tar.gz
cursespong-6c69108044469c2ec69ad27eb768ca4680e131e1.tar.bz2
Setup game, player, and paddle data structures.
-rw-r--r--src/game.c29
-rw-r--r--src/game.h13
-rw-r--r--src/local.mk4
-rw-r--r--src/main.c31
-rw-r--r--src/paddle.h17
-rw-r--r--src/player.c31
-rw-r--r--src/player.h15
7 files changed, 137 insertions, 3 deletions
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 <stdlib.h>
+
+#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 <stdio.h>
+#include <curses.h>
+
+#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 <stdlib.h>
+
+#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