首页 > 解决方案 > 如何在 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```

标签: pythonturtle-graphicspython-turtle

解决方案


没有直接的方法可以做到这一点,但这是下一个最好的方法。

创建一个乌龟Screen。将其设置tracer()0,并在循环的每次迭代中更新屏幕。它可能会变得太快,因此sleeptime模块中导入以减慢速度。

最小的例子:

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()

推荐阅读