前几天出去旅游了,因此没能更新文章,但转眼间,“从0开始用python写一个命令行小游戏”系列已经更新到了第十篇。闲话少说,今天咱们要开始重构了!但第一件事仍是上篇的连接:从0开始用python写一个命令行小游戏(九)。python
以前咱们是直接sys.exit()
结束程序的,灵活性不高,尤为是须要连续玩游戏时。因此,咱们须要一个标志变量
,以标志游戏的结束。因此,在game_obj.py
开头加上:segmentfault
exited = False
而后把BaseZombie
类中的die()
方法修改成:命令行
def die(self): if self.die_to_exit: exited = True
而后把game.py
中的Game
类的start()
方法的while
循环改成:code
while not o.exited: pass # 内部同前
这里说明一下:为了减小个人打字量,以后会把相似于 “game.py
中的Game
类的start()
方法” 改写为Python path
的形式,即:game.Game.start()
方法。
而后咱们会发现,以前咱们使用的在游戏最后判断输赢并输出的代码再也不能正确地判断输赢了,它永远报告你输了,即便你赢了也是如此。那怎么办呢?答案是:再使用一个标志变量!游戏
为解决刚才的问题,可使用另外一个标志变量:plant_win
。顾名思义,它指的是植物是否赢了。在game_obj.py
开头再次添加:get
plant_win = False
而后把game_obj.BaseZombie.die()
方法改成:it
if self.die_to_exit: exited = True plant_win = True
在这个类的step()
方法开头添加:class
if self.x == 0: exited = True plant_win = False
至于如何根据这个标志判断输赢,呃,大家本身想吧,太明显了。变量
下次,咱们将引入一个配置文件,使代码变得更加优雅。敬请继续关注!重构