maze.nv
· 4.5 KiB · Text
原始文件
Playground
= || jump pen x |pen position| $oldx $y |@math| $x =
|pen position| $x $y
= || jump pen y |pen position| $x $oldy |@math| $y =
|pen position| $x $y
= || jump |backtrack| $row $col =
|@math| multiply $col 2
|@math| multiply $row 2
|| jump pen x || jump pen y
|matrix position| $row $col
= || jump |generate| =
= || restore cells |discarded cells| $row $col =
|cells| $row $col || restore cells
= || restore cells =
= || delete cell |location| $row $col |cells| $row $col =
|| restore cells
= || delete cell |location| $row $col? |cells| $r $c =
|discarded cells| $r $c
|| delete cell
= || delete cell |location| $row $col =
|| restore cells
= || prepare cells |cells| 127 |@math| 127 =
|cells| 127 127
= || next column |@math| $col =
|cells| 0 $col
|| prepare cells
= || prepare cells |cells| $col |@math| 127 =
|@math|add $col 1
|cells| 127 $col
|| next column
= || prepare cells |cells| $col |@math| $row =
|@math| add $row 1
|cells| $col
|cells| $row $col
|| prepare cells
= || prepare cells |cells| $row $col =
|@math| add $row 1
|cells| $col
|cells| $row $col
|| prepare cells
= || compute down $col |@math| $row =
|down neighbor| $row $col
= || compute right $row |@math| $col =
|right neighbor| $row $col
= || compute up $col |@math| $row =
|up neighbor| $row $col
= || compute left $row |@math| $col =
|left neighbor| $row $col
= || find valid neighbors? |down neighbor| $row $col |cells| $row $col =
|discarded cells| $row $col
|valid down neighbor| $row $col
= || find valid neighbors? |right neighbor| $row $col |cells| $row $col =
|discarded cells| $row $col
|valid right neighbor| $row $col
= || find valid neighbors? |up neighbor| $row $col |cells| $row $col =
|discarded cells| $row $col
|valid up neighbor| $row $col
= || find valid neighbors? |left neighbor| $row $col |cells| $row $col =
|discarded cells| $row $col
|valid left neighbor| $row $col
= || find valid neighbors? |cells| $row $col =
|discarded cells| $row $col
= |up neighbor| $row $col =
= |right neighbor| $row $col =
= |down neighbor| $row $col =
= |left neighbor| $row $col =
= || find valid neighbors =
|| restore cells
= || find neighbors |location| $row $col =
|| compute down $col |@math| add $row 1
|| compute right $row |@math| add $col 1
|| compute up $col |@math| add $row -1
|| compute left $row |@math| add $col -1
|| find valid neighbors
= || go in direction |@math| 1 |valid up neighbor| $row $col =
|| move up || move up
|| delete cell |location| $row $col
|matrix position| $row $col || clear navigation state
= || go in direction |@math| 2 |valid right neighbor| $row $col =
|| move right || move right
|| delete cell |location| $row $col
|matrix position| $row $col || clear navigation state
= || go in direction |@math| 3 |valid down neighbor| $row $col =
|| move down || move down
|| delete cell |location| $row $col
|matrix position| $row $col || clear navigation state
= || go in direction |@math| 4 |valid left neighbor| $row $col =
|| move left || move left
|| delete cell |location| $row $col
|matrix position| $row $col || clear navigation state
= || go in direction? |@math| 1 |sweep|=
|@math| 2
= || go in direction? |@math| 2 |sweep|=
|@math| 3
= || go in direction? |@math| 3 |sweep|=
|@math| 4
= || go in direction? |@math| 4 |sweep|=
|@math| 1
= || go in direction |@math| $n =
|| clear navigation state || jump
= || push location to backtrack stack |location| $row $col =
|backtrack| $row $col
= || push location to backtrack stack =
= || clear navigation state? |valid up neighbor| $r $c =
|| push location to backtrack stack
= || clear navigation state? |valid left neighbor| $r $c =
|| push location to backtrack stack
= || clear navigation state? |valid down neighbor| $r $c =
|| push location to backtrack stack
= || clear navigation state? |valid right neighbor| $r $c =
|| push location to backtrack stack
= || clear navigation state? |sweep| =
= || clear navigation state =
= || pick a random direction |matrix position| $row $col =
|| find neighbors |location| $row $col
|| go in direction |location| $row $col |sweep| |sweep| |sweep|
|@math| random 1 5
= || update |generate|? =
|| pick a random direction
==
|cells| 1 0 |matrix position| 0 0 |screen resolution| 256 256
|| prepare cells
|| pen brush pencil
|| pen down
|| pen color 255 255 255
|generate|
1 | = || jump pen x |pen position| $oldx $y |@math| $x = |
2 | |pen position| $x $y |
3 | |
4 | = || jump pen y |pen position| $x $oldy |@math| $y = |
5 | |pen position| $x $y |
6 | |
7 | = || jump |backtrack| $row $col = |
8 | |@math| multiply $col 2 |
9 | |@math| multiply $row 2 |
10 | || jump pen x || jump pen y |
11 | |matrix position| $row $col |
12 | = || jump |generate| = |
13 | |
14 | = || restore cells |discarded cells| $row $col = |
15 | |cells| $row $col || restore cells |
16 | = || restore cells = |
17 | |
18 | = || delete cell |location| $row $col |cells| $row $col = |
19 | || restore cells |
20 | = || delete cell |location| $row $col? |cells| $r $c = |
21 | |discarded cells| $r $c |
22 | || delete cell |
23 | = || delete cell |location| $row $col = |
24 | || restore cells |
25 | |
26 | = || prepare cells |cells| 127 |@math| 127 = |
27 | |cells| 127 127 |
28 | |
29 | = || next column |@math| $col = |
30 | |cells| 0 $col |
31 | || prepare cells |
32 | |
33 | = || prepare cells |cells| $col |@math| 127 = |
34 | |@math|add $col 1 |
35 | |cells| 127 $col |
36 | || next column |
37 | |
38 | = || prepare cells |cells| $col |@math| $row = |
39 | |@math| add $row 1 |
40 | |cells| $col |
41 | |cells| $row $col |
42 | || prepare cells |
43 | |
44 | = || prepare cells |cells| $row $col = |
45 | |@math| add $row 1 |
46 | |cells| $col |
47 | |cells| $row $col |
48 | || prepare cells |
49 | |
50 | = || compute down $col |@math| $row = |
51 | |down neighbor| $row $col |
52 | |
53 | = || compute right $row |@math| $col = |
54 | |right neighbor| $row $col |
55 | |
56 | = || compute up $col |@math| $row = |
57 | |up neighbor| $row $col |
58 | |
59 | = || compute left $row |@math| $col = |
60 | |left neighbor| $row $col |
61 | |
62 | = || find valid neighbors? |down neighbor| $row $col |cells| $row $col = |
63 | |discarded cells| $row $col |
64 | |valid down neighbor| $row $col |
65 | |
66 | = || find valid neighbors? |right neighbor| $row $col |cells| $row $col = |
67 | |discarded cells| $row $col |
68 | |valid right neighbor| $row $col |
69 | |
70 | = || find valid neighbors? |up neighbor| $row $col |cells| $row $col = |
71 | |discarded cells| $row $col |
72 | |valid up neighbor| $row $col |
73 | |
74 | = || find valid neighbors? |left neighbor| $row $col |cells| $row $col = |
75 | |discarded cells| $row $col |
76 | |valid left neighbor| $row $col |
77 | |
78 | = || find valid neighbors? |cells| $row $col = |
79 | |discarded cells| $row $col |
80 | |
81 | = |up neighbor| $row $col = |
82 | = |right neighbor| $row $col = |
83 | = |down neighbor| $row $col = |
84 | = |left neighbor| $row $col = |
85 | |
86 | = || find valid neighbors = |
87 | || restore cells |
88 | |
89 | = || find neighbors |location| $row $col = |
90 | || compute down $col |@math| add $row 1 |
91 | || compute right $row |@math| add $col 1 |
92 | || compute up $col |@math| add $row -1 |
93 | || compute left $row |@math| add $col -1 |
94 | || find valid neighbors |
95 | |
96 | = || go in direction |@math| 1 |valid up neighbor| $row $col = |
97 | || move up || move up |
98 | || delete cell |location| $row $col |
99 | |matrix position| $row $col || clear navigation state |
100 | |
101 | = || go in direction |@math| 2 |valid right neighbor| $row $col = |
102 | || move right || move right |
103 | || delete cell |location| $row $col |
104 | |matrix position| $row $col || clear navigation state |
105 | |
106 | = || go in direction |@math| 3 |valid down neighbor| $row $col = |
107 | || move down || move down |
108 | || delete cell |location| $row $col |
109 | |matrix position| $row $col || clear navigation state |
110 | |
111 | = || go in direction |@math| 4 |valid left neighbor| $row $col = |
112 | || move left || move left |
113 | || delete cell |location| $row $col |
114 | |matrix position| $row $col || clear navigation state |
115 | |
116 | = || go in direction? |@math| 1 |sweep|= |
117 | |@math| 2 |
118 | = || go in direction? |@math| 2 |sweep|= |
119 | |@math| 3 |
120 | = || go in direction? |@math| 3 |sweep|= |
121 | |@math| 4 |
122 | = || go in direction? |@math| 4 |sweep|= |
123 | |@math| 1 |
124 | |
125 | = || go in direction |@math| $n = |
126 | || clear navigation state || jump |
127 | |
128 | = || push location to backtrack stack |location| $row $col = |
129 | |backtrack| $row $col |
130 | |
131 | = || push location to backtrack stack = |
132 | |
133 | = || clear navigation state? |valid up neighbor| $r $c = |
134 | || push location to backtrack stack |
135 | = || clear navigation state? |valid left neighbor| $r $c = |
136 | || push location to backtrack stack |
137 | = || clear navigation state? |valid down neighbor| $r $c = |
138 | || push location to backtrack stack |
139 | = || clear navigation state? |valid right neighbor| $r $c = |
140 | || push location to backtrack stack |
141 | = || clear navigation state? |sweep| = |
142 | = || clear navigation state = |
143 | |
144 | = || pick a random direction |matrix position| $row $col = |
145 | || find neighbors |location| $row $col |
146 | || go in direction |location| $row $col |sweep| |sweep| |sweep| |
147 | |@math| random 1 5 |
148 | |
149 | = || update |generate|? = |
150 | || pick a random direction |
151 | |
152 | == |
153 | |cells| 1 0 |matrix position| 0 0 |screen resolution| 256 256 |
154 | || prepare cells |
155 | || pen brush pencil |
156 | || pen down |
157 | || pen color 255 255 255 |
158 | |generate| |
159 | |
160 |