python - 如何在 for 循环中移动多个海龟?
问题描述
所以,我是 python 的新初学者,对于我的班级,我的任务是让 10 只海龟都在移动并且应该在终点线停下来进行海龟比赛。我被指示为海龟制作一个列表,并有一个 while 循环让它们移动一个随机量,并有一个嵌套的 if 循环来检查获胜者。我无法让所有海龟同时移动,当我运行我的代码时,它会一个接一个地移动海龟,而不是一起移动,有什么想法吗?
import turtle as trtl
import random as rand
zoomers = []
zom = [0,1,2,3,4,5,6,7,8,9]
tloc = -130
trtl.penup()
trtl.goto(-150, 150)
trtl.pendown()
trtl.goto(-150,-140)
trtl.penup()
trtl.goto(180,150)
trtl.pendown()
trtl.goto(180,-140)
trtl.hideturtle()
for z in zom:
zoom = trtl.Turtle("turtle")
zoom.penup()
zoom.goto(-150,-tloc)
tloc += 25
robux = rand.randrange(0,20)
zoomers.append(zoom)
for n in zoomers:
cash = 0
while cash < 100:
zoom.forward(robux)
cash = cash + 1
if zoom.xcor() == 180:
print("We have a winner!")
break```
解决方案
没有直接的方法可以做到这一点,但这是下一个最好的方法。
创建一个乌龟Screen
。将其设置tracer()
为0
,并在循环的每次迭代中更新屏幕。它可能会变得太快,因此sleep
从time
模块中导入以减慢速度。
最小的例子:
from turtle import Turtle, Screen
from random import randrange
from time import sleep
wn = Screen()
wn.tracer(0)
t1 = Turtle('turtle')
t2 = Turtle('turtle')
t1.penup()
t2.penup()
t1.goto(-100, 50)
t2.goto(-100, -50)
while True:
sleep(0.1)
t1.forward(randrange(0, 20))
t2.forward(randrange(0, 20))
wn.update()
推荐阅读
- javascript - 如何使用 let 和 async 将 deepai 输出 blob 保存到文件
- react-native - 世博会加密存储信用卡信息是否安全?
- qt - MouseMoveEvent 停止被调用
- c++ - 从类中的模板函数调用模板函数
- javascript - 使用 JavaScript 删除字符串空格、回车、换行和制表符
- python - 将系列转换为数据框并重命名
- powershell - How to change the URL in an Edge tab with Powershell
- gunicorn - Is there an alternative when using supervisor with Gunicorn?
- javascript - How do you replace "" in a string?
- python - Is there a reason to retrieve env variables outside a Python function vs. inside if only used for that function?