Python小游戏16之炸弹人源码
0 前言
🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是
🚩 基于python的炸弹人小游戏设计与实现
🥇学长这里给一个题目综合评分(每项满分5分)
难度系数:3分
工作量:3分
创新点:4分
1 课题背景
大家小时候一定在红白机上玩过炸弹人这款小游戏吧,《炸弹人》是HUDSON出品的一款ACT类型游戏,经典的第一作登陆在FC版本,游戏于1983年发行。游戏具体操作是一个机器人放置炸弹来炸死敌人,但也可以炸死自己,还有些增强威力与技能道具增加了游戏的可玩性。

今天我们用pygame做一个炸弹人小游戏,游戏规则如下:
玩家通过↑↓←→键控制角色zelda(绿色)行动,当玩家按下空格键时,则可以在当前位置放置炸弹。其他角色(dk和batman)则由电脑控制进行随机行动。所有角色被炸弹产生的火焰灼烧时(包括自己放置的炸弹),都将损失一定生命值;所有角色吃到水果时,均可恢复一定数值的生命值。另外,墙可以阻止炸弹产生的火焰进一步扩散。
当我方角色生命值为0时,游戏失败;当电脑方所有角色生命值为0时,游戏胜利,进入下一关。
2 实现效果



3 Pygame介绍
简介
Pygame是一系列专门为编写电子游戏而设计的Python模块(modules)。Pygame在已经非常优秀的SDL库的基础上增加了许多功能。这让你能够用Python语言编写出丰富多彩的游戏程序。
Pygame可移植性高,几乎能在任何平台和操作系统上运行。
Pygame已经被下载过数百万次。
Pygame免费开源。它在LGPL许可证(Lesser General Public License,GNU宽通用公共许可证)下发行。使用Pygame,你可以创造出免费开源,可共享,或者商业化的游戏。详情请见LGPL许可证。
优点
能够轻松使用多核CPU(multi core CPUs) :如今双核CPU很常用,8核CPU在桌面系统中也很便宜,而利用好多核系统,能让你在你的游戏中实现更多东西。特定的pygame函数能够释放令人生畏的python GIL(全局解释器锁),这几乎是你用C语言才能做的事。
核心函数用最优化的C语言或汇编语言编写:C语言代码通常比Python代码运行速度快10-20倍。而汇编语言编写的代码(assembly code)比Python甚至快到100多倍。
安装便捷:一般仅需包管理程序或二进制系统程序便能安装。
真正地可移植:支持Linux (主要发行版), Windows (95, 98, ME, 2000, XP, Vista, 64-bit Windows,), Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX等操作系统.也能支持AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS and OS/2,但是还没有受到官方认可。你也可以在手持设备,游戏控制台, One Laptop Per Child (OLPC) computer项目的电脑等设备中使用pygame.
用法简单:无论是小孩子还是大人都能学会用pygame来制作射击类游戏。
很多Pygame游戏已发行:其中包括很多游戏大赛入围作品、非常受欢迎的开源可分享的游戏。
由你来控制主循环:由你来调用pygame的函数,pygame的函数并不需要调用你的函数。当你同时还在使用其他库来编写各种各种的程序时,这能够为你提供极大的掌控权。
不需要GUI就能使用所有函数:仅在命令行中,你就可以使用pygame的某些函数来处理图片,获取游戏杆输入,播放音乐……
对bug反应迅速:很多bug在被上报的1小时内就能被我们修复。虽然有时候我们确实会卡在某一个bug上很久,但大多数时候我们都是很不错的bug修复者。如今bug的上报已经很少了,因为许多bug早已被我们修复。
代码量少:pygame并没有数以万计的也许你永远用不到的冗杂代码。pygame的核心代码一直保持着简洁特点,其他附加物诸如GUI库等,都是在核心代码之外单独设计研发的。
模块化:你可以单独使用pygame的某个模块。想要换着使用一个别的声音处理库?没问题。pygame的很多核心模块支持独立初始化与使用。
最小开发框架
代码执行流程

4 具体实现
4.1 环境配置
Python版本:3.6.4
相关模块:
pygame模块;
以及一些Python自带的模块。
4.2 创建游戏类
首先,我们来明确一下该游戏包含哪些游戏精灵类:
炸弹类
角色类
墙类
背景类
水果类
4.3 墙和背景类
墙类和背景类很好定义,只需要可以导入图片,然后把图片绑定到指定位置就行了:
4.4 水果类
水果类定义其实也差不多,但是不同的水果可以帮助角色恢复不同数值的生命值:
4.3 角色类
炸弹类和角色类的定义就稍稍复杂一些了。角色类需要根据玩家或者电脑的指示上下左右移动,同时可以在自己的位置上产生炸弹以及吃水果之后恢复一定数值的生命值:
角色类定义
角色类移动
AI电脑随机移动
生成炸弹、吃水果、角色朝向
4.4 炸弹类
定义
爆炸效果
爆炸区域
4.5 地图设计
通过一个地图解析类来解析.map文件,这样每次切换关卡时只需要重新导入一个新的.map文件就行了,同时这样也方便游戏后续进行扩展:
4.6 游戏主循环
最后,做完准备工作,只差游戏主循环了。
逻辑很简单,就是初始化之后导入关卡地图开始游戏,结束一关之后,判断是游戏胜利还是游戏失败,游戏胜利的话就进入下一关,否则就退出主循环,让玩家选择是否重新开始游戏。
最近很多粉丝私信获取Python30个小游戏源码,但是因为网盘的原因,总是被和谐,所以之后我会在专栏一一公开分享,需要练习的小伙伴记得持续关注哦~
需要Python学习视频以及电子书的宝子们,可以看UP主主页的介绍获取哦~