前幾天出去旅遊了,因此沒能更新文章,但轉眼間,「從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
至於如何根據這個標誌判斷輸贏,呃,大家本身想吧,太明顯了。變量
下次,咱們將引入一個配置文件,使代碼變得更加優雅。敬請繼續關注!重構