Advertisement
pacho_the_python

Untitled

Apr 22nd, 2024
602
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.05 KB | None | 0 0
  1. def generate(n, result='[X]'):
  2.     for _ in range(n):
  3.         # rule #2
  4.         result = result.replace('F', 'FF')
  5.         # rule #1
  6.         result = result.replace('X', 'F-[[X]+X]+F[+FX]-X')
  7.  
  8.     return result
  9.  
  10.  
  11. def draw(cmds, size=2):
  12.     stack = []
  13.     for cmd in cmds:
  14.         if cmd == 'F':
  15.             tr.forward(size)
  16.         elif cmd == '-':
  17.             tr.left(25)
  18.         elif cmd == '+':
  19.             tr.right(25)
  20.         elif cmd == 'X':
  21.             pass
  22.         elif cmd == '[':
  23.             stack.append((tr.position(), tr.heading()))
  24.         elif cmd == ']':
  25.             position, heading = stack.pop()
  26.             tr.penup()
  27.             tr.setposition(position)
  28.             tr.setheading(heading)
  29.             tr.pendown()
  30.         else:
  31.             raise ValueError('Unknown Cmd: {}'.format(ord(cmd)))
  32.     tr.update()
  33.  
  34.  
  35. def setup():
  36.     tr.hideturtle()
  37.     tr.tracer(30, 0)
  38.     tr.left(90)
  39.     tr.penup()
  40.     tr.goto(0, -tr.window_height()/2)
  41.     tr.pendown()
  42.  
  43.  
  44. setup()
  45. plant = generate(6)
  46. draw(plant, 4)
  47. tr.exitonclick()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement