return 1;
}
board = copyboard (temp);
+ initplay (board);
}
setscale (board, scale);
int xboard = board->xoffset = xoffset + 1;
int yboard = board->yoffset = xoffset + 1;
int xhelp = xboard + xoffset + 1 + board->xsize;
- int xcursor = 0;
+ int xcursor = 1;
int ycursor = 0;
int yhelp = yboard - 1;
int xsave = max (xboard + (board->xsize - savelen) / 2, 1);
case 'c':
if (mode == 1) {
mode = 0;
- } else if (getvalue (board, xcursor, ycursor) == '0' + player) {
+ } else if ((getvalue (board, xcursor, ycursor) != ' ') && ((getvalue (board, xcursor, ycursor) - '0') % 2 == player)) {
mode = 1;
}
break;
case KEY_UP:
case 'i':
if (mode == 0) {
+ xcursor = (xcursor + 1) % board->width;
ycursor = (ycursor + board->height - 1) % board->height;
} else {
mode = 0;
case 'j':
if (mode == 0) {
xcursor = (xcursor + board->width - 1) % board->width;
+ ycursor = (ycursor + board->height - 1) % board->height;
} else {
mode = 0;
}
case KEY_DOWN:
case 'k':
if (mode == 0) {
+ xcursor = (xcursor + board->width - 1) % board->width;
ycursor = (ycursor + 1) % board->height;
} else {
mode = 0;
case 'l':
if (mode == 0) {
xcursor = (xcursor + 1) % board->width;
+ ycursor = (ycursor + 1) % board->height;
} else {
mode = 0;
}
board_t _board_8x8 = {
8, 8,
- " X X X X"
- "X X X X "
- " X X X X"
- "X X X X "
- " X X X X"
- "X X X X "
- " X X X X"
- "X X X X ",
+ " . . . ."
+ ". . . . "
+ " . . . ."
+ ". . . . "
+ " . . . ."
+ ". . . . "
+ " . . . ."
+ ". . . . ",
0, 0, 0, 0, 0};
board_t _board_10x10 = {
10, 10,
- " X X X X X"
- "X X X X X "
- " X X X X X"
- "X X X X X "
- " X X X X X"
- "X X X X X "
- " X X X X X"
- "X X X X X "
- " X X X X X"
- "X X X X X ",
+ " . . . . ."
+ ". . . . . "
+ " . . . . ."
+ ". . . . . "
+ " . . . . ."
+ ". . . . . "
+ " . . . . ."
+ ". . . . . "
+ " . . . . ."
+ ". . . . . ",
0, 0, 0, 0, 0};
board_t *getboard (char *name)
int element01 = ' ';
int element11 = ' ';
switch (symb) {
- case 'F':
- case 'H':
- case 'X':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
element00 = ACS_ULCORNER;
element01 = ACS_URCORNER;
element10 = ACS_LLCORNER;
}
set_color (black);
switch (symb) {
- case 'C':
- set_color (bgreen);
+ case ' ':
+ set_color (black);
break;
- case 'F':
+ case '.':
+ set_color (white);
+ break;
+ case '0':
set_color (wgreen);
break;
- case 'H':
- set_color (red);
+ case '1':
+ set_color (wred);
break;
- case 'P':
- set_color (byellow);
+ case '2':
+ set_color (green);
break;
- case 'O':
- set_color (white);
+ case '3':
+ set_color (red);
break;
- case 'X':
- set_color (white);
+ case '4':
+ set_color (bgreen);
+ break;
+ case '5':
+ set_color (bred);
break;
case 'Z':
set_color (bblue);
break;
- case ' ':
- set_color (black);
- break;
}
mvaddch (board->yoffset + 2 * y, board->xoffset + 2 * x, element00);
mvaddch (board->yoffset + 2 * y, board->xoffset + 2 * x + 1, element01);
void cursorwindow (board_t *board, int x, int y, int mode)
{
switch (getvalue (board, x, y)) {
- case 'O':
- _element (board, x, y, 'C');
+ case '0':
+ _element (board, x, y, (mode) ? '2' : '4');
break;
- case 'X':
- _element (board, x, y, (mode) ? 'H' : 'F');
+ case '1':
+ _element (board, x, y, (mode) ? '3' : '5');
break;
case ' ':
+ case '.':
_element (board, x, y, 'Z');
break;
}
return board;
}
+board_t *initplay (board_t *board)
+{
+ int i, j;
+
+ for (j = 0; j < board->height / 2 - 1; j++) {
+ for (i = (j + 1) % 2; i < board->width; i += 2) {
+ *getcell (board, i, j) = '0';
+ }
+ }
+ for (j = board->height / 2 + 1; j < board->height; j++) {
+ for (i = (j + 1) % 2; i < board->width; i += 2) {
+ *getcell (board, i, j) = '1';
+ }
+ }
+ return board;
+}
+
board_t *copyboard (board_t *board)
{
board_t *newboard = (board_t *) malloc (sizeof (board_t));
board_t *initboard (int xsize, int ysize);
+board_t *initplay (board_t *board);
+
board_t *copyboard (board_t *board);
board_t *setscale (board_t *board, int scale);