Pregunta

Estoy usando gráficos de tortuga para reproducir los sistemas L (Biblioteca TurtleWorld). Las reglas que he tratado de aplicar funcionan bien cuando no implican volver a un estado guardado anterior, pero cada vez que hay una [y] (ver regla a continuación), las cosas se rompen y la tortuga simplemente atrae a BS aleatorio.

Básicamente, la declaración IF que verifica dónde está '' ', creo que se rompe el código, creo. (Además, sé que no está optimizado por el momento, he escrito un sólido si por el bien de la claridad ...)

Editar: nuevo código: todo este ángulo de cálculo no era necesario, ya que tenemos get_heading (), que nos informa sobre el ángulo en el que estamos orientados.

import turtle

turtle.down()

n = 'F'

s1 = 'F'
s2 = 'FF-[-F+F+F]+[+F-F-F]'
#s3 = 'F'
#s4 = 'FF'

steps = 5

for i in range(steps):
    n = n.replace(s1,s2)
    #n = n.replace(s3,s4)

a = 25

x = []
y = []
angle = []

for i in n:
    if i == 'F':
        turtle.forward(2)
    if i == '+':
        turtle.left(a)
    if i == '-':
        turtle.right(a)
    if i=='[':
        x.append(turtle.xcor())
        y.append(turtle.ycor())
        angle.append(turtle.heading())
    if i==']':
        turtle.pu()
        turtle.setpos(x[len(x)-1],y[len(y)-1])
        turtle.right(turtle.heading())
        turtle.setheading(angle[len(angle)-1])
        x.pop()
        y.pop()
        angle.pop()
        turtle.pd()
¿Fue útil?

Solución

Un par de ideas:

  • Nunca te pusiste angle al nuevo ángulo (newa) en tus ]-manipulador.
  • Su condicional está mal según el comentario, newa>0 Giraría a la izquierda si el ángulo es positivo.
  • Está seguro rt maneja bien los ángulos negativos?
  • Puede simplificar mucho su código si usa pop En cambio, y empujó una tupla o una parte del estado.
  • Un índice de -1 es igual a len(lst) - 1.

Ejemplo de la pop-sugerencia:

>>> state = []
>>> angle = 90
>>> posx = 10
>>> posy = 15
>>> state.append((angle, posx, posy))
>>> angle = 40
>>> angle, posx, posy = state.pop()
>>> angle
90
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top