国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從0開始用python寫一個(gè)命令行小游戲(一)

Jiavan / 1646人閱讀

摘要:最近在用寫一個(gè)命令行游戲升級版植物大戰(zhàn)僵尸,順便鞏固一下編程技巧。目前版已經(jīng)在上發(fā)布,這是鏈接。我想在一開始盡量簡化游戲,所以用了一個(gè)一維數(shù)組我想先不管陽光的問題,用一個(gè)類實(shí)現(xiàn)基礎(chǔ)的植物大戰(zhàn)僵尸角色的功能。

最近在用python寫一個(gè)命令行游戲:升(jian)級(hua)版植物大戰(zhàn)僵尸,順便鞏固一下python編程技巧。在這個(gè)過程中,也收獲(cai)了不少樂趣(keng)。目前1.0版已經(jīng)在GitHub上發(fā)布,這是鏈接。今天就把全過程與大家分享~~~

既然是植物大戰(zhàn)僵尸,肯定要有游戲盤。我想在一開始盡量簡化游戲,所以用了一個(gè)一維數(shù)組:

# game.py
board = [0] * 10

我想先不管陽光的問題,用一個(gè)類實(shí)現(xiàn)基礎(chǔ)的植物大戰(zhàn)僵尸角色的功能。

基礎(chǔ)類

先上代碼,基本功能都有了:

# game.py
board = [0] * 10

class GameObject:
    indicating_char = "o"              # 在命令行顯示的字符
    
    def __init__(self, pos):
        """ 初始化,并把自己放上游戲盤 """
        if pos in range(10):
            self.pos = pos
            if board[self.pos] == 0:
                board[self.pos] = self
            else:
                print("Position already used.")
    
    def __str__(self):
        """ 字符串表示 """ 
        return self.indicating_char
    
    def __repr__(self):
        """ Python shell/print顯示 """
        return self.__str__()

嗯,去IPython里面試試看!

In [1]: import game as g

In [2]: g.board
Out[2]: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

In [3]: g.GameObject(0)
Out[3]: o

In [4]: g.board
Out[4]: [o, 0, 0, 0, 0, 0, 0, 0, 0, 0]

不錯(cuò)!但是,也該為后續(xù)程序想想呀。比如,要讓向日葵每步生產(chǎn)一定的陽光,或讓最后一個(gè)僵尸死去時(shí)結(jié)束游戲,這些方法都應(yīng)該在基礎(chǔ)類中定義。于是,我在GameObject類中追加了這些代碼:

def step(self):
    """ 每步執(zhí)行的操作 """
    pass

def die(self):
    """ 死掉時(shí)的操作 """
    pass

好吧,兩個(gè)空方法,但很快,GameObject的子類們就會(huì)重寫它們,使它們變得有意義的!

對了,說到子類,我們就先從植物開始吧!

植物基礎(chǔ)類

先想想一株《植物大戰(zhàn)僵尸》里的植物該有什么屬性和行為吧。除了基礎(chǔ)類里定義好的之外······陽光!種植植物需要陽光,這不就是屬性嗎?還有,當(dāng)初始化一株植物時(shí),扣除一定的陽光,不就是行為嗎?來,先把這些實(shí)現(xiàn)了!

先在游戲盤定義的后面加上一行:

sunlight = 50

然后就是植物基礎(chǔ)類Plant

class Plant(GameObject):
    indicating_char = "p"
    
    def __init__(self, pos, sun_required):
        super().__init__(pos)
        global sunlight
        if sunlight >= sun_required:
            sunlight -= sun_required
        else:
            print("Sunlight not enough.")

好,這就成了。按照慣例,到IPython里試一試(注意!第一個(gè)坑):

In [1]: from game import *        # 坑!

In [2]: Plant(0, 50)
Out[2]: p

In [3]: sunlight
Out[3]: 50

TMD怎么可能!!!難道sunlight不應(yīng)該是0嗎?!自己debug半天無果后我決定上思否提問。感謝思否!我上午提的問,下午就有了答案。于是,我趕快又去試了試:

In [1]: import game as g        # 命名空間問題!!!

In [2]: g.Plant(0, 50)
Out[2]: p

In [3]: g.sunlight
Out[3]: 0

成功!

下集預(yù)告

下次,我將秀出真正“看得見”、也一直沿用至今的兩個(gè)類:SunflowerPeashooter。還有,我們的敵人:僵尸的基礎(chǔ)類也該出場了!歡迎來看哦!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42114.html

相關(guān)文章

  • 0開始python個(gè)命令游戲(六)

    摘要:嗯,今天我們的從開始用寫一個(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)在就開始...

    channg 評論0 收藏0
  • 0開始python個(gè)命令游戲(四)

    摘要:講點(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語句。要...

    graf 評論0 收藏0
  • 0開始python個(gè)命令游戲(五)

    摘要:今天我時(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è)命令行...

    skinner 評論0 收藏0
  • 0開始python個(gè)命令游戲(三)

    摘要:今天就開始由于整個(gè)游戲會(huì)有自己的一些屬性和行為,所以我決定把它編寫在類里。初始化游戲定義自己的屬性先定義這些。我計(jì)劃使用格式,以第幾步出現(xiàn)作為鍵,以出現(xiàn)的僵尸類型以后可能會(huì)出現(xiàn)不同類型的僵尸和是否在它被消滅后結(jié)束游戲作為值。 Hey, everyone! 文章遲到了一天,但我今天心情很好,因?yàn)橛袃蓚€(gè)好消息,你們想先聽哪個(gè)?哎,算了,反正都是好消息,一起聽吧。 本游戲的v1.1 bet...

    Tony_Zby 評論0 收藏0
  • 0開始python個(gè)命令游戲(九)

    摘要:好了,今天終于到了你們期待已久的多行新僵尸。好,開始吧上篇鏈接從開始用寫一個(gè)命令行小游戲八。多行游戲一開始我為了盡可能簡化游戲,我用了一個(gè)單行數(shù)組,以模擬只有一行的游戲。一個(gè)形如的列表生成式等價(jià)于運(yùn)行后的列表。 好了,今天終于到了你們期待已久的多行+新僵尸。其實(shí)我本來想把它們放在兩個(gè)beta里解決的,但后來忘了,于是打包起來,跳過beta 5,直接發(fā)布了beta 6,就是今天的結(jié)束狀態(tài)...

    WalkerXu 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<