|
|
@@ -3,14 +3,16 @@ |
|
|
|
(require graphics/value-turtles) |
|
|
|
(require file/convertible) |
|
|
|
|
|
|
|
(define forward 3) |
|
|
|
(define start '(X)) |
|
|
|
(define forward 4) |
|
|
|
(define theta 20) |
|
|
|
(define generations 6) |
|
|
|
(define generations 7) |
|
|
|
(define thick 8) |
|
|
|
|
|
|
|
(define (tend sym) |
|
|
|
(cond |
|
|
|
[(eq? sym 'F) '(F F)] |
|
|
|
[(eq? sym 'X) '(F m l l X r p X r p F l p F X r m X)] |
|
|
|
[(eq? sym 'X) '(d F m l l X r p X r p F l p F X r m X)] |
|
|
|
[else `(,sym)])) |
|
|
|
|
|
|
|
(define (season plant) |
|
|
@@ -24,7 +26,7 @@ |
|
|
|
|
|
|
|
(define init-turtle |
|
|
|
(set-pen-width (turtles 600 800 300 400 (/ pi -2)) |
|
|
|
1)) |
|
|
|
thick)) |
|
|
|
(define state '()) |
|
|
|
|
|
|
|
(define (step-turtle op turtle) |
|
|
@@ -32,14 +34,25 @@ |
|
|
|
[(eq? op 'F) (draw forward turtle)] |
|
|
|
[(eq? op 'm) (turn theta turtle)] |
|
|
|
[(eq? op 'p) (turn (* -1 theta) turtle)] |
|
|
|
[(eq? op 'u) (set-pen-width turtle |
|
|
|
(+ 1 (turtles-pen-width turtle)))] |
|
|
|
[(eq? op 'd) (set-pen-width turtle |
|
|
|
(- (turtles-pen-width turtle) 1))] |
|
|
|
[(eq? op 'l) (begin (set! state |
|
|
|
(cons (turtle-state turtle) |
|
|
|
state)) |
|
|
|
(set! thick |
|
|
|
(cons (turtles-pen-width turtle) |
|
|
|
thick)) |
|
|
|
turtle)] |
|
|
|
[(eq? op 'r) (restore-turtle-state turtle |
|
|
|
(begin (let ([s (car state)]) |
|
|
|
(set! state (cdr state)) |
|
|
|
s)))] |
|
|
|
[(eq? op 'r) (let ([s (car state)] |
|
|
|
[t (car thick)]) |
|
|
|
(begin |
|
|
|
(set! state (cdr state)) |
|
|
|
(set! thick (cdr thick)) |
|
|
|
(set-pen-width |
|
|
|
(restore-turtle-state turtle s) |
|
|
|
t)))] |
|
|
|
[else turtle])) |
|
|
|
|
|
|
|
(define (run-turtle plant turtle) |
|
|
@@ -54,7 +67,7 @@ |
|
|
|
(write-bytes pict file))) |
|
|
|
|
|
|
|
(define (test-plant) |
|
|
|
(let ([plant (grow '(X) generations)]) |
|
|
|
(let ([plant (grow start generations)]) |
|
|
|
(begin (set! state '()) |
|
|
|
(write-plant (run-turtle plant init-turtle) |
|
|
|
"test-plant.png")))) |
|
|
|