在一个窗口中制作多只海龟

时间:2019-03-29 01:19:05

标签: python turtle-graphics

运行模块时,我要制造两个以上的乌龟。 所以我在乌龟上声明了两个变量,但我只能看到一只乌龟。 我的代码有什么问题?

import turtle
t1=turtle.Turtle()
t2=turtle.Turtle()

colors = ["red", "blue", "green"]
turtle.bgcolor("yellow")
t1.speed(3)
t1.width(5)
length1 = 10
t2.speed(3)
t2.width(5)
length2 = 10

while length1 < 500:
    t1.fd(length1)
    t1.pencolor(colors[length1%3])
    t1.right (89)
    length1 += 3 #length1 = length1 + 3

while length2 < 500:
    t2.fd(length2)
    t2.pencolor(pink)
    t2.left (89)
    length2 += 4 #length2 = length2 + 4

input()

2 个答案:

答案 0 :(得分:1)

您的海龟正在一步一步地移动。第一个while循环使用t1完成该工作,完成后,第二个while将处理t2。就像“ t1,迈出第一步。然后,t1,迈出第二步。(并重复这一过程,直到length1不再小于500。)现在{{1} }完成,因此t1,迈出第一步。t2,迈出第二步。(并继续。)”

相反,您希望他们轮流执行每个步骤。这就像“ t2,迈出第一步。然后,t1,迈出第一步。t2,迈出第二步。t1,迈出第二步。 (并且继续。)”

因此,您的t2循环应类似于:

while

(请注意,每次移动乌龟时都不必设置笔色。)

答案 1 :(得分:0)

  

我只能看见一只乌龟

从字面上看,只有一只乌龟吗?还是您没有耐心地等待第一只乌龟在第二只乌龟开始之前(由于未引用“粉红色”而中断)?正如人们得出的结论,如果这是关于希望同时看到两只乌龟在行动,那么这就是我的方法:

简短地使用线程,我使用生成器来允许两只乌龟以类似协程的方式运行。优点是,海龟可以共享完全相同的代码,或者完全可以使用不同的代码。但是它避免了重复代码或在同一while循环中维护不相关代码:

from turtle import Screen, Turtle

screen = Screen()
screen.bgcolor("yellow")

t1 = Turtle()
t1.pencolor('blue')

t2 = Turtle()
t2.pencolor('pink')

def pattern(turtle, increment, angle):
    turtle.speed('fast')
    turtle.width(5)
    length = 10

    while length < 500:
        turtle.forward(length)
        turtle.right(angle)
        length += increment
        yield 0

generator1 = pattern(t1, 3, 89)
generator2 = pattern(t2, 4, -89)

while next(generator1, 1) + next(generator2, 1) < 2:
    pass

screen.exitonclick()