在简单的冒险游戏中实现行为
我最近一直在通过编写一个简单的基于文本的冒险游戏来娱乐自己,而我一直停留在看似非常简单的设计问题上。 简要概述一下:游戏分为Room对象。每个对象都有该房间Room中的Entity对象的列表。每个对象Entity都有一个事件状态,它是一个简单的string-> boolean映射,以及一个动作列表,它是一个string-> function映射。 用户输入采用形式[action] [entity]。在Room使用实体名称返回合适的Entity对象,然后使用操作名称来找到正确的功能,并执行它。 为了生成房间描述,每个Room对象显示其自己的描述字符串,然后附加每个的描述字符串Entity。该Entity描述可基于其状态(“门被打开”,“门关闭”,“门被锁定”,等等)。 问题出在这里:使用这种方法,我需要快速实现的描述和动作函数的数量就一发不可收拾。我的起居室仅在5个实体之间就具有约20种功能。 我可以将所有动作组合为一个函数,并通过if-else /进行切换,但是每个实体仍然是两个函数。我还可Entity以为常见/通用对象(例如门和钥匙)创建特定的子类,但是到目前为止,这还不多。 编辑1:根据要求,这些动作函数的伪代码示例。 string outsideDungeonBushesSearch(currentRoom, thisEntity, player) if thisEntity["is_searched"] then return "There was nothing more in the bushes." else thisEntity["is_searched"] := true currentRoom.setEntity("dungeonDoorKey") return "You found a key in the bushes." end if string dungeonDoorKeyUse(currentRoom, thisEntity, player) if getEntity("outsideDungeonDoor")["is_locked"] then getEntity("outsideDungeonDoor")["is_locked"] := …