本节书摘来自异步社区《易学python》一书中的第6章,第6.2节,作者[澳]anthony briggs,王威,袁国忠 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。
很多人都喜欢面向对象编程,其中的原因之一是,对象通常对应于现实世界的东西,这让您在开发程序期间很容易想见它们将如何交互。编写管理财务的程序时,您可能创建account、expense、income和transaction类;编写车间控制程序时,您可能创建component、conveyorbelt、assembly(即组装在一起的多个部件)和assemblyline。
咱们回过头去更深入地思考一下冒险游戏。这种游戏都包含什么呢?传统上,玩家是无畏的冒险家,为财宝、名声和荣誉深入地牢或充斥怪物的洞穴。图6.2以草图方式描绘了本章要编写的游戏,您可以使用它向朋友说明这个游戏。

其中的基本元素是洞穴,而不是整个洞穴系统。您可能受第2章介绍的列表和函数的误导,错误地认为洞穴系统是重要的组成部分,但从正确层面(洞穴及其内部的东西)着眼,可让设计更整洁得多。程序清单6.2演示了如何编写洞穴类,您应将其放在文件caves.py中,否则本章后面的有些代码将不能正确运行。
程序清单6.2 面向对象程度更高的设计
这里的重点是,程序清单6.1的多少代码被替换掉了。caves类有6个彼此调用的方法,这里用一个类和一个外部函数取而代之。第2章说过,如果代码更短,更简单,通常说明选择的道路正确;也就是说,这个面向对象设计非常适合本章的冒险游戏。下面着手解决程序的下一部分:处理玩家输入。