我正在用python和pygame模块做一个项目。为了更好的管理代码,我把项目分成了7个文件。由于很难描述包括所有文件在内的问题,所以我把类似的情况编码如下:(程序从文件4开始)。我把类似的情况代码如下:(程序从文件4开始)
import pygame
running = True
from file1 import *
def game_logic():
global running
if player.health <= 0:
running = False
from file2 import*
def game():
global running
if pygame.key.get_pressed()[K_ESCAPE]:
running = False
game_logic()
from file3 import *
while running:
game()
每当我按 逃避 我的程序结束时没有任何问题,但是,每当玩家的健康值低于0时,程序就不会停止,而是继续运行。我在程序的 if
语句,它改变了运行变量的值,但即使在健康值变为负值后,程序仍在继续运行,而运行的值没有改变。
如果有人想要.py文件,请告诉我,我也许会通过电子邮件发给你。
当在函数中声明。global running
创建一个新的 running
变量,覆盖导入的 running
. 你要做的是 nonlocal running
.
此外,这也是典型的原因 global
绝不推荐使用。你可以使用单人类更安全地实现同样的行为;或者只使用 import file1
然后在 file1.running
.