]> git.cworth.org Git - wordgame/blobdiff - rack-fancy.c
Make rack-fancy select and display a rack of 7 random letters
[wordgame] / rack-fancy.c
index 38c125394e9c8aeeaa6f4070cf643dafc8b3f362..14c8d70fa8b55c3f0e47f4c13a3c2cc70b69cc78 100644 (file)
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA."
  */
 #include <stdlib.h>
+#include <string.h>
 #include <goocanvas.h>
+#include <sys/time.h>
+#include <time.h>
+#include <ctype.h>
+
+#include "word-game.h"
 #include "demo-item.h"
 
 static gboolean
@@ -61,10 +67,13 @@ on_button_press (GooCanvasItem  *item,
 }
 
 static void
-create_canvas (GtkWidget *parent)
+create_canvas (GtkWidget *parent, char *word)
 {
     GtkWidget *canvas;
-    GooCanvasItem *root, *rect;
+    GooCanvasItem *root, *letter;
+    int i;
+    int item_size = 60;
+    int item_pad = 5;
 
     canvas = goo_canvas_new ();
     gtk_widget_set_size_request (canvas, 400, 400);
@@ -74,25 +83,43 @@ create_canvas (GtkWidget *parent)
 
     root = goo_canvas_get_root_item (GOO_CANVAS (canvas));
 
-    rect = goo_demo_item_new (root, 30, 20, 50, 30,
-                             "fill-color", "purple",
-                             NULL);
-
-    g_signal_connect (rect, "button_press_event",
-                     (GtkSignalFunc) on_button_press, NULL);
+    for (i = 0; i < strlen (word); i++) {
+       letter = goo_demo_item_new (root,
+                                   30 + i * (item_size + item_pad), 20,
+                                   item_size, item_size,
+                                   word[i],
+                                   NULL);
 
+       g_signal_connect (letter, "button_press_event",
+                         (GtkSignalFunc) on_button_press, NULL);
+    }
 }
 
 int
 main (int argc, char *argv[])
 {
+    struct timeval tv;
+    bag_t bag;
+    char rack[8];
+    int i;
     GtkWidget *window;
 
-    gtk_init (&argc, &argv);
+    gettimeofday (&tv, NULL);
+    srand (tv.tv_sec ^ tv.tv_usec);
+
+    bag_init (&bag);
+    bag_shuffle (&bag);
 
+    memcpy (rack, bag.tiles, 7);
+    rack[7] = '\0';
+
+    for (i = 0; i < 7; i++)
+       rack[i] = toupper (rack[i]);
+
+    gtk_init (&argc, &argv);
     window = create_window ();
 
-    create_canvas (window);
+    create_canvas (window, rack);
 
     gtk_main ();