#include "word-game.h"
#include "demo-item.h"
-#define RACK_DICT_ENTRY_FOUND (1<<1)
+#define RACK_DICT_ENTRY_OBSCURE (1<<1)
+#define RACK_DICT_ENTRY_FOUND (1<<2)
#define MAX_TILES 7
typedef struct _tile
int guess_length;
bag_t bag;
dict_t dict;
+ dict_t obscure;
dict_t solution;
int solution_total;
GooCanvasItem *solution_item;
break;
}
+ /* Don't bother displaying unfound obscure words. */
+ if (*entry & RACK_DICT_ENTRY_OBSCURE) {
+ if (! found)
+ return;
+ cairo_set_source_rgb (cr, 0, 1, 0); /* green */
+ }
+
cairo_move_to (cr, cursor->x, cursor->y);
if (show_blanks) {
int i, length = strlen (word);
dict_init (&rack->dict);
dict_add_words_from_file (&rack->dict, "words.txt");
+ dict_init (&rack->obscure);
+ dict_add_words_from_file (&rack->obscure, "obscure.txt");
+
dict_init (&rack->solution);
rack->solution_total = 0;
rack->num_tiles = 0;
}
+static void
+_flag_obscure_word (void *closure, char *word, dict_entry_t *entry)
+{
+ dict_t *obscure = closure;
+ dict_entry_t *obscure_entry;
+
+ obscure_entry = dict_lookup (obscure, word);
+ if (DICT_ENTRY_IS_WORD (obscure_entry))
+ *entry |= RACK_DICT_ENTRY_OBSCURE;
+}
+
static void
rack_new_game (rack_t *rack)
{
for (i = 0; i + length <= bottom + 1; i++) {
memcpy (word, &rack->bag.tiles[i], length);
word[length] = '\0';
- printf ("Candidate word %s\n", word);
dict_fini (&rack->solution);
dict_init (&rack->solution);
subanagram_expand (word, &rack->dict, &rack->solution);
}
DONE:
+ dict_for_each (&rack->solution,
+ _flag_obscure_word, &rack->obscure);
rack->solution_total = dict_count (&rack->solution);
goo_canvas_item_simple_changed (GOO_CANVAS_ITEM_SIMPLE (rack->solution_item), FALSE);