亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

skinner / 1945人閱讀

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

從0開始用python寫一個(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)在要做的就是每步都看看這一步有沒有在配置文件中出現(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),居然還得編寫處理命令的方法!

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)

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/42171.html

相關(guān)文章

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

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

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

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

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

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

    摘要:這項(xiàng)亂入的修改就是修改目錄結(jié)構(gòu),為多關(guān)卡作準(zhǔn)備上篇鏈接從開始用寫一個(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開始用python寫一個(gè)命令行小游戲(七)...

    MorePainMoreGain 評論0 收藏0

發(fā)表評論

0條評論

skinner

|高級講師

TA的文章

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