From: Carl Worth Date: Wed, 29 Nov 2006 07:09:46 +0000 (-0800) Subject: Add the ability to specify grid letters on the command line. X-Git-Url: https://git.cworth.org/git?p=wordgame;a=commitdiff_plain;h=b157806da521d22963c0246fdffa4671fd22e091 Add the ability to specify grid letters on the command line. --- diff --git a/grid.c b/grid.c index 273a6e8..c68ae43 100644 --- a/grid.c +++ b/grid.c @@ -86,6 +86,31 @@ grid_init (grid_t *grid, int size) cubes_source[cubes[i]][rand_within(6)]; } +void +grid_set_letters (grid_t *grid, + const char *letters) +{ + int i; + int num_cubes = grid->size * grid->size; + char letter; + + if (strlen (letters) != num_cubes) { + fprintf (stderr, "Error: Invalid string for %dx%d grid. Expected %d letters: %s\n", + grid->size, grid->size, num_cubes, letters); + exit (1); + } + + for (i = 0; i < num_cubes; i++) { + letter = tolower (letters[i]); + if (letter < 'a' || letter > 'z') { + fprintf (stderr, "Error: Invalid character '%c' in letters: %s\n", + letters[i], letters); + exit (1); + } + grid->letters[i / grid->size][i % grid->size] = letter; + } +} + char * grid_string (grid_t *grid) { diff --git a/grid.h b/grid.h index e5b3d1e..e6c205d 100644 --- a/grid.h +++ b/grid.h @@ -43,6 +43,10 @@ typedef struct _grid { void grid_init (grid_t *grid, int size); +void +grid_set_letters (grid_t *grid, + const char *letters); + char * grid_string (grid_t *grid); diff --git a/grid4.c b/grid4.c index cd1e90b..989e38d 100644 --- a/grid4.c +++ b/grid4.c @@ -19,16 +19,28 @@ #include "grid.h" #include "word-game.h" +#include #include #include #define GAME_LENGTH (3 * 60) int -main (void) +main (int argc, char *argv[]) { dict_t dict, solution; grid_t grid; struct timeval tv; + const char *letters = NULL; + + if (argc > 1) { + if (argc == 2) { + letters = argv[1]; + } else { + fprintf (stderr, "Usage: %s [letters]\n", argv[0]); + fprintf (stderr, "Uses the given 16 letters or else a random grid.\n"); + return 1; + } + } gettimeofday (&tv, NULL); srand (tv.tv_sec ^ tv.tv_usec); @@ -37,6 +49,8 @@ main (void) dict_add_words_from_file (&dict, "words.txt"); grid_init (&grid, 4); + if (letters) + grid_set_letters (&grid, letters); dict_init (&solution); grid_solve (&grid, &dict, &solution);