我正在使用python和pygame模块一起开发项目。我将项目分为7个文件,以进行更好的代码管理。由于很难描述包括所有文件的问题。我将在下面编写类似的情况:(程序从文件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()
每当我按下escape按钮时,我的程序就结束而没有任何问题,但是,只要播放器的运行状况降至0以下,该程序就不会停止并继续运行。我在if
语句内添加了一条print语句,该语句会更改运行变量的值,但是即使运行状况变为负值,程序仍会继续运行,并且runing的值不会更改。
如果有人想要.py文件,请告诉我,我也许会通过电子邮件将其发送给您。
在函数中声明时,global running
创建一个新的running
变量,该变量将覆盖导入的running
。您在这里不能做的是nonlocal running
。
而且,这也是通常不建议使用global
的原因。使用单例类可以更安全地实现相同的行为;或只是import file1
(在file2中),然后在file1.running
上进行测试。