如何让4只不同的海龟同时移动?另外,如何使Turtle.shape
方法的人形状?我知道有一个名为register_shape
的Screen方法,但我找不到任何文档。
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)
tFirst
,tSecond
和tThird
是职位,t1
,t2
,t3
,t4
是海龟。我希望所有的乌龟齐声移动。
答案 0 :(得分:2)
关于你的第一个问题,我不确定你的意思。将它们全部移动到单独的线程中将是我的第一个想法,但即便如此,它们在技术上也不会同时移动。我从来没有真正使用过海龟图形,但只知道这个概念。
这与您所谈论的内容非常接近
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 numpy as np
from time import sleep
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 i, t in enumerate(tlist):
#t.right((np.random.rand(1) - .5) * 180))
t.right(33 * i)
#t.forward(int((np.random.rand(1) - .5) * 100))
t.forward(50 * i)
sleep(1)
screen.update()
答案 1 :(得分:0)
以为我会提出这个可能性。我最近想让所有的乌龟一起跳舞,我得到的最接近的是创建一个所有乌龟对象的列表,然后遍历该列表。
不可否认,这会让他们一次移动一个但是他们不会再做第二步,直到所有人都成为第一个。
我在这里写了一个完整的程序,仅仅是为了展示它的外观。如果它不是你想要的,我会道歉,但至少它可能解决其他人的问题。
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()
答案 2 :(得分:0)
试试这段代码:
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()
答案 3 :(得分:0)
要使所有海龟同时移动(如果我正确理解了问题),您需要使用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)
。