/*
* Copyright © 2006 Carl Worth
*
- * This program is free software; you can redistribute it and\/or modify
+ * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
_count_possible (dict_cursor_next (cursor, c), depth + 1, possible);
}
+static void
+_print_stats (int found[WORD_GAME_MAX_WORD_LENGTH+1],
+ int possible[WORD_GAME_MAX_WORD_LENGTH+1],
+ int found_total,
+ int possible_total)
+{
+ int i;
+
+ for (i = 2; i <= 17; i++)
+ if (possible[i])
+ printf ("%d:(%d/%d) ", i, found[i], possible[i]);
+
+ printf ("total:(%d/%d = %.2f%%)\n",
+ found_total, possible_total,
+ 100 * (double) found_total / possible_total);
+}
+
+
void
word_game_play (const char *puzzle,
dict_t *dict,
for (i=0; i < 17; i++)
possible_total += possible[i];
- printf ("%s\n\n", puzzle);
+ printf ("%s\n", puzzle);
just_saw_puzzle = TRUE;
remaining = time_limit_seconds;
sprintf (prompt, "> ");
remaining = 1;
}
- do {
+ while (1) {
if (time_limit_seconds) {
- minutes = remaining / 60;
- seconds = remaining % 60;
- sprintf (prompt, "%02d:%02d ", minutes, seconds);
+ if (remaining > 0) {
+ minutes = remaining / 60;
+ seconds = remaining % 60;
+ sprintf (prompt, "%02d:%02d ", minutes, seconds);
+ } else {
+ printf ("Time's up.\a\n");
+ sprintf (prompt, "> ");
+ time_limit_seconds = 0;
+ }
}
response = readline (prompt);
if (response == NULL)
break;
if (strlen (response) == 0) {
if (! just_saw_puzzle) {
- printf ("%s\n\n", puzzle);
+ printf ("%s\n", puzzle);
just_saw_puzzle = TRUE;
} else {
- for (i = 2; i <= 17; i++)
- if (possible[i])
- printf ("%d:(%d/%d) ", i, found[i], possible[i]);
- printf ("total:(%d/%d = %.2f%%)\n",
- found_total, possible_total,
- 100 * (double) found_total / possible_total);
+ _print_stats (found, possible, found_total, possible_total);
}
} else {
dict_entry_t *entry;
remaining = floor (0.5 + (tv_stop.tv_sec - tv.tv_sec) + (tv_stop.tv_usec - tv.tv_usec) / 1000000.0);
minutes = remaining / 60;
}
- } while (remaining > 0);
-
- printf ("%s\n\n", puzzle);
+ }
- printf ("Words you found:\n");
- dict_print_by_length_if (answers, seen_predicate);
+ printf ("\n%s\n", puzzle);
- printf ("\nWords you missed:\n");
- dict_print_by_length_if (answers, unseen_predicate);
printf ("\n");
+ _print_stats (found, possible, found_total, possible_total);
+ printf ("\n");
+
+ if (found_total) {
+ printf ("Words you found:\n");
+ dict_print_by_length_if (answers, seen_predicate);
+ printf ("\n");
+ }
+
+ if (found_total < possible_total) {
+ printf ("Words you missed:\n");
+ dict_print_by_length_if (answers, unseen_predicate);
+ printf ("\n");
+ }
printf ("You found %d of %d words (%.2f%%)\n",
found_total, possible_total,