free (draw);
}
-draw_t *retrievetiles (draw_t *draw, int nbtiles, draw_t *game, int mode)
+void retrievetiles (draw_t *draw, draw_t *game, int mode)
{
- draw_t *ret = (game == NULL) ? newdraw (nbtiles) : game;
int i;
if (mode) {
- for (i = 0; i < ret->nbtiles; i++) {
- if (ret->tiles[i] != ' ') {
- draw->tiles[draw->nbtiles++] = ret->tiles[i];
- ret->tiles[i] = ' ';
+ for (i = 0; i < game->nbtiles; i++) {
+ if (game->tiles[i] != ' ') {
+ draw->tiles[draw->nbtiles++] = game->tiles[i];
+ game->tiles[i] = ' ';
}
}
}
- for (i = 0; (i < ret->nbtiles) && (draw->nbtiles > 0); i++) {
- if (ret->tiles[i] != ' ') {
+ for (i = 0; (i < game->nbtiles) && (draw->nbtiles > 0); i++) {
+ if (game->tiles[i] != ' ') {
continue;
}
int j = rand () % draw->nbtiles;
- ret->tiles[i] = draw->tiles[j];
+ game->tiles[i] = draw->tiles[j];
if (j < draw->nbtiles - 1) {
char *pt = draw->tiles;
memmove(pt + j, pt + j + 1, draw->nbtiles - j - 1);
draw->nbtiles--;
draw->tiles[draw->nbtiles] = '\0';
}
- ret->index = -1;
- return ret;
+ game->index = -1;
}
char getnextletter (draw_t *game)
fclose (fd);
ret = (n == strlen (data));
} else {
- VERBOSE (WARNING, printf ("Can't write file (%s)\n", name));
+ VERBOSE (WARNING, printf ("can't write file (%s)\n", name));
}
free (name);
int restoredata (char *str, int *nbplayers, board_t **board, bag_t **bag, play_t *play, draw_t *draw, draw_t **game, int *n, play_t **turn, int *score)
{
- int ret = 1;
+ int ret = 0;
char *saveptr1, *saveptr2;
*bag = getbag (atos (value));
} else if (strcmp (name, "play->tab") == 0) {
strcpy (play->tab, atos (value));
- } else if (strcmp (name, "draw->ntiles") == 0) {
+ } else if (strcmp (name, "draw->nbtiles") == 0) {
draw->nbtiles = atoi (value);
} else if (strcmp (name, "draw->tiles") == 0) {
strcpy (draw->tiles, atos (value));
turn[i]->xsize = (*board)->xsize;
turn[i]->ysize = (*board)->ysize;
}
- } else {
- ret = 0;
+ ret = 1;
}
return ret;
void cleanplay (play_t *play);
-draw_t *retrievetiles (draw_t *draw, int nbtiles, draw_t *game, int mode);
+void retrievetiles (draw_t *draw, draw_t *game, int mode);
void freedraw (draw_t *draw);
switch (c) {
case 'b':
arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
- if (arg) {
- boardname = arg;
- } else {
+ if (arg == NULL) {
VERBOSE (ERROR, fprintf (stderr, "%s: no board specified\n", progname));
return usage (1);
}
+ boardname = arg;
break;
case 'c':
cache = 1;
break;
case 'd':
arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
- if (arg) {
- dict = arg;
- } else {
+ if (arg == NULL) {
VERBOSE (ERROR, fprintf (stderr, "%s: no dictionary specified\n", progname));
return usage (1);
}
+ dict = arg;
break;
case 'l':
arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
- if (arg) {
- language = arg;
- } else {
+ if (arg == NULL) {
VERBOSE (ERROR, fprintf (stderr, "%s: no language specified\n", progname));
return usage (1);
}
+ language = arg;
break;
case 'n':
arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
draw_t *draw = initdraw (bag);
draw_t **game = (draw_t **) calloc (MAXNBPLAYERS, sizeof (draw_t *));
CHECKALLOC (game);
+ for (n = 0; n < MAXNBPLAYERS; n++) {
+ game[n] = newdraw (board->length);
+ }
for (n = 0; n < nbplayers; n++) {
- game[n] = retrievetiles (draw, board->length, NULL, 0);
+ retrievetiles (draw, game[n], 0);
}
VERBOSE (DEBUG, printf ("bag: 0x%p\ndraw: 0x%p\ngame: 0x%p\ngame[0]: 0x%p", bag, draw, game, game[0]));
case '\n':
case '\r':
case 'd':
- game[n] = retrievetiles (draw, board->length, game[n], isturnempty (turn[n]));
+ retrievetiles (draw, game[n], isturnempty (turn[n]));
score[n] += nbpoints;
drawwindow (game[n], score[n], xdrawwin[n], ydrawwin[n], 0);
cleanplay (turn[n]);
endwin ();
freeplay (play);
- for (n = 0; n < nbplayers; n++) {
+ for (n = 0; n < MAXNBPLAYERS; n++) {
freeplay (turn[n]);
freedraw (game[n]);
}
/* test: echo q | scrabble.exe -v 5 */
/* test: echo vlvlvlvlvlvdkjjjjvlvlvlvlvlvdjjjjjvlvlvlvlvlvlvdq | scrabble.exe -l en -d dict/en.dict */
/* test: echo vlvlvlvlvlvdkjjjjvlvlvlvlvlvdkvjvjvjvjvjvjvdklllvlvxccvq | scrabble.exe -d dict/fr.dict -c */
+/* test: echo vlvlvllvdkjjjjvlvlvsq | scrabble.exe -n 4 -s test-%.scr */
+/* test: echo divsdsdsdsq | scrabble.exe -r `ls -1t test-*.scr | head -1` */
+/* test: rm -f {test,save}-*.scr */
/* vim: set ts=4 sw=4 et: */