Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def generate(n, result='[X]'):
- for _ in range(n):
- # rule #2
- result = result.replace('F', 'FF')
- # rule #1
- result = result.replace('X', 'F-[[X]+X]+F[+FX]-X')
- return result
- def draw(cmds, size=2):
- stack = []
- for cmd in cmds:
- if cmd == 'F':
- tr.forward(size)
- elif cmd == '-':
- tr.left(25)
- elif cmd == '+':
- tr.right(25)
- elif cmd == 'X':
- pass
- elif cmd == '[':
- stack.append((tr.position(), tr.heading()))
- elif cmd == ']':
- position, heading = stack.pop()
- tr.penup()
- tr.setposition(position)
- tr.setheading(heading)
- tr.pendown()
- else:
- raise ValueError('Unknown Cmd: {}'.format(ord(cmd)))
- tr.update()
- def setup():
- tr.hideturtle()
- tr.tracer(30, 0)
- tr.left(90)
- tr.penup()
- tr.goto(0, -tr.window_height()/2)
- tr.pendown()
- setup()
- plant = generate(6)
- draw(plant, 4)
- tr.exitonclick()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement