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)
{
void
grid_init (grid_t *grid, int size);
+void
+grid_set_letters (grid_t *grid,
+ const char *letters);
+
char *
grid_string (grid_t *grid);
#include "grid.h"
#include "word-game.h"
+#include <string.h>
#include <sys/time.h>
#include <time.h>
#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);
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);