スペースバーを押してカメの起動と停止を行うプログラムをコーディングしようとしています。私はカメの移動を開始するコードを持っていますが、もう一度押すと停止しません。それはちょうどスピードを上げるようです。ここで私のコーディング要件と入力したコードです。スペースバーを持つPython turtleの起動と停止
カメを制御する3つの機能を持つカメプログラムを作成します。 turnLeftという関数を作成し、キーボード上で右矢印を押したときにカメを90度左に回します。 turnRightという関数を作成し、右矢印を押したときにカメを右に90度回転させます。スペースバーを押したときにカメを前方に移動させ、スペースバーをもう一度押すとカメを停止させるmove()という3番目の関数を作成します。
import turtle
turtle.setup(400,500)
wn = turtle.Screen()
wn.title("Tess moves in space")
wn.bgcolor("lightgreen")
tess = turtle.Turtle()
def leftTurtle():
tess.left(90)
def rightTurtle():
tess.right(90)
state_num = 0
def advance_state_machine():
global state_num
if state_num == 0:
tess.penup()
state_num = 1
else:
tess.pendown()
tess.forward(2)
state_num = 0
wn.ontimer(advance_state_machine, 25)
def exitWindow():
wn.bye()
wn.onkey(advance_state_machine, "space")
wn.onkey(exitWindow, "q")
wn.onkey(leftTurtle, "Left")
wn.onkey(rightTurtle, "Right")
wn.listen()
wn.mainloop()
また、should_draw' 'に' state_num'の名前を変更し、それはboolean型コードがよりよい読みになり、トグルになる作ります一行: 'should_draw = not should_draw'。 – 9000
ありがとう@Claudioと9000 Y'all素晴らしいです...私は非常にコーディングとPythonに新しいです、そして、これは私のお尻を蹴っていた。これは完璧に動作します。もう1つの質問は、 'def movementControl():'と 'def advance_state_machine():'を1つの関数に組み合わせることですか? –
@DavidWilliam:私はそうは思わない、非常に異なる時に 'advance_state_machine'と' movementControl'を呼び出す必要があります。 (また、一貫性のために、それらをcamelCaseまたはunderscore_caseのいずれかにしてください) – 9000