#include "board.h"
#include "debug.h"
+#define KEY_ESC 0x1b
+
/* static variables */
char *progname = NULL;
char *version = "0.1";
VERBOSE (DEBUG, fprintf (stdout, "debug mode\n"));
initscr ();
- cbreak ();
- noecho ();
- curs_set (0);
+
+ cbreak (); /* direct input (no newline required)... */
+ noecho (); /* ... without echoing */
+ nodelay (stdscr, TRUE); /* don't wait for input... */
+ halfdelay (10); /* ...well, no more than a second, anyway */
+ keypad (stdscr, TRUE); /* enable cursor keys */
+ scrollok (stdscr, TRUE); /* enable scrolling in main window */
+
+ curs_set (2);
start_color ();
- board_t *board = initboard (20, 10);
+ int xsize = 20;
+ int ysize = 10;
+ int xoffset = 3;
+ int yoffset = 3;
+
+ board_t *board = initboard (xsize, ysize);
board->tab[3] = 'X';
board->tab[4] = 'O';
board->tab[5] = 'S';
+
+ int mode = 0;
+ displayboard (board, xoffset, yoffset, mode);
+
+ int x = (xsize + 1) / 2 - 1;
+ int y = (ysize + 1) / 2 - 1;
+
int stop = 0;
while (!stop) {
- displayboard (board, 4, 4);
- int c = getch ();
- switch (c) {
+ move (y + yoffset, x + xoffset);
+ switch (getch ()) {
+ case KEY_ESC:
+#ifndef __PDCURSES__
+ if (getch () != KEY_ESC) {
+ break;
+ }
+#endif /* __PDCURSES__ */
+ 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 < ysize - 1) {
+ y++;
+ }
+ break;
+ case KEY_RIGHT:
+ case 'l':
+ if (x < xsize - 1) {
+ x++;
+ }
+ break;
case 'q':
stop = 1;
break;
+ case 't':
+ mode ^= 1;
+ displayboard (board, xoffset, yoffset, mode);
+ break;
case ERR:
break;
}
attrset (COLOR_PAIR (color));
}
-void displayboard (board_t *board, int xoffset, int yoffset)
+void displayboard (board_t *board, int xoffset, int yoffset, int mode)
{
int x, y;
setcolor (yellow);
break;
}
+ if (!mode) {
+ c = ' ';
+ }
}
- mvaddch (yoffset + 1 + y, xoffset + 1 + x, c);
+ mvaddch (yoffset + y, xoffset + x, c);
setcolor (white);
}
}
board_t *initboard (int xsize, int ysize);
-void displayboard (board_t *board, int xoffset, int yoffset);
+void displayboard (board_t *board, int xoffset, int yoffset, int mode);
#endif /* __BOARD_H__ */