所以我已经运行了好几次否,并且onkeypress方法似乎无法正常运行。
因此,每当我运行python脚本时,所有move方法都将执行一次并按应有的方式工作。 但是只要我按下指定的按钮之一(例如“ w”),它们就不会执行 我究竟做错了什么?而我该如何摆脱呢? 预先感谢
def move_up():
y = snake.ycor()
y += 20
snake.sety(y)
print("l")
def move_down():
y = snake.ycor()
y -= 20
snake.sety(y)
print("l")
def move_left():
x = snake.xcor()
x -= 20
snake.setx(x)
print("l")
def move_right():
x = snake.xcor()
x += 20
snake.setx(x)
print("l")
# snake
snake = turtle.Turtle()
snake.speed(0)
snake.shape("square")
snake.color("white")
snake.penup()
snake.goto(-290, 290)
# keyboard input
wn.listen()
wn.onkeypress(move_up(), "w")
wn.onkeypress(move_down(), "s")
wn.onkeypress(move_left(), "a")
wn.onkeypress(move_right(), "d")
# Main game loop
while True:
wn.update()
答案 0 :(得分:1)
wn.onkeypress(move_up(), "w")
此行等效于“立即调用move_up(),获取其返回值,并将其注册到'w'keypress事件”。同样,以下三行会立即调用move_down,move_left和move_right,而无需等待用户按下按钮。
您应该将函数作为参数传递而无需调用它们。跳过括号:
wn.onkeypress(move_up, "w")
wn.onkeypress(move_down, "s")
wn.onkeypress(move_left, "a")
wn.onkeypress(move_right, "d")