欢迎加入我们卧虎藏龙的python讨论qq群:729683466
导语
看到封面
大家一定觉得很熟悉
这不就是小时候经常玩的坦克大战吗
现在有没有想过用python实现一下
了解一下游戏的内部结构是什么样的
直接开始吧!!
相关资源 代码获取
1:关注“python趣味爱好者”公众号,回复“经典坦克大战2 ”获取源代码。
# 效果展示
# 开发工具
编译器:python3.6.4
主要的第三方库:pygame
#往期推荐
# 讲解部分
一:游戏介绍
其实这个游戏根本就不用介绍,大家都懂
二:主体构成(地图讲解为主)
关于如何用python写游戏,公众号其实已经讲过很多次了。一些基础的内容可以看公众号以前发的推文。
这里只讲一讲这个游戏的特别之处,我之所以推荐了两个《推箱子》推文的链接,是因为这个坦克大战与推箱子游戏有异曲同工之妙。游戏都是一个又一个方块构成的。
只是这里面的游戏元素更多,有己方坦克,对方坦克,墙壁,草地,老鹰之类的。
如何构成这样的有界面呢?用最简单的话来说,就是在适当的时刻,在适当的坐标点上画适当的图像。
那么如何将图像画在界面上呢?
......
此处省略1000字
......
这些内容在之前的游戏推文中讲的很详细了。
之前每次讲游戏的时候,都会重点讲一讲按键操作,在这次的游戏讲解中,我决定不讲按键操作了,讲一个大家普遍不注意的问题。那就是游戏地图。
说到游戏地图,大家首先想到的肯定是那种精美的3D游戏的图,但是在普通的小游戏中,游戏地图可以非常简单。这个游戏的地图就是用一个非常简单的矩阵表示的。
# 地图
MAP_ONE = [
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
[0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, ],
[0, 1, 0, 0, 1, 3, 3, 1, 1, 2, 1, 1, 3, 3, 1, 0, 0, 1, 0, ],
[0, 1, 0, 0, 1, 3, 3, 1, 1, 2, 1, 1, 3, 3, 1, 0, 0, 1, 0, ],
[0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, ],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
[1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, ],
[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, ],
[0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, ],
[0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, ],
[0, 1, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 1, 0, ],
[0, 1, 3, 3, 3, 1, 0, 0, 1, 1, 1, 0, 0, 1, 3, 3, 3, 1, 0, ],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, ],
]
这段代码放在这里,内行看到的根本就不是一个矩阵,而是这个
大家看到的矩阵里面大多数地方都是0,这很正常,如果这个矩阵的这个位置是0,代表的意思是这个矩阵的这个位置是空白的,什么也没有。如果是1,代表这个地方是一个红色的砖墙,2代表的是炮弹也打不穿的铁墙,3代表的是可以藏身的草地,5代表的就是老鹰。
如果你需要让这个游戏丰富起来,想设置更多的游戏地图,有个很简单的方法,直接在代码里面修改这个矩阵即可。
不行你可以尝试一下,把这个矩阵里面的数字打乱,那么出现在你面前的绝对是一个乱七八糟的图。
三:游戏的进阶
玩这个游戏的时候,大家也许会注意到。敌方坦克发射炮弹和移动都是随机的,这导致地方战斗力过差。很容易被我方坦克击破。如果感兴趣的朋友,可以想个办法,让地方的坦克能够寻找目标,然后定向开炮。
另外就是,敌方坦克被击破以后无法复活,这显然是没法长时间玩的,所以可以加一个复活的功能。
如果是联机对战,还可以加一个埋地雷的功能。
如果以后有时间,我们会一一实现这些功能。
作者|齐
编辑|齐
PYTHON
扫二维码|关注我们
QQ群:729683466
# 参考来源
代码来源:github