從0開始用python寫一個命令行小遊戲(九)

好了,今天終於到了大家期待已久的多行+新殭屍。其實我原本想把它們放在兩個beta裏解決的,但後來忘了,因而打包起來,跳過beta 5,直接發佈了beta 6,就是今天的結束狀態。好,開始吧!上篇連接:從0開始用python寫一個命令行小遊戲(八)python

多行遊戲

一開始我爲了儘量簡化遊戲,我用了一個單行數組,以模擬只有一行的遊戲。由於如今要多行,因此要把單行數組補充爲多行數組。因而(由於建立多行數組有一系列方法),我進入IPython環境進行測試各類可能的方法:segmentfault

In [1]: test_list = [[0] * 10] * 5

In [2]: test_list
Out[2]: 
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

In [3]: test_list[0][0] = 1

In [4]: test_list
Out[4]: 
[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]]                     # 不太對!

In [5]: test_list = [[0] * 10 for i in range(5)]

In [6]: test_list
Out[6]: 
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

In [7]: test_list[0][0] = 1

In [8]: test_list
Out[8]: 
[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]                     # 正常了

這裏說一說In [5]處個人代碼意思:Python有一種叫作列表生成式的語法,它由一個表達式(如[0] * 10)和一個相似for循環開頭的語句(for i in range(5))組成,還有包裹整個列表生成式的方括號。一個形如[exp for i in seq]的列表生成式等價於:數組

result = []
for i in seq:
    result.append(exp)

運行後的result列表。注意表達式能夠包含i(也能夠不包含),就像在真正的for循環裏面同樣。回到正題,將game_obj.py中的board修改成:app

board = [[0] * 10 for i in range(5)]

而後,將全部類的__init__方法的pos參數都修改成xy兩個參數,並把全部board[self.pos]都改成board[self.y][self.x]。此外,game.py中的Game類也須要修改,具體方法可參見個人GitHub上的v1.0 release代碼。而後,就···該讓新殭屍出場了!測試

新的殭屍

說實話,你剛纔是否是覺得我會說「而後就沒有而後了」?無論怎麼樣,開始吧!我想設計一種一來到植物身邊就能夠把它「踢飛」的殭屍,以增長遊戲的刺激性。其實,它的難點在於設計,不是代碼:命令行

class KickerZombie(BaseZombie):
    indicating_char = color(31, 'k')          # 紅色
    
    def __init__(self, x, y, die_to_exit=False):
        super().__init__(x, y, 1, 30, die_to_exit)          # 超大傷害

而後就是配置,若是你有興趣,能夠效仿以前個人配置,這裏我就再也不多說了。設計

下集預告

下次,咱們要作一些重構工做了!歡迎繼續關注!code

相關文章
相關標籤/搜索