From 1b058fff3a2de1c4632ed4d2eadda4a6597960fd Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Tue, 28 May 2024 12:24:16 +0200 Subject: [PATCH] new arguments to manage lang and board --- constant.c | 10 ++++++---- scrabble.c | 27 ++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/constant.c b/constant.c index 6f9345e..82be83f 100644 --- a/constant.c +++ b/constant.c @@ -19,7 +19,8 @@ static board_t _board_15x15_7 = "H8\0" /* CS */ }; -static char _tiles_fr[106] = { +#define NB_TILES_FR 102 +static char _tiles_fr[NB_TILES_FR] = { ' ', ' ', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', @@ -49,7 +50,8 @@ static char _tiles_fr[106] = { 'Z' }; -static lettervalue_t _lettervalues_fr[27] = { +#define NB_LETTERVALUES_FR 27 +static lettervalue_t _lettervalues_fr[NB_LETTERVALUES_FR] = { {' ', 0}, {'E', 1}, {'A', 1}, @@ -98,9 +100,9 @@ bag_t *getbag (char *lang) if (strcmp (lang, "fr") == 0) { pt = &_bag; - pt->nbtiles = sizeof (_tiles_fr); + pt->nbtiles = NB_TILES_FR; pt->tiles = _tiles_fr; - pt->nbletters = 27; + pt->nbletters = NB_LETTERVALUES_FR; pt->lettervalues = _lettervalues_fr; } diff --git a/scrabble.c b/scrabble.c index 4819e8c..8221e58 100644 --- a/scrabble.c +++ b/scrabble.c @@ -18,12 +18,14 @@ char *progname = NULL; char *version = "0.1"; -char *language = "FR"; +char *boardname = "15x15-7"; +char *language = "fr"; int usage (int ret) { FILE *fd = ret ? stderr : stdout; - fprintf (fd, "usage: %s [-h] [-l lang] [-v level]\n", progname); + fprintf (fd, "usage: %s [-b board] [-h] [-l lang] [-v level]\n", progname); + fprintf (fd, " -b: board (%s)\n", boardname); fprintf (fd, " -h: help message\n"); fprintf (fd, " -l: language (%s)\n", language); fprintf (fd, " -v: verbose level (%d)\n", verbose); @@ -71,6 +73,15 @@ int main (int argc, char *argv[]) } char c = arg[1]; switch (c) { + case 'b': + arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL; + if (arg) { + boardname = arg; + } else { + VERBOSE (ERROR, fprintf (stderr, "%s: no board specified\n", progname)); + return usage (1); + } + break; case 'l': arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL; if (arg) { @@ -94,7 +105,17 @@ int main (int argc, char *argv[]) } } - board_t *board = getboard ("15x15-7"); + board_t *board = getboard (boardname); + if (!board) { + VERBOSE (ERROR, fprintf (stderr, "board not found\n")); + return 1; + } + bag_t *bag = getbag (language); + if (!bag) { + VERBOSE (ERROR, fprintf (stderr, "language not found\n")); + return 1; + } + play_t *play = initplay (board->xsize, board->ysize); VERBOSE (DEBUG, printf ("play: 0x%p\nboard: 0x%p\n", play, board)); -- 2.30.2