c语言全民飞机游戏代码,课内资源 - 基于VC++和OpenCV实现的全民飞机大战游戏

摘要功能:利用C++语言完成了一个小游戏项目-全民飞机大战,该游戏首先能够给用户提供注册,登录功能;提供了菜单栏及两种游戏模式,一种是无尽模式,另一种是一般模式;一般模式中用户通过控制玩家飞机攻击敌方飞机获得分数以及奖励,打死boss飞机后可进入下一关,难度一次增加;玩家也可捡取道具,获得生命值,变换飞机形态。无尽模式中玩家通过躲避炸弹,捡取星星获得奖励,随时间推移,炸弹移动速度加快。玩家飞机阵亡后会显示自己分数,及排行榜

核心算法:游戏主控制算法、图片绘制算法、飞机移动算法、导弹追踪算法

优点:有较为清楚的软件运行流程,用户可以登录注册,保存数据,还有两种模式可供用户选择,敌方导弹还有追踪功能

不足:没有图形化的登录界面,画面感不强,游戏过程中道具种类较少,没有加入鼠标操作

一、项目概述

1.1 项目简介

全民飞机大战,是一款经典的游戏。本软件,首先用户若有账号可以直接登录,若没有可以直接注册,然后登录。登陆成功进入菜单界面,选择模式,进入游戏。游戏中用户通过消灭敌方飞机获得分数,敌方飞机毁灭会爆出奖励,吃到奖励也可以加分,同时还有道具,飞机一共有三种形态,根据捡到道具个数,飞机依次变换形态。在击毁一定数量敌机后,会出现boos飞机,击毁boss飞机后会进入下一关卡,关卡难度依次递增。在通关或我方飞机阵亡时,会出现排行榜,记录当前获得分数,和排名。此软件还有无尽模式,飞机通过捡取奖励星星获得分数,若被障碍物炸弹击中会耗损生命值,根据时间推移,障碍物会移动越来越快,增加游戏难度。直到我方飞机阵亡,而后也会出现排行榜。此外游戏还设有音乐,按键等一些操作。

1.2 功能要求编号

功能模块

输入描述

操作步骤

输出描述

1

开始系统

程序已经运行

系统开始

2

登录

程序已经进行

按 1键

开始登陆

3

注册

程序已经进行

按 2 键

开始注册

4

菜单界面

程序已经运行

通过按键

选择模式

5

无尽模式

程序已经运行

按Enter 键进入

开始游戏

6

一般模式

程序已经运行

按Enter 键进入

开始游戏

7

退出游戏

程序已经运行

按Enter 键进入

退出游戏

8

飞机上移

程序已经运行

按W键

飞机向上移动

9

飞机下移

程序已经运行

按S键

飞机向下移动

10

飞机左移

程序已经运行

按A键

飞机向左移动

11

飞机右移

程序已经运行

按D键

飞机向右移动

12

攻击

程序已经进行

按J键

我方飞机发出子弹,不同飞机子弹类型不同

13

消灭

程序已经进行

玩家子弹与敌方飞机碰撞

敌方飞机销毁,爆出奖励

14

消灭

程序已经运行

敌方子弹与玩家飞机碰撞

玩家飞机掉血,直到被击毁,游戏结束

15

碰撞1

程序已经运行

敌方飞机与玩家飞机碰撞

敌方飞机与玩家飞机都失血

16

计分

程序已经运行

击毁不同飞机,得到分数不同

17

碰撞2

程序已经运行

玩家飞机与奖励星星碰撞

得到分数奖励

18

碰撞3

程序已经运行

玩家飞机与炸弹碰撞

玩家飞机失血

19

排行榜

程序已经运行,游戏结束

显示当前分数,与排名

20

重玩游戏

程序已经运行,游戏结束

按Enter键

进入菜单选项

21

退出游戏

程序已经运行,游戏结束

按ESC键

退出游戏

二、总体设计

2.1 类关系图

94bb3e97beb35d67b4a8abc6605ddd28.png

2.2 结构关系图

9fa0e573fed0a2b1ff2d11c8b1e7af3a.png

简要说明:plane为飞机基类,mplane, Enemyplane, EnemyFightplane, EnemyBossplane分别为派生的子类,这样封装可以任意增加子类,删除子类,子类可以从基类继承方法,还可以对某些方法进行多态继承,子类统一使用同一接口,而自己在类中实现自己特有的方法。

2.3 设计类图(所有类图)

985703809999eb24b797d353d8ef472c.png

c6834d17d3f57cd11242ab7242051bbe.png

1627dce56c02eaf620f475034ade4e2b.png

6c30c4d2d7e7884368a58d94c75ba9a6.png

9122aedaa819c53b8f30a0f03d20cc66.png

a88f48665e99fc17b3e72aa01e4d6a3b.png

11fecb80f9eacd2062b7d1460eb7a360.png

5325859f3ff867667d5af0d9fa270b7d.png

eb739d3ef9964774451f6e58df476c9d.png

78cd0bd4291c8031e04a55bfa2d35085.png

84b61abe80d39945eb51d47dfe9b2c98.png

f9c3336a909638872548edee8dbd45b0.png

426667147ed601b5a6266d111a1a4f74.png

266772dacd3b7d89bab1cd6fd0e0859c.png

37cffde45b1c7a20eb7aa86fe818b023.png

三、核心算法

3.1 游戏总控算法

该算法完成控制整个游戏进程的功能,判断游戏进行状态,对角色道具进行更新,该算法主要是通过CManager类中的Run函数进行控制,对枚举变量m_state进行判断达到控制开始,运行,结束界面。当m_state=0时,进入开始界面;m_state=1时,进入运行界面;m_state=2时,进入结束界面。流程图如下:

17efd554492bbe72e5c5227c13ce32d1.png

算法对应实现函数:CManager类下的Run函数。

3.2 导弹追踪

该算法是Cbullet类下的Move,Angle函数,该两个函数用于敌方导弹追踪我方飞机,该算法先利用子弹,飞机的坐标,利用反三角函数算出角度,再利用三角函数sin,cos算出x,y方向的分速度,再进行子弹移动。流程图如下:

23e5949049ee73ba5ae3d197d215f091.png

算法对应实现函数:CBullet类下的Move,Angle函数。

四、程序实现

4.1 开发平台与编译运行要求硬件配置

版本

Windows操作系统

Windows 10

Microsoft Visual studio

VS2013

OpenCV

2.4.11

4.2 核心功能分析

登录注册

df67be20c61215a1d1f002e00ab37cc1.png

40a5befa3d1c93255a13d291e95da018.png

20938873fdd100e0a467731e5fc26616.png

开始界面—菜单栏

1656b5fc78286db2956fdc033251b0b2.png

运行界面 – 无尽模式 – 一般模式

7b1f6dbfbf625b19c1cda105c6b8ff07.png

7aec54450bf44302cd29974d570dc61c.png

结束界面: 实现分数显示,排行榜

346826ab32263cee653a13198202206c.png

导弹追踪:玩家旁边的两枚导弹为追踪弹

dc2fdaa9b204b62b63ced60e70b9d050.png

存储功能 – 用户注册

23f3107f5a3275cd35d75abab2da5a98.png

存储功能 – 得分存储

ad1074fcec5d2b6b8ed268160536286a.png

4.3 功能完成度编号

功能模块

完成情况描述

完成度

1

开始系统

出现登录,注册选择界面

100%

2

登录

登录成功,出现开始界面菜单

100%

3

注册

注册成功,出现登录界面

100%

4

菜单界面

出现菜单界面

100%

5

无尽模式

进入无尽模式

100%

6

一般模式

进入一般模式

100%

7

退出游戏

退出游戏

100%

8

飞机上移

飞机向上移动

100%

9

飞机下移

飞机向下移动

100%

10

飞机左移

飞机向左移动

100%

11

飞机右移

飞机向右移动

100%

12

攻击

子弹从飞机炮口发出

100%

13

消灭

敌方飞机消失,出现爆炸特效并且出现爆炸奖励

100%

14

消灭

玩家飞机掉血

100%

15

碰撞1

玩家飞机,敌方飞机都掉血

100%

16

计分

分数增加

100%

17

碰撞2

得分增加

100%

18

碰撞3

血量减少

100%

19

排行榜

显示当前分数与排行

100%

20

重玩游戏

游戏重新回到开始菜单界面

100%

21

退出游戏

退出游戏

100%

五、总结

终于完成了该项目——全民飞机大战,在结束时,也对自己的游戏总结了一下,有些优点,也有些不足之出。优点:有较为清楚的软件运行流程,用户可以登录注册,保存数据,还有两种模式可供用户选择,敌方导弹还有追踪功能。不足:没有图形化的登录界面,画面感不强,游戏过程中道具种类较少,没有加入鼠标操作。完成此项目,自己收获也有很多,能够清楚地了解到制作一个软件所必要的流程,类的使用,继承,多态也有很好的了解,能够明白什么时候使用继承,什么方法有必要使用多态。虽然这些还不能熟练的使用,但是我会努力的学习使用它。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于人脸识别的问题,以下是使用OpenCV-Java实现人脸识别的代码示例: 1. 引入OpenCV-Java库 在项目中引入OpenCV-Java库,可以从官网下载对应的版本,引入后,我们就可以调用OpenCV-Java提供的API来实现人脸识别。 2. 加载人脸识别器 在使用OpenCV-Java实现人脸识别前,我们需要加载一个训练好的分类器,可以使用官方提供的人脸识别模型,或自己训练。加载过程如下: ``` CascadeClassifier faceDetector = new CascadeClassifier("haarcascade_frontalface_alt.xml"); ``` 3. 读取图片并识别人脸 加载分类器后,我们可以读取一张图片并进行人脸识别,具体实现代码如下: ``` Mat image = Imgcodecs.imread("test.jpg"); // 读取图片 Imgproc.cvtColor(image, image, Imgproc.COLOR_BGR2GRAY); // 转为灰度图 Imgproc.equalizeHist(image, image); // 直方图均衡化,提高图像质量 Rect[] faces = faceDetector.detectMultiScale(image); // 识别人脸 for (Rect rect : faces) { Imgproc.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0)); // 绘制人脸框 } Imgcodecs.imwrite("result.jpg", image); // 保存结果 ``` 其中,`detectMultiScale` 方法用于检测出图像中的人脸,返回一个`Rect`类型的数组,每个元素代表一个人脸的位置和大小。 4. 运行程序 将以上代码放入一个Java类中,运行程序即可实现人脸识别。注意,需要引入`org.opencv.core.Mat`、`org.opencv.core.Rect`、`org.opencv.core.Point`、`org.opencv.core.Scalar`、`org.opencv.imgcodecs.Imgcodecs`、`org.opencv.imgproc.Imgproc`等OpenCV-Java的类。 希望能够对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值