【发布时间】:2017-04-05 03:11:50
【问题描述】:
我对如何使用该程序的变量和常量正确实现游戏管理器类型的类(控制程序的大部分方面,例如主循环)感到困惑。据我了解,变量和常量应该在主函数中定义,然后以某种方式传递给游戏管理器。然而,这带来了一些障碍。到目前为止,我提出了 3 个选项:
-
在 Main 函数中定义变量并将它们传递给类(最标准)
class Game: def __init__(self, size, speed): self.size = size self.speed = speed def main(): SCREEN_SIZE = 10 GAME_SPEED = 30 game = Game(SCREEN_SIZE, GAME_SPEED) game.mainloop() if __name__ == "__main__": main() -
在类本身中定义变量
class Game: def __init__(self): self.screen_size = 10 self.game_speed = 30 def main(): game = Game() game.mainloop() if __name__ == "__main__": main() -
使变量全局化
SCREEN_SIZE = 10 GAME_SPEED = 30 class Game: def __init__(self): pass def main(): game = Game() game.mainloop() if __name__ == "__main__": main() - (可能的选项)根本没有游戏管理器类。
对于具有更多变量的大型程序,数字 1 会变得烦人,因此需要传递给班级的信息也更多。数字 2 违背了课程的重点。 3号似乎是不好的做法。有没有我想念的替代方案?
【问题讨论】:
-
我帮助某人提出了有关他不久前正在编写的单例代码的问题。他的问题(以及他引用的工作代码)在这里,可能对您的事业有用:stackoverflow.com/questions/42226099/…
-
在这种情况下,他有两个主要的类来控制游戏(Director 和 Scene 类)。我的目标是只拥有一个,因为这似乎比拥有两个可以组合的独立类更有效和合乎逻辑。
-
#3 没有问题。使用全局 constants(不可变)是完全可以接受的。开始使用全局变量(可变)时会遇到麻烦。
标签: python pygame coding-style