2012-05-08 14 views
3

どのようにして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) 

tFirsttSecondtThirdt4がカメあり、位置であり、t1t2t3。私はすべてのカメが一斉に動くようにしたい。あなたの最初の質問のために、私はあなたが意味を正確にわからないんだけど、ここで

答えて

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

私はスポーツフィールドのグラフィックをプレイヤーと作ろうと考えているので、それぞれのプレイヤーを同時に異なる方向に動かす必要があります。 –

+0

アニメーションの更新が同時に動いたように見せかけることもできます[turtle.update](http://docs.python.org/library/turtle.html#turtle.update) – Matt

+0

私はしません更新が役立つと思います。また、私はPython 3.2を実行しています、そして遅延はスクリーンメソッドです、それは以前のバージョンで異なっていたかもしれません。遅れと呼ばれ、アニメーションの時間ではなくアニメーションの時間が変わった。 screen.delay(200)は200ミリ秒かかりましたが、screen.delay(5)は5秒かかりました。あなたのためのthx –

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() 
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() 
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)です。

関連する問題