2017-11-09 19 views
0

私はturtleを使用してPythonでゲームを作成していますが、私はカメの速度が0であるため、ループ内のカメの速度を制御できません。Python 3のカメの速度

import turtle 
c=turtle.Screen() 
a=turtle.Turtle() 
a.speed(0) 
b=True 
def ch(a , d): 
     global b 
     b = False 
while b: 
     a.fd(1) 
     c.onclick(ch) 
c.mainloop() 
+0

あなたの問題はどうなりますか? 何を達成したいですか? これまでに何を試しましたか? –

+0

私は、カメを使用してPythonでゲームを作成していますが、ループ内のカメの速度を制御することができます –

+0

カメの速度が0で、フラッシュのように動作するはずですが、通常の速度のように実行しています –

答えて

0

speed(0)は、アニメーションを少しだけ高速化できます。 お試しくださいc.tracer(0, 0)

これにより、すべてのアニメーションが完全に無効になり、速度がさらに向上します。画面をリフレッシュするには、c.update()

+0

OPのコードでこのスピードを実証できますか? 'tracer(0)'と 'update()'の組み合わせは複雑な描画の詳細を隠すことで速度を上げますが、描画が 'fd(1)'のみで構成されているときに隠れるステップはありますか? – cdlane

0

最初にコードが正しく構成されていません。ループ内でonclick()を呼び出す必要はありません。ハンドラ関数を設定するだけで、一度呼び出す必要があります。また、mainloop()は、イベントが終了した後に呼び出されるのではなく、イベントを実行する必要があります。

私はあなたが前方距離を伸ばさない限り、このコードから速度が上がるとは思わない。 fd(3)に単純にインクリメントすると、顕著な違いが生じます。あなたのコードの私の修正:

from turtle import Turtle, Screen 

def click_handler(x, y): 
    global flag 
    flag = False 

def turtle_forward(): 
    if flag: 
     turtle.forward(3) 
     screen.ontimer(turtle_forward, 0) 

flag = True 

screen = Screen() 
screen.onclick(click_handler) 

turtle = Turtle() 
turtle.speed('fastest') 
turtle_forward() 

screen.mainloop() 
+0

まだカメの最高速度を達成することができないので、私は長い間立ち往生しています –

関連する問題