]> gitweb.factorcode.org Git - factor.git/commitdiff
maze: generate new mazes with a click
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 15 Feb 2022 18:07:30 +0000 (10:07 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 15 Feb 2022 18:07:30 +0000 (10:07 -0800)
extra/maze/maze.factor

index 1e5c63b72750ea9cda39a41d4a2912e7c4f9ed16..8ffbe5de3652ae361050419f53bd407690b338c6 100644 (file)
@@ -1,7 +1,7 @@
 ! From http://www.ffconsultancy.com/ocaml/maze/index.html
 USING: accessors arrays kernel math math.order math.vectors
 namespaces opengl.demo-support opengl.gl random sequences ui
-ui.gadgets ui.gadgets.canvas ui.render ;
+ui.gadgets ui.gadgets.canvas ui.gestures ui.render ;
 IN: maze
 
 CONSTANT: line-width 8
@@ -29,13 +29,13 @@ SYMBOL: visited
     GL_LINE_STRIP glBegin
     dup vertex
     dup visit
-    dup random-neighbour dup [
+    dup random-neighbour [
         (draw-maze) (draw-maze)
     ] [
-        2drop
+        drop
         glEnd
         GL_LINE_STRIP glBegin
-    ] if ;
+    ] if* ;
 
 : draw-maze ( n -- )
     line-width 2 - glLineWidth
@@ -58,7 +58,9 @@ M: maze draw-gadget* [ n draw-maze ] draw-canvas ;
 
 M: maze pref-dim* drop { 400 400 } ;
 
+M: maze handle-gesture
+    over T{ button-down { # 1 } } =
+    [ nip relayout f ] [ call-next-method ] if ;
+
 MAIN-WINDOW: maze-window { { title "Maze" } }
     <maze> >>gadgets ;
-
-MAIN: maze-window