本节书摘来自异步社区《易学Python》一书中的第6章,第6.3节,作者[澳]Anthony Briggs,王威,袁国忠 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。
6.3 玩家输入
大多数冒险游戏的玩法都是这样的:玩家输入指令,如往北走、拾剑、杀怪物和检宝,游戏再显示操作结果,以及有关玩家所处房间和房间中物件的描述。这里采取同样的方法,并利用一些对象的属性简化程序的扩展工作。别忘了,您还需让代码易于测试,因此将把处理用户输入的代码放在独立的函数中。
6.3.1 名词的动词化
您将首先寻找一种不错的方式,在类结构中编写将名词转换为动词的接口。通常情况下,对象为名词,而操作对象的方法为动词,因此命令GET SWORD应在当前房间找到Sword对象,并调用其Get接口。这样设计意味着不用编写一个什么都会做的大型Player类,而可编写大量更容易理解、修改和扩展的小型类。
程序清单6.3是该程序的核心代码:Player类。它负责读取玩家的输入,并寻找合适的对象来解读命令。您应将这些代码保存在文件player.py中。
程序清单6.3 Player类
编写Player类后,您需要从玩家那里读取输入,并执行相应的命令。程序清单6.4是一个示例框架,它创建一个简单的洞穴,让玩家置身中,然后开始循环:不断地读取输入并执行相应的命令,直到玩家结束游戏。以后您可能将这些代码封装在Game类中,但由于Python非常灵活,您可将其保留为函数,并编写和测试其他类。
程序清单6.4 使用Player类
如果您现在运行这个冒险游戏,应该能够指定命令LOOK和QUIT。这个程序很简单,下一节将介绍如何扩展接口。