From: Laurent Mazet Date: Sat, 29 Jun 2024 22:05:28 +0000 (+0200) Subject: first move X-Git-Tag: v1.0~35 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=6c8b279fed9c0d86fde41e9909345e9d52e87ff5;p=checkers.git first move --- diff --git a/checkers.c b/checkers.c index 27b8997..6ab7858 100644 --- a/checkers.c +++ b/checkers.c @@ -143,6 +143,7 @@ int main (int argc, char *argv[]) return 1; } board = copyboard (temp); + initplay (board); } setscale (board, scale); @@ -159,7 +160,7 @@ int main (int argc, char *argv[]) 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); @@ -196,13 +197,14 @@ int main (int argc, char *argv[]) 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; @@ -212,6 +214,7 @@ int main (int argc, char *argv[]) case 'j': if (mode == 0) { xcursor = (xcursor + board->width - 1) % board->width; + ycursor = (ycursor + board->height - 1) % board->height; } else { mode = 0; } @@ -219,6 +222,7 @@ int main (int argc, char *argv[]) case KEY_DOWN: case 'k': if (mode == 0) { + xcursor = (xcursor + board->width - 1) % board->width; ycursor = (ycursor + 1) % board->height; } else { mode = 0; @@ -228,6 +232,7 @@ int main (int argc, char *argv[]) case 'l': if (mode == 0) { xcursor = (xcursor + 1) % board->width; + ycursor = (ycursor + 1) % board->height; } else { mode = 0; } diff --git a/constant.c b/constant.c index f59b4d8..7142cf5 100644 --- a/constant.c +++ b/constant.c @@ -7,28 +7,28 @@ 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) diff --git a/display.c b/display.c index 93c2ea7..a25b644 100644 --- a/display.c +++ b/display.c @@ -210,9 +210,12 @@ void _element2 (board_t *board, int x, int y, int symb) 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; @@ -221,30 +224,33 @@ void _element2 (board_t *board, int x, int y, int symb) } 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); @@ -345,13 +351,14 @@ void boardwindow (board_t *board) 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; } diff --git a/function.c b/function.c index 446e0c1..28d1003 100644 --- a/function.c +++ b/function.c @@ -36,6 +36,23 @@ board_t *initboard (int width, int height) 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)); diff --git a/function.h b/function.h index 34f8760..3c941ef 100644 --- a/function.h +++ b/function.h @@ -19,6 +19,8 @@ int strmaxlen (char *str, char ch); 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);