add turn into save format
authorLaurent MAZET <laurent.mazet@thalesgroup.com>
Tue, 2 Jul 2024 17:25:12 +0000 (19:25 +0200)
committerLaurent MAZET <laurent.mazet@thalesgroup.com>
Tue, 2 Jul 2024 17:25:12 +0000 (19:25 +0200)
a.chk [new file with mode: 0644]
b.chk [new file with mode: 0644]
checkers.c
constant.c
function.c
type.h

diff --git a/a.chk b/a.chk
new file mode 100644 (file)
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 (file)
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
index 284fd27264b458aef3da8c42f8e9f2fb6e3e4372..72834da3d56de660edfec0af01fb6a44dee530d0 100644 (file)
@@ -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"));
index 7142cf5bc81f0d9edeb0fd489d86a38b5703a11d..e04d429bc8b76503e2b17ba6cffbd865d19fc575 100644 (file)
@@ -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)
 {
index 08d2ee1932659df0d6c0d924852577c32ea2d473..f339d0fcacb5e7d04a599034efcf12bc0926cce1 100644 (file)
@@ -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 34ea36521c6194f96303fe65152f755cb4c37555..763b209863980e93da142a2c02c734f5daf2546f 100644 (file)
--- 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__ */