## 飞机大战
最近学习了python的面向对象,对面向对象的理解不是很深刻。
面向对象是数据和函数的'打包整理',将相关数据和处理数据的方法集中在一个地方,方便使用和管理。
本着学习的目的,在网上找了这个飞机大战游戏的素材和相关代码,自己研究学习,加深对面向对象的理解。
python可以做游戏,最基本的一个第三方模块就是**[pygame](https://www.pygame.org/news)**,借助pygame可以实现2D和3D游戏的开发。
下面就开始学习了解对象思想吧,顺便学学pygame,娱乐一下。
![](https://img2020.cnblogs.com/blog/1950650/202005/1950650-20200502120704942-1559307907.gif)
## 游戏需求
~~~python
# 飞机大战
<1> 玩机通过键盘操作我方飞机,我方飞机自动发射初级子弹。
<2> 敌机分三种:小型敌机、中型敌机、大型敌机,区别:速度不同,数量不同,外形不同,血值不同。
<3> 小型敌机速度快,数量多,一颗子弹必杀;大型敌机和中型敌机速度慢,数量少,需要多可子弹才能消灭。
<4> 小型敌机分值低,大型敌机和中型敌机分值高。
<5> 统计玩机得分和最高分记录。
<6> 随着得分的增加,提升游戏等级,增加游戏的难度:增加敌机速度和数量
<7> 任意敌机和我方飞机碰撞,则玩家挑战失败一次;玩家有三次挑战机会。三次机会用完结束游戏。
<8> 我方飞机和敌机毁灭时,动画效果要实现
<9> 游戏中,每隔30s有一次随机空投补给:全屏炸弹或超级子弹。
<10> 游戏开始,玩家自带三颗全屏炸弹,按空格键触发,消灭屏幕内所有敌机;
<11> 使用一次全屏炸弹,数量减一,当玩家的全屏炸弹数少于3颗时,通过空投补给全屏炸弹,最多携带3颗全屏炸弹。
<12> 玩家领到超级子弹时,有18s的使用时间限制;超级子弹发射数量是普通子弹的两倍。
<13> 大型敌机和中型敌机,要显示血量,标识生命值,生命值结束,敌机摧毁,玩机得分。
<14> 玩家可以通过暂停按钮暂停和继续游戏
<15> 游戏有开始界面和结束是否继续的界面。
~~~
## 需求分析
~~~python
# 角色1:我方飞机、敌机(小型敌机、中型敌机、大型敌机)、子弹、补给(全屏炸弹、超级子弹)
# 角色2:设置类、面板类、游戏状态类
- 我方飞机
- 继承pygame.sprite.Sprite
- 本地保存设置类对象和 屏幕对象
- 数据属性:surface\destory_surface\rect\speed\active\invincible\mask
- 功能属性:上下左右移动、绘制、重置位置
- 敌机(小、中、大)
- 继承pygame.sprite.Sprite
- 本地保存设置类对象和 屏幕对象
- 数据属性:surface\destory_surface\rect\speed\active\hit\mask\energy
- 功能属性:向下移动、绘制、血槽、重置位置
- 子弹(子弹1、子弹2)
- 继承pygame.sprite.Sprite
- 本地保存设置类对象和 屏幕对象
- 数据属性:surface\rect\speed\active\mask
- 功能属性:向上移动、绘制、重置位置
- 补给(全屏炸弹、超级子弹)
- 继承pygame.sprite.Sprite
- 本地保存设置类对象和 屏幕对象
- 数据属性:surface\rect\speed\active\mask
- 功能属性:向下移动、绘制、重置位置
- 设置类
- 数据属性:游戏基本参数设置
- 功能属性:游戏加载、暂停、统计得分、补给设置等
- 面板类
- 本地保存设置类对象和 屏幕对象、游戏状态对象
- 数据属性:分数面板数据、暂停面板数据、全屏炸弹面板数据、玩家生命个数面板数据、开启|结束|继续面板等
- 功能属性:绘制各种面板数据
- 面板类
- 本地保存设置类对象
- 数据属性:game_active\game_paused\game_start\game_level\game_score_level
~~~
## 提取功能
> **提取游戏功能背后对应的pygame功能**
- 游戏背景图、背景音乐 - **显示、图片、音效功能**
- 绘制我方飞机、实现移动 - **事件监听功能**
- 绘制敌机
- 我机-敌机碰撞检测 - **碰撞检测功能**
- 我机死亡后重置-5秒无敌模式 - **自定义时间事件**
- 增加普通子弹
- 子弹-敌机碰撞检测
- 绘制血槽能量值 - **几何图形功能**
- 得分统计面板 - **字体功能**
- 全屏炸弹面板功能
- 游戏难度等级
- 游戏暂停-继续 - **光标设置图像功能**
- 空投补给-全屏炸弹和超级子弹 - 自定义时间事件
- 普通子弹和超级子弹的切换 - 自定义时间事件
## 运行环境
~~~python
- win10
- python3.8
- pygame1.9.6
- pycharm2019.3
~~~
没有合适的资源?快使用搜索试试~ 我知道了~
飞机大战Aircraft-Battle.zip
共88个文件
png:41个
wav:12个
py:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 4 浏览量
2024-05-12
19:30:10
上传
评论
收藏 3.07MB ZIP 举报
温馨提示
五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
资源推荐
资源详情
资源评论
收起资源包目录
飞机大战Aircraft-Battle.zip (88个子文件)
Aircraft-Battle-master
sounds
button.wav 11KB
get_bomb.wav 23KB
upgrade.wav 38KB
get_bullet.wav 104KB
enemy1_down.wav 72KB
bullet.wav 36KB
supply.wav 34KB
enemy3_flying.wav 104KB
me_down.wav 90KB
use_bomb.wav 83KB
enemy3_down.wav 142KB
enemy2_down.wav 59KB
game_music.ogg 339KB
main.py 1KB
readme.md 5KB
bullet.py 1KB
.idea
codeStyles
codeStyleConfig.xml 153B
Project.xml 210B
vcs.xml 180B
misc.xml 288B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 282B
Aircraft-Battle.iml 317B
.gitignore 38B
encodings.xml 135B
my_ship.py 3KB
board.py 6KB
recorded.txt 6B
enemy.py 8KB
game_status.py 434B
images
pause_pressed.png 2KB
desc.png 18KB
enemy1_down4.png 2KB
check.png 471B
enemy1.png 3KB
again.png 4KB
enemy2.png 8KB
bomb.png 6KB
me_destroy_2.png 15KB
enemy2_hit.png 8KB
enemy1_down2.png 4KB
enemy3_n1.png 39KB
enemy3_hit.png 41KB
gameover.png 4KB
resume_nor.png 2KB
bullet2.png 289B
life.png 4KB
bomb_supply.png 7KB
enemy3_n2.png 40KB
enemy3_down2.png 47KB
enemy2_down4.png 4KB
me_destroy_4.png 4KB
me1.png 12KB
me_destroy_3.png 16KB
enemy1_down1.png 3KB
enemy3_down1.png 42KB
enemy3_down5.png 64KB
background.png 38KB
resume_pressed.png 2KB
me2.png 12KB
enemy2_down1.png 10KB
bullet_supply.png 7KB
me_destroy_1.png 14KB
enemy3_down4.png 58KB
bullet1.png 292B
enemy1_down3.png 5KB
enemy3_down6.png 11KB
enemy3_down3.png 52KB
pause_nor.png 2KB
enemy2_down3.png 12KB
enemy2_down2.png 11KB
battle.ico 4KB
settings.py 5KB
__pycache__
game_status.cpython-38.pyc 647B
main.cpython-38.pyc 1KB
board.cpython-38.pyc 5KB
my_ship.cpython-38.pyc 2KB
settings.cpython-38.pyc 5KB
game_functions.cpython-38.pyc 8KB
enemy.cpython-38.pyc 6KB
bullet.cpython-38.pyc 2KB
supply.cpython-38.pyc 2KB
supply.py 2KB
game_functions.py 12KB
fonts
carton.ttf 2.48MB
font.ttf 77KB
manualType.properties 10B
item.pdf 6B
共 88 条
- 1
资源评论
枫蜜柚子茶
- 粉丝: 7500
- 资源: 5123
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功