Domanda

sto usando grafica della tartaruga di riprodurre l-sistemi (biblioteca TurtleWorld). Le regole che hanno cercato di applicare il lavoro bene quando non si tratti di tornare a uno stato salvato precedente, ma ogni volta che c'è un [e] (vedi regola sotto), le cose si rompono e la tartaruga solo pareggi bs casuali.

In sostanza, l'istruzione if che i controlli dove ']' è presente, è dove il codice si rompe, credo. (Inoltre, io so che non è ottimizzato per il momento, ho scritto una solida SE per amor di chiarezza ...)

EDIT:. Il nuovo codice - tutta questa cosa angolo di calcolo non era necessario, come abbiamo get_heading (), che informa noi dell'angolo stiamo orientati in

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()
È stato utile?

Soluzione

Un paio di idee:

  • Non hai mai impostato angle al nuovo angolo (newa) nel ]-gestore.
  • Il condizionale è sbagliato secondo il commento, newa>0 si trasformerebbe ha lasciato se l'angolo è positivo.
  • Sei sicuro maniglie rt negativo angoli bene?
  • Si potrebbe semplificare il codice molto se si utilizza pop invece, e ha spinto una tupla o somesuch dello stato.
  • Un indice di -1 è pari a len(lst) - 1.

Esempio di pop-suggestione:

>>> state = []
>>> angle = 90
>>> posx = 10
>>> posy = 15
>>> state.append((angle, posx, posy))
>>> angle = 40
>>> angle, posx, posy = state.pop()
>>> angle
90
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top