1
1
rem https://en.wikipedia.org/wiki/L-system
2
2
const fg_col = rgb( 154 , 170 , 53 )
3
3
const bg_col = rgb( 238 , 241 , 221 )
4
+ color fg_col, bg_col
4
5
5
6
sub draw_turtle(script, x, y, stem, turn, angle)
6
- local a, stack, i, idx, x2, y2
7
+ local a, stack, i, idx, x2, y2, col
7
8
dim stack
9
+ cls
8
10
for i = 0 to len(script)
9
11
select case mid(script, i, 1 )
10
12
case "F" , "1" , "0" ' draw forward from current position
@@ -26,6 +28,7 @@ sub draw_turtle(script, x, y, stem, turn, angle)
26
28
delete stack, idx, 1
27
29
end select
28
30
next i
31
+ showpage
29
32
end
30
33
31
34
func create_lsystem( byref rules, byref variables, maxDepth, s, depth)
@@ -53,24 +56,16 @@ sub show_plant
53
56
local maxDepth = 6
54
57
local rules = { "X" : "F+[[X]-X]-F[-FX]+X" , "F" : "FF" }
55
58
local variables = ["X" , "F" ]
56
- local angle = 35
57
- local stem = 4
59
+ local stem = 3
58
60
local script = create_lsystem(rules, variables, maxDepth, "X" , 0 )
61
+ local a = 35
59
62
60
- for j = 0 to 10
61
- cls
62
- draw_turtle(script, x, y, stem, 20 , 90 )
63
- showpage
64
- delay( 100 )
65
- cls
66
- draw_turtle(script, x, y, stem, 36 , 90 )
67
- showpage
68
- delay( 100 )
69
- cls
70
- draw_turtle(script, x, y, stem, 39 , 90 )
71
- showpage
72
- delay( 100 )
73
- next j
63
+ draw_turtle(script, x, y, stem, 35 , 90 )
64
+ delay( 1200 )
65
+ for a = 35 to 80 step 1
66
+ draw_turtle(script, x, y, stem, 45 -a, 90 )
67
+ delay( 20 )
68
+ next a
74
69
end
75
70
76
71
sub show_tree
@@ -80,14 +75,15 @@ sub show_tree
80
75
local rules = { "1" : "11" , "0" : "1[-0]+0" }
81
76
local variables = ["1" , "0" ]
82
77
local angle = 70
83
- local stem = 4
84
-
85
- local script = create_lsystem(rules, variables, maxDepth, "0" , 0 )
86
- draw_turtle(script, x, y, stem, angle, 90 )
78
+ local stem = 2
79
+ for d = 2 to 8
80
+ local script = create_lsystem(rules, variables, d, "0" , 0 )
81
+ draw_turtle(script, x, y, stem, angle, 90 )
82
+ delay( 120 )
83
+ next d
87
84
end
88
85
89
- color fg_col, bg_col
90
- cls
91
- 'show_plant
92
- show_tree
93
- ? "ok"
86
+ 'show_tree
87
+ 'delay(1000)
88
+ show_plant
89
+ pause
0 commit comments