]> git.cworth.org Git - wordgame/blobdiff - rack-fancy.c
rack-fancy: Ignore any blank tiles drawn from the bag
[wordgame] / rack-fancy.c
index bff8ddc2d6957835edbec91df470b6d78cae1661..21c2953064307af7a78a69b0fcbcd3a670500427 100644 (file)
@@ -83,6 +83,9 @@ dict_paint_action (void *closure, char *word, dict_entry_t *entry)
     cairo_t *cr = cursor->cr;
     double new_x, new_y;
 
+    if (strlen (word) < 3)
+       return;
+
     cairo_move_to (cr, cursor->x, cursor->y);
     if (*entry & RACK_DICT_ENTRY_FOUND) {
        cairo_show_text (cr, word);
@@ -337,10 +340,12 @@ on_key_press_event (GtkWidget     *widget,
 
     if (event->keyval == GDK_Return) {
        dict_entry_t *entry;
-       entry = dict_lookup (rack->solution, rack->guess);
-       if (DICT_ENTRY_IS_WORD (entry)) {
-           *entry = *entry | RACK_DICT_ENTRY_FOUND;
-           goo_canvas_item_simple_changed (GOO_CANVAS_ITEM_SIMPLE (rack->solution_item), FALSE);
+       if (rack->guess_length >= 3) {
+           entry = dict_lookup (rack->solution, rack->guess);
+           if (DICT_ENTRY_IS_WORD (entry)) {
+               *entry = *entry | RACK_DICT_ENTRY_FOUND;
+               goo_canvas_item_simple_changed (GOO_CANVAS_ITEM_SIMPLE (rack->solution_item), FALSE);
+           }
        }
        rack_return_all (rack);
        return TRUE;
@@ -453,6 +458,7 @@ main (int argc, char *argv[])
     rack_t rack;
     char word[8];
     int i;
+    char *draw;
     GtkWidget *window;
     GooCanvas *canvas;
 
@@ -462,11 +468,14 @@ main (int argc, char *argv[])
     bag_init (&bag);
     bag_shuffle (&bag);
 
-    memcpy (word, bag.tiles, 7);
-    word[7] = '\0';
-
-    for (i = 0; i < 7; i++)
-       word[i] = toupper (word[i]);
+    /* Keep drawing until we get 7 non-blank tiles */
+    i = 0;
+    draw = bag.tiles;
+    while (i < 7) {
+       if (*draw != '?')
+           word[i++] = toupper (*draw);
+       draw++;
+    }
 
     dict_init (&dict);
     dict_add_words_from_file (&dict, "words.txt");