在游戏中,我创建了一些全局变量,当某个动作发生时,这些变量的值会发生变化。当我重新启动游戏时,我希望它们的值再次设置为初始值。
K= 0
def change():
#change global variable
value
global K
K +=5
def restart():
#restarts game
我可以通过将全局变量值等回到其原始值来更改全局变量值。
K = 0
有没有其他方法可以做到这一点,当有很多变量时,我不能使它们成为局部变量。
感谢您的帮助
这里有一些示例代码可以给你举个例子,但根据我所能了解到的,你正在尝试做的,是时候继续使用一些面向对象的方法了。
在不使用任何更复杂的方法的情况下,您可以拥有一个对象,该对象充当需要跨多个函数访问的变量的命名空间。
重新启动游戏后,只需创建一个新实例,其中包含为状态保持对象设置的所有初始值。
由于Python的工作方式,您甚至可以将默认值设置为类属性,每次更新时,更新将只影响与正在进行的游戏状态对应的实例。通过这样做,您可以使用一个全局变量,保存游戏状态实例:
class GameState:
k = 0
other_var = 0
def restart():
global state
state = GameState()
def change():
...
state.k += 5
注意,如果你做得正确,你就为获得";免费";一种保存和恢复游戏的方法,有多个玩家,每个玩家同时有一个单独的状态,等等。
如果我理解正确,您不希望游戏重置,而是希望在重新启动后继续。为此,您必须将变量保存到文件中。当代码运行时,所有变量及其值都存储在设备的RAM中。当代码停止运行时,它们将从RAM中删除。要在代码停止后存储变量,必须将它们存储到硬盘驱动器中。为此,您可以简单地创建一个文件并将所有内容都放在其中。
对于变量,您应该使用SQLite3(数据库(或JSON。如果你只存储一些变量,JSON应该这样做,但如果你在游戏中存储大量变量(我指的是,例如,世界上存在的每个实体和每个箱子等等(,你应该使用数据库。