Python 同时运行海龟与海龟图形
如何使4只不同的海龟同时移动?另外,如何为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
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)
)