经典坦克大战的python实现

欢迎加入我们卧虎藏龙的python讨论qq群:729683466

导语

看到封面

大家一定觉得很熟悉

这不就是小时候经常玩的坦克大战吗

现在有没有想过用python实现一下

了解一下游戏的内部结构是什么样的

直接开始吧!!

相关资源 代码获取

1:关注“python趣味爱好者”公众号,回复“经典坦克大战2 ”获取源代码。

 # 效果展示 

247338f5af3fee833c3adc6dccc870ee.png

# 开发工具

编译器:python3.6.4

主要的第三方库:pygame

#往期推荐

#  python小游戏之《躲避太空垃圾》

#  用python做一个“船新”的贪吃蛇

# 讲解部分

一:游戏介绍

其实这个游戏根本就不用介绍,大家都懂fc0bef851f03bf239f2964fce01800f8.png

二:主体构成(地图讲解为主)

关于如何用python写游戏,公众号其实已经讲过很多次了。一些基础的内容可以看公众号以前发的推文。

《推箱子》python小游戏(第一期)

《推箱子》python小游戏(第二期)

这里只讲一讲这个游戏的特别之处,我之所以推荐了两个《推箱子》推文的链接,是因为这个坦克大战与推箱子游戏有异曲同工之妙。游戏都是一个又一个方块构成的。

只是这里面的游戏元素更多,有己方坦克,对方坦克,墙壁,草地,老鹰之类的。

如何构成这样的有界面呢?用最简单的话来说,就是在适当的时刻,在适当的坐标点上画适当的图像。

那么如何将图像画在界面上呢?

......

此处省略1000字

......

574e4f8637fabc53343b0a27246d3e9e.png

这些内容在之前的游戏推文中讲的很详细了。

之前每次讲游戏的时候,都会重点讲一讲按键操作,在这次的游戏讲解中,我决定不讲按键操作了,讲一个大家普遍不注意的问题。那就是游戏地图。

说到游戏地图,大家首先想到的肯定是那种精美的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, ],
    ]

这段代码放在这里,内行看到的根本就不是一个矩阵,而是这个

1722d433e6257113014e6c2575d890b7.png

大家看到的矩阵里面大多数地方都是0,这很正常,如果这个矩阵的这个位置是0,代表的意思是这个矩阵的这个位置是空白的,什么也没有。如果是1,代表这个地方是一个红色的砖墙,2代表的是炮弹也打不穿的铁墙,3代表的是可以藏身的草地,5代表的就是老鹰。

如果你需要让这个游戏丰富起来,想设置更多的游戏地图,有个很简单的方法,直接在代码里面修改这个矩阵即可。

不行你可以尝试一下,把这个矩阵里面的数字打乱,那么出现在你面前的绝对是一个乱七八糟的图。

三:游戏的进阶

玩这个游戏的时候,大家也许会注意到。敌方坦克发射炮弹和移动都是随机的,这导致地方战斗力过差。很容易被我方坦克击破。如果感兴趣的朋友,可以想个办法,让地方的坦克能够寻找目标,然后定向开炮。

另外就是,敌方坦克被击破以后无法复活,这显然是没法长时间玩的,所以可以加一个复活的功能。

如果是联机对战,还可以加一个埋地雷的功能。

如果以后有时间,我们会一一实现这些功能。97c14cf75ae28ef53f1d25c94306b315.png

作者|齐

编辑|齐

PYTHON

扫二维码|关注我们

QQ群:729683466

# 参考来源

代码来源:github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值