From: Laurent MAZET Date: Tue, 2 Jul 2024 17:25:12 +0000 (+0200) Subject: add turn into save format X-Git-Tag: v1.0~27 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=b4c04a9120e2844f7b8f37b72b5e66e942cfc728;p=checkers.git add turn into save format --- diff --git a/a.chk b/a.chk new file mode 100644 index 0000000..6fff4f6 --- /dev/null +++ b/a.chk @@ -0,0 +1,4 @@ +width: 10 +height: 10 +tab: " 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 . . 0 . . 0 0 .. . 1 . . 1 1 . 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 " +turn: 1 diff --git a/b.chk b/b.chk new file mode 100644 index 0000000..29dc2ae --- /dev/null +++ b/b.chk @@ -0,0 +1,4 @@ +width: 10 +height: 10 +tab: " 0 0 0 0 00 0 0 0 0 0 0 0 0 .0 0 . . 0 . . 0 0 0. 1 1 1 . . 1 . . 11 1 1 1 1 1 1 1 1 11 1 1 1 1 " +turn: 0 diff --git a/checkers.c b/checkers.c index 284fd27..72834da 100644 --- a/checkers.c +++ b/checkers.c @@ -179,7 +179,7 @@ int main (int argc, char *argv[]) /* event loop */ int mode = 0; int stop = 0; - int player = 0; + int player = board->turn; while (!stop) { char msg[128] = {0}; char *ptr = NULL; @@ -303,6 +303,7 @@ int main (int argc, char *argv[]) case 's': savename = savewindow (savelen, xsave, ysave); if (savename != NULL) { + board->turn = player; ptr = saveboard (board); if (writedata (savename, ptr)) { VERBOSE (WARNING, printf ("issue writing Board\n")); diff --git a/constant.c b/constant.c index 7142cf5..e04d429 100644 --- a/constant.c +++ b/constant.c @@ -15,7 +15,7 @@ board_t _board_8x8 = { ". . . . " " . . . ." ". . . . ", - 0, 0, 0, 0, 0}; + 0, 0, 0, 0, 0, 0}; board_t _board_10x10 = { 10, 10, @@ -29,7 +29,7 @@ board_t _board_10x10 = { ". . . . . " " . . . . ." ". . . . . ", - 0, 0, 0, 0, 0}; + 0, 0, 0, 0, 0, 0}; board_t *getboard (char *name) { diff --git a/function.c b/function.c index 08d2ee1..f339d0f 100644 --- a/function.c +++ b/function.c @@ -33,6 +33,7 @@ board_t *initboard (int width, int height) board->ysize = board->height = height; board->xoffset = 0; board->yoffset = 0; + board->turn = 0; return board; } @@ -111,7 +112,7 @@ int _makecomments (char *buffer, board_t *board) char *saveboard (board_t *board) { - int size = 2 * (8 + 3) + 8 + board->width * board->height + 1; + int size = 3 * (8 + 3) + 8 + board->width * board->height + 1; VERBOSE (INFO, size += board->height * (8 + board->width)); char *buffer = (char *) calloc (size, 1); @@ -120,6 +121,7 @@ char *saveboard (board_t *board) int l = sprintf (buffer, "width: %d\n", board->width); l += sprintf (buffer + l, "height: %d\n", board->height); l += sprintf (buffer + l, "tab: \"%s\"\n", board->tab); + l += sprintf (buffer + l, "turn: %d\n", board->turn); VERBOSE (INFO, _makecomments (buffer + l, board)); @@ -186,6 +188,7 @@ board_t *loadboard (char *str) int width = 0; int height = 0; char *tab = NULL; + char turn = 0; char *saveptr1, *saveptr2; @@ -205,6 +208,8 @@ board_t *loadboard (char *str) height = atoi (value); } else if (strcmp (keyword, "tab") == 0) { tab = atos (value); + } else if (strcmp (keyword, "turn") == 0) { + turn = atoi (value); } else if (strcmp (keyword, "rem") == 0) { /* nothing to do with remark */ } else { @@ -218,6 +223,7 @@ board_t *loadboard (char *str) if ((tab) && (strlen (tab) == (size_t)(width * height))) { board = initboard (width, height); memcpy (board->tab, tab, width * height); + board->turn = turn; } return board; diff --git a/type.h b/type.h index 34ea365..763b209 100644 --- a/type.h +++ b/type.h @@ -10,6 +10,7 @@ typedef struct { int ysize; int xoffset; int yoffset; + int turn; } board_t; #endif /* __TYPE_H__ */