從0開始用python寫乙個命令列小遊戲(五)

2021-09-13 12:21:06 字數 2803 閱讀 6088

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

從0開始用python寫乙個命令列小遊戲(二)

從0開始用python寫乙個命令列小遊戲(三)

從0開始用python寫乙個命令列小遊戲(四)

上次我們的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=' ')

這個類離全自動還差這些元素:

下面就先解決前兩個!

之前,我們已經有了配置檔案。我們現在要做的就是每步都看看這一步有沒有在配置檔案**現。

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)

好!現在,遊戲可以自動產生殭屍了。然後呢?

真正的植物大戰殭屍遊戲可以讓玩家用滑鼠控制遊戲。由於這是命令列遊戲,所以我們得用命令控制。我突然發現,居然還得編寫處理命令的方法!

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.")

好,用用它吧(當然,是在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(" -: ")

else:

commands =

self.process_command(commands)

後來我又知道,可以把不依賴例項的方法宣告為@staticmethod,並把self引數去掉,於是把process_command改為:

@staticmethod

def process_command(commands):

pass # 同前

好了!至此,我們的三個需求只剩乙個了,而這乙個將會在第三步的後半步解決!歡迎繼續關注!

從0開始用python寫乙個命令列小遊戲(11)

首先,我要強調一點 所有需要變數匹配的地方 類似別的語言中的switch 都可以用配置檔案 主要是字典 比如,我的遊戲裡面種植植物時匹配植物名稱。既然這個配置檔案需要與植物的類互動,所以要使用python格式,而非json或別的語言。試試看 config.py import game obj as ...

從0開始用python寫乙個命令列小遊戲(六)

從0開始用python寫乙個命令列小遊戲 一 從0開始用python寫乙個命令列小遊戲 二 從0開始用python寫乙個命令列小遊戲 三 從0開始用python寫乙個命令列小遊戲 四 從0開始用python寫乙個命令列小遊戲 五 上次,我們還缺乙個功能 自動呼叫step 的方法。好,現在就來!順便補...

從0開始用python寫乙個命令列小遊戲(三)

hey,everyone 文章遲到了一天,但我今天心情很好,因為有兩個好訊息,你們想先聽哪個?哎,算了,反正都是好訊息,一起聽吧。從0開始用python寫乙個命令列小遊戲 一 從0開始用python寫乙個命令列小遊戲 二 好,懷著良好的心 zi wo 情 gan jue 進入正題!殭屍的行為在基礎類...