Python 同时运行海龟与海龟图形

Python 同时运行海龟与海龟图形,python,turtle-graphics,Python,Turtle Graphics,如何使4只不同的海龟同时移动?另外,如何为Turtle.shape方法制作人物形状?我知道有一个屏幕方法叫做register\u shape,但是我找不到任何关于它的文档 def turtles(self, base): self.t4.goto(self.tFirst) self.t1.goto(self.tSecond) self.t2.goto(self.tThird) self.t3.goto(self.tHome) if base >= 2

如何使4只不同的海龟同时移动?另外,如何为
Turtle.shape
方法制作人物形状?我知道有一个屏幕方法叫做
register\u shape
,但是我找不到任何关于它的文档

def turtles(self, base):
    self.t4.goto(self.tFirst)
    self.t1.goto(self.tSecond)
    self.t2.goto(self.tThird)
    self.t3.goto(self.tHome)
    if base >= 2:
        self.t4.goto(self.tSecond)
        self.t1.goto(self.tThird)
        self.t2.goto(self.tHome)
    if base >= 3:
        self.t4.goto(self.tThird)
        self.t1.goto(self.tHome)
    if base == 4:
        self.t4.goto(self.tHome)

t第一个
t第二个
t第三个
是位置,
t1
t2
t3
t4
是海龟。我希望所有的海龟都能一致行动。

这是它们的文档

至于你的第一个问题,我不太清楚你的确切意思。让它们在不同的线程中移动是我的第一个想法,但即使这样,它们在技术上也不会同时移动。我从来没有实际使用过海龟图形,只是知道这个概念

这与你所说的很接近

import turtle
import numpy as np

tlist = list()
colorlist = ["red", "green", "black", "blue", "brown"]
for i in xrange(5):
    tlist.append(turtle.Turtle(shape="turtle"))
    tlist[i].color(colorlist[i])
    tlist[i].speed(1)
screen = turtle.getscreen()
for i in xrange(100):
    screen.tracer(1000)
    for t in tlist:
        t.right((np.random.rand(1) - .5) * 180)
        t.forward(int((np.random.rand(1) - .5) * 100))
    screen.update()


我想我会把它作为一种可能性。我最近想让我所有的乌龟也一起跳舞,最近我得到的是创建一个我所有乌龟对象的列表,然后在该列表上迭代

诚然,这会让他们一次移动一个,但在所有人都移动第一个之前,他们不会再移动第二个

我在这里为您编写了一个完整的程序,只是为了演示它的外观。如果这不是你想要的,我很抱歉,但至少这是另一个问题的可能解决方案

import turtle
import random
wn = turtle.Screen()

bob = turtle.Turtle()
mary = turtle.Turtle()
fred = turtle.Turtle()
jane = turtle.Turtle()

turtles = [bob, mary, fred, jane]

for move in range(10):
    for item in turtles:
        item.left(random.randrange(-180, 180))
        item.forward(50)

wn.exitonclick()
请尝试以下代码:

import turtle
import threading

window = turtle.Screen()
window.bgcolor("red")


class myTurtle (threading.Thread):
    def __init__(self,init_angle):
        threading.Thread.__init__(self)
        self.noel = turtle.Turtle()
        self.noel.rt(init_angle)
        self.init_angle = init_angle
    def run(self):
        for self.i in range(self.init_angle,self.init_angle + 9):
            for self.j in range(4):
                self.noel.fd(100)
                self.noel.rt(90)
                self.noel.rt(1)


t1 = myTurtle(0)
t2 = myTurtle(90)

t1.start()
t2.start()
window.exitonclick()

要使所有海龟同时移动(如果我理解正确的话),您需要使用
tracer()
方法

turtle.tracer(
    (First number is how many frames go by before turtle updates the screen),
    (second number is a delay in milliseconds)
)

因为海龟每次移动都会更新屏幕,所以跟踪器就是让它们同时移动的方式。通常
turtle.tracer(0,20)
应该很好,或者
turtle.tracer(1,20)

我正在考虑与运动员制作一张运动场图形,所以我需要让它们同时朝不同的方向移动。你也可以尝试延迟动画更新,让它们看起来是同时移动的。我认为更新不会有帮助。另外,我正在运行Python3.2,延迟是一种屏幕方法,在以前的版本中可能有所不同。我调用了delay,它改变了动画的时间,而不是动画之间的时间。所以一个screen.delay(200)花了200毫秒,但是screen.delay(5)花了5毫秒,海龟们仍然有各自的时间。thx for you help您可能应该接受之前人们帮助过您的所有问题的答案。或者至少提供反馈,说明你为什么不接受他们。如果你从不接受回答,人们将停止回答你的问题对不起,我尝试了你的建议,但是更新和延迟方法似乎对动画的连续性没有帮助,但是我感谢你的帮助。
turtle.tracer(
    (First number is how many frames go by before turtle updates the screen),
    (second number is a delay in milliseconds)
)