运行模块时,我要制造两个以上的乌龟。 所以我在乌龟上声明了两个变量,但我只能看到一只乌龟。 我的代码有什么问题?
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()
答案 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()