我已经教 8-9 年级的学生基本计算机编程两周了,昨天我试图向他们展示如何用 Python 制作真正简单的文本冒险游戏。
场景是函数,(例如dragons_cave()
)由一些打印语句和对 的调用组成input()
,询问玩家下一步想去哪里,然后将其传递给以globals()
找到合适的函数,然后调用。我知道这并不理想(在什么时候庞大的功能链会开始成为问题?)但是,我想到的是,这对他们来说似乎是最简单的,而且只涉及一点点手。
我的问题是全局状态——例如。玩家在一个场景中获得钥匙,然后才能在另一个场景中解锁大门。当我有像字符串或布尔值这样的全局不可变变量时,Python 希望我global
在函数的开头使用关键字。
global hasKey
hasKey = True
我对此很满意,但我有一种模糊的感觉(从互联网上其他地方的 Stackoverflow 中得到),这种感觉global
是不受欢迎的,而且总是有一个更好的对应物。我可以拥有一个全局字典或将所有内容包装在一个类中,但我不确定我是否可以为我的孩子清楚地捍卫这些选项(他们仍在思考变量的含义)。
无论我使用什么,我都希望能够直截了当地向我的孩子解释为什么我们这样做,以及为什么这样做是必要的。global
似乎有这两个属性,但它是坏的吗?