下载APP 编程狮,随时随地学编程
返回 首页

Python3 教程

Python3制作仿“经典90坦克大战”小游戏

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏
下载W3Cschool手机App,0基础随时随地学编程>>戳此了解

导语

本期我们将制作一个仿“经典90坦克大战”的小游戏。啊,想起来上一次玩这个游戏的时候才小学呢。T_T真是一款暴露年龄的游戏。

算了废话不多说,让我们愉快地开始吧~

相关文件

百度网盘下载链接: https://pan.baidu.com/s/1Rl6gvHTGfWxuU3KjWYWbBw 

密码: eksw

图片素材源于网络,侵歉删。

开发工具

Python版本:3.6.4

相关模块:pygame模块;以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

先睹为快

点击链接查看视频

原理介绍

T_T感觉自己的代码整体上逻辑还是很清晰的,也做了很多必要的注释,所以这里我只讲主要的思路,一些实现细节请阅读我的源代码。

游戏规则:

游戏有单人和双人两种模式,己方大本营被破或者己方坦克被歼灭则游戏失败,成功通过所有关卡则游戏胜利。另外,玩家可以通过射击特定的坦克使地图上随机出现一个道具,若己方坦克捡到该道具,则触发一个事件,例如坦克能力的增强。

玩家操作方式如下:

玩家一:

wsad键:上下左右;

空格键:射击。

玩家二:

↑↓←→键:上下左右;

小键盘0键:射击。

逐步实现:

Step1:定义精灵类

因为游戏肯定涉及到碰撞检测,所以我们需要定义一些精灵类。

首先,既然是坦克大战,总得有坦克吧?

己方坦克:

上面的代码定义了坦克的一些属性,例如速度、等级、是否处于受保护状态等等。

当然这里也实例化了一个子弹类,这个我们之后再定义,先假装有这个子弹类,这样主逻辑才是完整的,不然坦克没有子弹类怎么射击呢?

当然,有属性还是不够的,我们还要赋予坦克一些能力,例如上面所说的射击:

当然还有上下左右的移动,因为都是类似的,这里只给出向上移动的源码:

啊,还有坦克的等级提升与下降:

最后当然是坦克死后重置啦:

敌方坦克:

敌方坦克和己方坦克定义的源代码很相似,只不过移动是随机的,死后是不可复生的,就不截图了T_T。

现在,我们可以来定义子弹类了!

子弹类:

子弹类应当具有例如速度、强度等属性,以及选择方向和移动的能力:

最后,我们来定义其他涉及到碰撞检测的物体类。

大本营:

有正常和被摧毁两种状态:

地图障碍物:

包括砖墙、钢墙、森林、河流和冰:

食物道具:

一共有7种道具,不同的道具对应不同的效果:

Step2:设计游戏地图

Emmmm,游戏的大背景是黑色的,然后在上面堆上一些步骤一中定义的障碍物就可以完成地图设计了。其中,钢墙不能被一般的子弹击破,砖墙可被任意子弹击破,除墙外,坦克可以穿过任意障碍物,不过没有任何附加效果(有兴趣的小伙伴可以自己扩展一下~比如冰上的坦克速度加快等等):

我偷懒只设计了一个地图和两个关卡,有兴趣的小伙伴同样可以在此基础上设计更多的地图和关卡。

Step3:实现游戏主循环

主循环的代码比较长,不过逻辑很清晰。首先展示游戏开始界面,玩家在此界面选择游戏模式后进入游戏;在游戏中,需要进行一系列的碰撞检测以及触发碰撞产生的一系列事件,并绘制当前存在的所有物体;最后,若游戏失败,则显示游戏失败界面,若通关,则显示游戏成功界面(我比较偷懒,界面设计的都比较简陋,有兴趣的小伙伴又可以扩展啦~)。

这里的代码截图就算啦(截长图比较麻烦T_T)~

All Done!

完整源代码和游戏素材以及打包好的游戏文件都在相关文件里有,自行下载查看即可~

更多

代码截止2018-07-19测试无误(T_T其实我没有测试完所有功能,所以有bug的话可以私信告诉我,我想办法修复一下)。

也欢迎有兴趣的小伙伴进一步拓展游戏。

目录

Python3 爬虫实战教程

什么是Python3网络爬虫?
网页审查元素

Python3 爬虫实战

笔趣看小说Python3爬虫抓取
Python3爬虫图片抓取
Python3爬虫视频抓取—爱奇艺VIP视频下载
Python3爬虫查看微信撤回消息
Python3爬虫获取豆瓣读书数据
Python3爬取网易云音乐评论
Python3爬取QQ空间信息(上)
Python3爬取QQ空间信息(下)
Python3爬取美团美食板块商家数据
Python3抓取猫眼电影数据
Python3抓取并分析天气数据
Python3爬取房价信息并分析
Python3制作网易云音乐下载器
Python3实现抢火车票功能(上)
Python3实现抢火车票功能(中)
Python3实现抢火车票功能(下)
Python3制作王者荣耀出装小助手
Python3百行代码批量下载抖音视频
Python3批量下载抖音视频
Python3制作酷狗和QQ音乐下载器
Python3下载音悦台MV
Python3下载B站视频实战课程

Python3应用实例

Python3预测NBA比赛结果
Python3简单实现图像风格迁移
Python3实现写作
Python3实现“美颜”功能
利用Python简单品读小说
Python3实现颜值预测
Python识别垃圾邮件
利用Python3绘制一些有意思的图案
Python实时监控CPU使用率
Python3简单分析高考数据
Python3利用邮件远程控制自己电脑
Python实现简单的换脸术
Python3分析个人音乐收藏

Python3应用实例 制作小游戏

Python3制作小游戏(一)
Python3制作类八音符的小游戏
Python3制作个拼图小游戏
Python3制作简单的滑雪游戏
Python3制作仿“经典90坦克大战”小游戏
Python3制作仿“FlappyBird”小游戏
Python3实现AI版贪吃蛇
Python3实现AI版贪吃蛇
Python3实现AI五子棋【初版】

Python3应用实例 其他类

Python3制作简易浏览器
Python3处理手写笔记
Python3实现浪漫表白
Python3制作简易SSH登录工具
Python3简单实现隐写术
Python3实现简单的车牌检测
【Python3+VBA】在Excel中生成小姐姐

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }