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

資訊專欄INFORMATION COLUMN

從0開(kāi)始用python寫(xiě)一個(gè)命令行小游戲(五)

skinner / 1888人閱讀

摘要:今天我時(shí)間有點(diǎn)緊張,所以不說(shuō)廢話了,直接進(jìn)入正題。好現(xiàn)在,游戲可以自動(dòng)產(chǎn)生僵尸了。然后呢用戶可控的植物真正的植物大戰(zhàn)僵尸游戲可以讓玩家用鼠標(biāo)控制游戲。由于這是命令行游戲,所以我們得用命令控制。

今天我時(shí)間有點(diǎn)緊張,所以不說(shuō)廢話了,直接進(jìn)入正題。前作鏈接:

從0開(kāi)始用python寫(xiě)一個(gè)命令行小游戲(一)

從0開(kāi)始用python寫(xiě)一個(gè)命令行小游戲(二)

從0開(kāi)始用python寫(xiě)一個(gè)命令行小游戲(三)

從0開(kāi)始用python寫(xiě)一個(gè)命令行小游戲(四)

用戶界面:第2.5步(第三步的前半步)

上次我們的Game類是這樣的:

import game_obj as o

class Game:
    def __init__(self):
        o.sunlight = 50
        o.board = [0] * 10
        self.sunlight = o.sunlight
        self.board = o.board
        import json
        with open("level.json") as fr:
            self.steps = json.load(fr)
    def step(self):
        print("Sunlight: %d." % self.sunlight)
        print("Current state:")
        for obj in self.board:
            if isinstance(obj, o.GameObject):
                obj.step()
            print(obj, end="  ")

這個(gè)類離全自動(dòng)還差這些元素:

自動(dòng)出現(xiàn)的僵尸;

用戶可控的植物;

自動(dòng)重復(fù)執(zhí)行step()的方法。

下面就先解決前兩個(gè)!

自動(dòng)出現(xiàn)的僵尸

之前,我們已經(jīng)有了配置文件。我們現(xiàn)在要做的就是每步都看看這一步有沒(méi)有在配置文件中出現(xiàn)。

import game_obj as o

class Game:
    def __init__(self):
        o.sunlight = 50
        o.board = [0] * 10
        self.sunlight = o.sunlight
        self.board = o.board
        self.step_num = 0
        import json
        with open("level.json") as fr:
            self.steps = json.load(fr)
    def step(self):
        self.step_num += 1
        print("Sunlight: %d." % self.sunlight)
        print("Current state:")
        for obj in self.board:
            if isinstance(obj, o.GameObject):
                obj.step()
            print(obj, end="  ")
        if str(self.step_num) in self.steps.keys():
            action = self.steps[str(self.step_num)]
            if action == "zombie":
                o.Zombie(9)
            elif action == "exit zombie":
                o.Zombie(9, die_to_exit=True)

好!現(xiàn)在,游戲可以自動(dòng)產(chǎn)生僵尸了。然后呢?

用戶可控的植物

真正的植物大戰(zhàn)僵尸游戲可以讓玩家用鼠標(biāo)控制游戲。由于這是命令行游戲,所以我們得用命令控制。我突然發(fā)現(xiàn),居然還得編寫(xiě)處理命令的方法!

def process_command(self, commands):
    for command in commands:
        command_list = command.split()
        if command_list[0] == "plant" and len(command_list) == 3:
            plant_type = command_list[1]
            try:
                pos = int(command_list[2])
            except ValueError:
                print("Invalid command.")
            else:
                if plant_type == "s":
                    o.Sunflower(pos)
                elif plant_type == "p":
                    o.Peashooter(pos)
        else:
            print("Invalid command.")

好,用用它吧(當(dāng)然,是在step()里面)!

def step(self):
    pass            # 同前
    first_command = input("next step: ")
    if first_command:
        commands = [first_command]
        next_command = "some content"
        while next_command:
            next_command = input("        -: ")
            commands.append(next_command)
    else:
        commands = []
    self.process_command(commands)

后來(lái)我又知道,可以把不依賴實(shí)例的方法聲明為@staticmethod,并把self參數(shù)去掉,于是把process_command改為:

@staticmethod
def process_command(commands):
    pass           # 同前

好了!至此,我們的三個(gè)需求只剩一個(gè)了,而這一個(gè)將會(huì)在第三步的后半步解決!歡迎繼續(xù)關(guān)注!

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42171.html

相關(guān)文章

  • 0開(kāi)始python寫(xiě)一個(gè)命令游戲(六)

    摘要:嗯,今天我們的從開(kāi)始用寫(xiě)一個(gè)命令行小游戲系列總算走到了我發(fā)布的時(shí)候。玩過(guò)我的正式版的話,你會(huì)發(fā)現(xiàn)現(xiàn)在的游戲還和正式版差別很大。好,現(xiàn)在就來(lái)順便補(bǔ)充一下,上次方法后追加僵尸被打敗是完成了好好慶祝一下 嗯,今天我們的從0開(kāi)始用python寫(xiě)一個(gè)命令行小游戲系列總算走到了我發(fā)布v1.0 beta 1的時(shí)候。玩過(guò)我的1.0正式版的話,你會(huì)發(fā)現(xiàn)現(xiàn)在的游戲還和正式版差別很大。不管怎么樣,現(xiàn)在就開(kāi)始...

    channg 評(píng)論0 收藏0
  • 0開(kāi)始python寫(xiě)一個(gè)命令游戲(四)

    摘要:講點(diǎn)搞笑的,最近在開(kāi)發(fā)時(shí),發(fā)現(xiàn)最令程序猿頭疼的一點(diǎn)就是沒(méi)有語(yǔ)句。但自動(dòng)的僵尸呢哎,別急,那是后話下集預(yù)告下次,我要把游戲變得全自動(dòng)具體工作令僵尸自動(dòng)出現(xiàn),和讓用戶用命令控制游戲這些工作完成后,就可以發(fā)布了歡迎繼續(xù)關(guān)注 嗯,還是我,我又回來(lái)了——以后文章就兩天一篇吧。講點(diǎn)搞笑的,最近在開(kāi)發(fā)v1.1 beta 3時(shí),發(fā)現(xiàn)Python最令程序猿頭疼的一點(diǎn)就是沒(méi)有switch/case語(yǔ)句。要...

    graf 評(píng)論0 收藏0
  • 0開(kāi)始python寫(xiě)一個(gè)命令游戲(十)

    摘要:前幾天出去旅游了,所以沒(méi)能更新文章,但轉(zhuǎn)眼間,從開(kāi)始用寫(xiě)一個(gè)命令行小游戲系列已經(jīng)更新到了第十篇。閑話少說(shuō),今天我們要開(kāi)始重構(gòu)了但第一件事還是上篇的鏈接從開(kāi)始用寫(xiě)一個(gè)命令行小游戲九。所以,我們需要一個(gè)標(biāo)志變量,以標(biāo)志游戲的結(jié)束。 前幾天出去旅游了,所以沒(méi)能更新文章,但轉(zhuǎn)眼間,從0開(kāi)始用python寫(xiě)一個(gè)命令行小游戲系列已經(jīng)更新到了第十篇。閑話少說(shuō),今天我們要開(kāi)始重構(gòu)了!但第一件事還是上篇...

    OnlyLing 評(píng)論0 收藏0
  • 0開(kāi)始python寫(xiě)一個(gè)命令游戲(三)

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

    Tony_Zby 評(píng)論0 收藏0
  • 0開(kāi)始python寫(xiě)一個(gè)命令游戲(八)

    摘要:這項(xiàng)亂入的修改就是修改目錄結(jié)構(gòu),為多關(guān)卡作準(zhǔn)備上篇鏈接從開(kāi)始用寫(xiě)一個(gè)命令行小游戲七多關(guān)卡目錄結(jié)構(gòu)我計(jì)劃把目錄結(jié)構(gòu)改成這樣關(guān)卡文件,是關(guān)卡用完后的默認(rèn)配置其中是目前的關(guān)卡數(shù),為表示關(guān)卡已經(jīng)用完,使用默認(rèn)關(guān)卡。 今天,我突然想起了另一項(xiàng)修改,所以原計(jì)劃的多行+新僵尸就改到第九篇再介紹。這項(xiàng)亂入的修改就是:修改目錄結(jié)構(gòu),為多關(guān)卡作準(zhǔn)備!上篇鏈接:從0開(kāi)始用python寫(xiě)一個(gè)命令行小游戲(七)...

    MorePainMoreGain 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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