3

4つの異なるカメを同時に動かすにはどうすればよいですか?また、その方法で人を形作るTurtle.shape方法は?Screenメソッドと呼ばれるものがあることは知ってregister_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)

tFirsttSecondantThirdは位置であり、、、、t1はカメです。すべてのカメが一斉に動くようにしたいです。t2t3t4

4

4 に答える 4

2

これがregister_shapeのドキュメントです

あなたの最初の質問に関しては、私はあなたが何を意味するのか正確にはわかりません。それらをすべて別々のスレッドで移動させることが私の最初のアイデアですが、それでも技術的には同時に移動することはありません。私は実際にタートルグラフィックスを使用したことはありませんが、その概念を知っているだけです。

これはあなたが話していることに近い何かをします

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()
于 2012-05-08T17:04:22.093 に答える
0

可能性としてこれを提供すると思いました。最近、すべてのカメも一緒に踊りたいと思っていました。最も近いのは、すべてのカメオブジェクトのリストを作成し、そのリストを反復処理することでした。

確かに、これにより、一度に1つずつ移動しますが、全員が最初の移動を行うまで、2番目の移動は行われません。

私はあなたのために完全なプログラムをここに書いただけで、それがどのように見えるかを示すだけです。それがあなたが探しているものではない場合、私は謝罪しますが、少なくとも他の誰かのための別の問題に対する可能な解決策です。

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()
于 2014-01-24T10:49:20.757 に答える
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()
于 2016-12-16T11:32:21.887 に答える
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)

于 2018-01-20T03:10:41.257 に答える