从0开始用python写一个命令行小游戏(九)

好了,今天终于到了大家期待已久的多行+新僵尸。其实我原本想把它们放在两个beta里解决的,但后来忘了,因而打包起来,跳过beta 5,直接发布了beta 6,就是今天的结束状态。好,开始吧!上篇连接:从0开始用python写一个命令行小游戏(八)python

多行游戏

一开始我为了尽量简化游戏,我用了一个单行数组,以模拟只有一行的游戏。由于如今要多行,因此要把单行数组补充为多行数组。因而(由于建立多行数组有一系列方法),我进入IPython环境进行测试各类可能的方法:segmentfault

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]]                     # 不太对!

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有一种叫作列表生成式的语法,它由一个表达式(如[0] * 10)和一个相似for循环开头的语句(for i in range(5))组成,还有包裹整个列表生成式的方括号。一个形如[exp for i in seq]的列表生成式等价于:数组

result = []
for i in seq:
    result.append(exp)

运行后的result列表。注意表达式能够包含i(也能够不包含),就像在真正的for循环里面同样。回到正题,将game_obj.py中的board修改成:app

board = [[0] * 10 for i in range(5)]

而后,将全部类的__init__方法的pos参数都修改成xy两个参数,并把全部board[self.pos]都改成board[self.y][self.x]。此外,game.py中的Game类也须要修改,具体方法可参见个人GitHub上的v1.0 release代码。而后,就···该让新僵尸出场了!测试

新的僵尸

说实话,你刚才是否是觉得我会说“而后就没有而后了”?无论怎么样,开始吧!我想设计一种一来到植物身边就能够把它“踢飞”的僵尸,以增长游戏的刺激性。其实,它的难点在于设计,不是代码:命令行

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)          # 超大伤害

而后就是配置,若是你有兴趣,能够效仿以前个人配置,这里我就再也不多说了。设计

下集预告

下次,咱们要作一些重构工做了!欢迎继续关注!code

相关文章
相关标签/搜索