摘要:好了,今天終于到了你們期待已久的多行新僵尸。好,開始吧上篇鏈接從開始用寫一個(gè)命令行小游戲八。多行游戲一開始我為了盡可能簡(jiǎn)化游戲,我用了一個(gè)單行數(shù)組,以模擬只有一行的游戲。一個(gè)形如的列表生成式等價(jià)于運(yùn)行后的列表。
好了,今天終于到了你們期待已久的多行+新僵尸。其實(shí)我本來想把它們放在兩個(gè)beta里解決的,但后來忘了,于是打包起來,跳過beta 5,直接發(fā)布了beta 6,就是今天的結(jié)束狀態(tài)。好,開始吧!上篇鏈接:從0開始用python寫一個(gè)命令行小游戲(八)。
多行游戲一開始我為了盡可能簡(jiǎn)化游戲,我用了一個(gè)單行數(shù)組,以模擬只有一行的游戲。因?yàn)楝F(xiàn)在要多行,所以要把單行數(shù)組補(bǔ)充為多行數(shù)組。于是(因?yàn)閯?chuàng)建多行數(shù)組有一系列方法),我進(jìn)入IPython環(huán)境進(jìn)行測(cè)試各種可能的方法:
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]] # 不太對(duì)! 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有一種叫做列表生成式的語法,它由一個(gè)表達(dá)式(如[0] * 10)和一個(gè)類似for循環(huán)開頭的語句(for i in range(5))組成,還有包裹整個(gè)列表生成式的方括號(hào)。一個(gè)形如[exp for i in seq]的列表生成式等價(jià)于:
result = [] for i in seq: result.append(exp)
運(yùn)行后的result列表。注意表達(dá)式可以包含i(也可以不包含),就像在真正的for循環(huán)里面一樣。回到正題,將game_obj.py中的board修改為:
board = [[0] * 10 for i in range(5)]
然后,將所有類的__init__方法的pos參數(shù)都修改為x和y兩個(gè)參數(shù),并把所有board[self.pos]都改為board[self.y][self.x]。此外,game.py中的Game類也需要修改,具體方法可參見我的GitHub上的v1.0 release代碼。然后,就···該讓新僵尸出場(chǎng)了!
新的僵尸說實(shí)話,你剛才是不是以為我會(huì)說“然后就沒有然后了”?不管怎么樣,開始吧!我想設(shè)計(jì)一種一來到植物身邊就可以把它“踢飛”的僵尸,以增加游戲的刺激性。其實(shí),它的難點(diǎn)在于設(shè)計(jì),不是代碼:
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) # 超大傷害
然后就是配置,如果你有興趣,可以效仿之前我的配置,這里我就不再多說了。
下集預(yù)告下次,我們要做一些重構(gòu)工作了!歡迎繼續(xù)關(guān)注!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42243.html
摘要:前幾天出去旅游了,所以沒能更新文章,但轉(zhuǎn)眼間,從開始用寫一個(gè)命令行小游戲系列已經(jīng)更新到了第十篇。閑話少說,今天我們要開始重構(gòu)了但第一件事還是上篇的鏈接從開始用寫一個(gè)命令行小游戲九。所以,我們需要一個(gè)標(biāo)志變量,以標(biāo)志游戲的結(jié)束。 前幾天出去旅游了,所以沒能更新文章,但轉(zhuǎn)眼間,從0開始用python寫一個(gè)命令行小游戲系列已經(jīng)更新到了第十篇。閑話少說,今天我們要開始重構(gòu)了!但第一件事還是上篇...
摘要:嗯,今天我們的從開始用寫一個(gè)命令行小游戲系列總算走到了我發(fā)布的時(shí)候。玩過我的正式版的話,你會(huì)發(fā)現(xiàn)現(xiàn)在的游戲還和正式版差別很大。好,現(xiàn)在就來順便補(bǔ)充一下,上次方法后追加僵尸被打敗是完成了好好慶祝一下 嗯,今天我們的從0開始用python寫一個(gè)命令行小游戲系列總算走到了我發(fā)布v1.0 beta 1的時(shí)候。玩過我的1.0正式版的話,你會(huì)發(fā)現(xiàn)現(xiàn)在的游戲還和正式版差別很大。不管怎么樣,現(xiàn)在就開始...
摘要:講點(diǎn)搞笑的,最近在開發(fā)時(shí),發(fā)現(xiàn)最令程序猿頭疼的一點(diǎn)就是沒有語句。但自動(dòng)的僵尸呢哎,別急,那是后話下集預(yù)告下次,我要把游戲變得全自動(dòng)具體工作令僵尸自動(dòng)出現(xiàn),和讓用戶用命令控制游戲這些工作完成后,就可以發(fā)布了歡迎繼續(xù)關(guān)注 嗯,還是我,我又回來了——以后文章就兩天一篇吧。講點(diǎn)搞笑的,最近在開發(fā)v1.1 beta 3時(shí),發(fā)現(xiàn)Python最令程序猿頭疼的一點(diǎn)就是沒有switch/case語句。要...
摘要:今天我時(shí)間有點(diǎn)緊張,所以不說廢話了,直接進(jìn)入正題。好現(xiàn)在,游戲可以自動(dòng)產(chǎn)生僵尸了。然后呢用戶可控的植物真正的植物大戰(zhàn)僵尸游戲可以讓玩家用鼠標(biāo)控制游戲。由于這是命令行游戲,所以我們得用命令控制。 今天我時(shí)間有點(diǎn)緊張,所以不說廢話了,直接進(jìn)入正題。前作鏈接: 從0開始用python寫一個(gè)命令行小游戲(一) 從0開始用python寫一個(gè)命令行小游戲(二) 從0開始用python寫一個(gè)命令行...
摘要:今天就開始由于整個(gè)游戲會(huì)有自己的一些屬性和行為,所以我決定把它編寫在類里。初始化游戲定義自己的屬性先定義這些。我計(jì)劃使用格式,以第幾步出現(xiàn)作為鍵,以出現(xiàn)的僵尸類型以后可能會(huì)出現(xiàn)不同類型的僵尸和是否在它被消滅后結(jié)束游戲作為值。 Hey, everyone! 文章遲到了一天,但我今天心情很好,因?yàn)橛袃蓚€(gè)好消息,你們想先聽哪個(gè)?哎,算了,反正都是好消息,一起聽吧。 本游戲的v1.1 bet...
閱讀 1015·2021-10-19 11:42
閱讀 2972·2021-09-10 10:51
閱讀 677·2021-09-09 09:33
閱讀 1760·2021-09-01 10:43
閱讀 2768·2019-08-30 12:43
閱讀 3516·2019-08-30 11:24
閱讀 2114·2019-08-30 10:56
閱讀 2777·2019-08-29 11:00