return 0;
}
-
typedef enum {
white = 1,
red,
attrset (COLOR_PAIR(color));
}
-char *initboard (void)
+play_t *initplay (void)
+{
+ play_t *play = (play_t *) malloc (sizeof (play_t));
+ play->tab = (char *) malloc (board->xsize * board->ysize);
+ memset (play->tab, ' ', board->xsize * board->ysize);
+ play->xsize = board->xsize;
+ play->ysize = board->ysize;
+ return play;
+}
+
+int putletter (play_t *play, char letter, int x, int y)
+{
+ int ret = (play->tab[x + play->xsize * y] == ' ');
+ if (ret) {
+ play->tab[x + play->xsize * y] = letter;
+ }
+ return ret;
+}
+
+void showletter (char letter, int x, int y)
{
- char *tab = (char *) malloc (board->xsize * board->ysize);
- memset (tab, ' ', board->xsize * board->ysize);
- return tab;
+ set_color (black);
+ mvaddch(y, x, letter);
+ set_color (white);
}
-void showboard (char *tab, int xoffset, int yoffset, int full)
+void showboard (play_t *play, int xoffset, int yoffset, int full)
{
int x, y;
for (x = -1; x <= board->xsize; x++) {
c = ACS_HLINE;
set_color (black);
} else {
- c = tab[x + y * board->xsize];
+ c = play->tab[x + y * board->xsize];
if (c == ' ') {
if (contains (board->TW, pos)) {
c = 'T';
#ifndef __BOARD_H__
#define __BOARD_H__
+typedef struct {
+ int xsize;
+ int ysize;
+ char *tab;
+} play_t;
+
char *initboard (void);
-void showboard (char *tab, int xoffset, int yoffset, int full);
+
+play_t *initplay ();
+
+int putletter (play_t *play, char letter, int x, int y);
+
+void showletter (char letter, int x, int y);
+
+void showboard (play_t *play, int xoffset, int yoffset, int full);
#endif /* __BOARD_H__ */
#include "board.h"
#include "debug.h"
+#define KEY_ESC 0x1b
+
/* static variables */
char *progname = NULL;
char *version = "0.1";
noecho();
cbreak();
nonl();
+ curs_set (0);
start_color ();
help_window (50, 1, 30);
- char *tab = initboard ();
+ play_t *play = initplay ();
+
+ int mode = 0;
+ int xoffset = 3;
+ int yoffset = 3;
+ showboard (play, xoffset, yoffset, mode);
- int c = 0;
- int stop = 0, mode = 0;
+ int x = (play->xsize + 1)/ 2 - 1;
+ int y = (play->ysize + 1)/ 2 - 1;
+
+ char letter = 'A' + (rand () % 26);
+ int stop = 0;
while (!stop) {
- showboard (tab, 3, 3, mode);
+ showletter (letter, x + xoffset, y + yoffset);
- c = getch ();
- switch (c) {
+ switch (getch ()) {
+ case KEY_ESC:
+ case ':':
+ break;
+ case KEY_UP:
+ case 'i':
+ if (y > 0) {
+ y--;
+ }
+ break;
+ case KEY_LEFT:
+ case 'j':
+ if (x > 0) {
+ x--;
+ }
+ break;
+ case KEY_DOWN:
+ case 'k':
+ if (y < play->ysize - 1) {
+ y++;
+ }
+ break;
+ case KEY_RIGHT:
+ case 'l':
+ if (x < play->xsize - 1) {
+ x++;
+ }
+ break;
case 'q':
stop = 1;
break;
case 't':
- mode = mode^1;
+ mode ^= 1;
+ break;
+ case 's':
+ if (putletter (play, letter, x, y)) {
+ letter = 'A' + (rand () % 26);
+ }
break;
case ERR:
default:
}
+ showboard (play, xoffset, yoffset, mode);
}
endwin ();