无法使用用户输入停止循环

2024-10-01 11:20:36 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我使用python turtle包的代码:

#setup
import turtle
wn = turtle.Screen()
obj = turtle.Turtle()
go = True


def restart(x, y, go = go):
    go = False
    print(go)
wn.onscreenclick(restart)
wn.listen()

#main loop
while go:
    wn.update()
    obj.forward(0.1)

print("game ended")

当我点击屏幕,它应该停止后做代码。 循环不会停止,也不会说“游戏结束” 我不知道为什么

我需要帮助。 谢谢


Tags: 代码importfalsetrueobjgodefsetup
2条回答

@IainShelvington指出,除了您的全局变量问题外,我建议您重新设计程序,以使用turtle计时器事件:

from turtle import Screen, Turtle

def restart(x, y):
    global running
    running = False

def move():
    if running:
        turtle.forward(0.1)
        screen.ontimer(move)
    else:
        screen.bye()

turtle = Turtle()

screen = Screen()
screen.onscreenclick(restart)

running = True

move()

screen.mainloop()

print("game ended")

restart函数中定义局部变量go,当将其设置为False时,只更改局部变量的值,而不是外部作用域中的go变量

def restart(x, y, go=go):  # This keyword argument is creating a local variable

只需删除参数,然后就可以修改正确的变量

def restart(x, y):
    go = False

相关问题 更多 >