From: Laurent Mazet Date: Mon, 23 Sep 2024 20:53:07 +0000 (+0200) Subject: correct save file format X-Git-Tag: v1.1~1 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=5d22aad01fbee050659768256ae5cd67742e425f;p=reversi.git correct save file format --- diff --git a/function.c b/function.c index aca5cd2..ac42609 100644 --- a/function.c +++ b/function.c @@ -101,7 +101,8 @@ char *saveboard (board_t *board) char *buffer = (char *) calloc (size, 1); CHECKALLOC (buffer); - int l = sprintf (buffer, "id: %d\n", board->id); + int l = sprintf (buffer, "ai: %d\n", board->ai); + l += sprintf (buffer + l, "id: %d\n", board->id); l += sprintf (buffer + l, "height: %d\n", board->height); l += sprintf (buffer + l, "scale: %d\n", board->scale); l += sprintf (buffer + l, "tab: \"%s\"\n", board->tab); @@ -169,6 +170,7 @@ char *atos (char *str) board_t *loadboard (char *str) { + int ai = -1; int id = 0; int height = 0; int scale = 1; @@ -187,7 +189,9 @@ board_t *loadboard (char *str) value++; } - if (strcmp (keyword, "id") == 0) { + if (strcmp (keyword, "ai") == 0) { + ai = atoi (value); + } else if (strcmp (keyword, "id") == 0) { id = atoi (value); } else if (strcmp (keyword, "height") == 0) { height = atoi (value); @@ -210,6 +214,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->ai = ai; board->id = id; board->scale = scale; } diff --git a/reversi.c b/reversi.c index 6a12da7..80c4069 100644 --- a/reversi.c +++ b/reversi.c @@ -146,6 +146,7 @@ int main (int argc, char *argv[]) VERBOSE (ERROR, fprintf (stderr, "incorrect file (%s)\n", filename)); return 1; } + ai = board->ai; id = board->id; scale = board->scale; } else if (boardname) { @@ -232,7 +233,7 @@ int main (int argc, char *argv[]) } else { break; } - } else { // id == ai + } else { /* id == ai */ if (!play (board, id)) { sprintf (msg, "Skip %s", id ? "Two" : "One"); id = id ? 0 : 1; @@ -252,7 +253,7 @@ int main (int argc, char *argv[]) mode = 1; } } - if (*msg) { + if (*msg == 0) { sprintf (msg, "Player %s", id ? "Two" : "One"); } @@ -294,6 +295,7 @@ int main (int argc, char *argv[]) case 's': savename = savewindow (savelen, xsave, ysave); if (savename != NULL) { + board->ai = ai; board->id = id; board->scale = scale; char *ptr = saveboard (board); @@ -395,7 +397,7 @@ int main (int argc, char *argv[]) /* test: { for s in kkkkllo mkklo u q; do sleep 1; echo -n $s; done; } | reversi.exe -r 8 | grep omkklouq */ /* test: { sleep 1; echo -n kko; sleep 1; echo q; } | reversi.exe -s 3 -b 4x4 */ /* test: { sleep 1; echo -n kkklo; sleep 1; echo q; } | reversi.exe -s 2 -b 6x6 */ -/* test: { sleep 1; echo -n kkkkllo; sleep 1; echo q; } | reversi.exe -s 1 -b 8x8 */ +/* test: { sleep 1; echo -n kkkkllo; sleep 1; echo -ne 'sfoo.rev\e'; sleep 1; echo q; } | reversi.exe -s 1 -b 8x8 && test \! -f foo.rev */ /* test: { sleep 1; echo -n kkkkklllo; sleep 1; echo q; } | reversi.exe -s 0 -b 10x10 */ /* test: { sleep 1; echo -n kkkkkkllllo; sleep 1; echo q; } | reversi.exe -b 12x12 */ /* test: { sleep 1; echo -n kkkkkkklllllo; sleep 1; echo q; } | reversi.exe -b 14x14 */ @@ -403,5 +405,6 @@ int main (int argc, char *argv[]) /* test: { for s in kko ko ml mo lljjlljo mlmo iijjjo io llo jllko q; do echo -n $s; sleep .3; done; } | reversi.exe -b 4x4 */ /* test: { sleep 1; echo -n kkkkllo; sleep 1; echo -e 'sgb\bame.rev'; sleep 1; echo q; } | reversi.exe -v 2 */ /* test: { sleep 1; echo -n kkkkllklo; sleep 1; echo q; } | reversi.exe -f game.rev && rm game.rev */ +/* test: { for s in kko iio lllko jkjko lo iiio kkklppo q; do echo -n $s; sleep .3; done; } | reversi.exe -a -b 4x4 */ /* vim: set ts=4 sw=4 et: */ diff --git a/type.h b/type.h index ce00063..baed90f 100644 --- a/type.h +++ b/type.h @@ -10,6 +10,7 @@ typedef struct { int ysize; int xoffset; int yoffset; + int ai; int id; } board_t;