# 基于WIN32 API界面编程实现的数位飞机大战小游戏
# 1 游戏介绍
《数位飞机大战》(DigitPlane)是经典游戏“飞机大战”的仿制。游戏背景为,玩家被敌人困在计算机内由数字组成的世界里,只能驾驶飞机,发射子弹,尽量多地击毁敌机,以获得逃离的机会。飞机,子弹,敌机都是由数字构成的,若飞机被击中,会幻化消失在茫茫的数字世界中。
游戏界面上主要元素均为数字,玩家使用最经典的输入设备——键盘控制自己飞机的飞行。游戏提供多种道具供玩家拾取以增加趣味性。
# 2 游戏流程
游戏流程如下图所示。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/bb5dbbc9fb3016e31523e825e65b05a8.writebug)
# 3 界面设计
游戏界面总体采用简单的纯色、像素风格,如下图所示。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/a27a85f5ea1fa46636d355e9629fbae5.writebug)
# 4 概要设计
## 4.1 系统架构
主要函数、模块层次划分如下图所示。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/e15fb9f09eac649a29139c5cbbd905a0.writebug)
## 4.2 核心代码流程
游戏逻辑的主要部分,核心代码之所在,Run\_Timer函数的流程如下所示。
- 流程开始:由WinProc调用
- S0:更新计时器全局变量
- S1:遍历所有敌机,调用HitHero判断是否与我机相撞(如相撞,标记敌机)
- S2:遍历所有子弹和所有飞机,调用Hit判断是否击中(如击中,标记子弹和飞机)
- S3:遍历所有道具,调用GetToy判断是否被我机拾获(如拾获,标记道具,产生道具效果,设置相应全局变量)
- S4:判断当前分数和关卡,如果需要,升级关卡
- S5:判断计时器全局变量的值,如符合频率要求,创建一架新敌机
- S6:遍历所有敌机,产生位移
- S7:判断计时器全局变量的值,如符合频率要求,以一定概率随机使敌机产生新的子弹
- S8:遍历所有敌机,若飞出屏幕,调用DestroyPlane清除
- S9:遍历所有子弹,产生位移
- S10:遍历所有道具,产生位移
- S11:判断计时器全局变量的值,如符合频率要求,使我机产生新的子弹。根据全局变量记录的道具信息产生不同子弹,更新道具冷却时间全局变量
- S12:加分
- S13:清除无效的飞机。遍历所有敌机,若发现被标记,调用DestroyPlane清除之。在大飞机被清除时产生道具,在Hero快没血的时候以更大的概率产生 toyBLD
- S14:清除无效的子弹。遍历所有子弹,若发现被标记,调用DestoryBullet清除之
- S15:清除无效的道具。遍历所有道具,若发现被标记,调用DestoryToy清除之
- S16:动画进帧
- 流程结束,控制流交还WinProc以绘图
# 5 总结与感悟
在大一第一学期的诸课程中,软件工程(1)是使我收获最大的一门课程,软件工程(1)的大作业是使我收获最大的一项作业。
大作业的完成综合应用了一学期以来通过C语言程序设计课程学习到的知识和技能。特别是数组、结构体的大量使用,使我对该部分内容掌握非常牢固。我想,正是这样——不管学了什么东西,一定要用起来,才能真正掌握好。
大作业锻炼了我的自学能力。助教提供的参考书是大部头,不可能全部读完,我选择性地读了对我最有帮助的两章,这帮助我了解了Windows API编程的基本知识,迅速读懂助教提供的框架代码,使我仅用数小时便完成所有必须的功能点成为可能。大作业的完成过程增加了我对编程的兴趣,增强了我的自信。毕竟本课程是本学期诸课程中唯一我觉得在同学中间有优势的课程了……
我的大作业代码达到两千行。良好的编程习惯的重要性显示出来。而且这样规模的程序已经需要一定的层次架构了,完成大作业的过程是这方面的一种启蒙。
在大作业完成过程中,我自己摸索出了打印调试信息、合理设置断点、利用Visual Studio提供的多种调试工具等进行调试的方法,可以说是用自己的智慧解决了一开始看起来难以解决的Win32应用程序难以调试的问题。
在帮助同学调试飞机大战程序的过程中,我见到了不少其他同学犯的错误,有些很难发现。这使我积累了很多调试经验,对我自己以后编写程序也是一种提示。
# 6 游戏演示
**游戏初始界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/c531d2c209d8fc253b63ccd5a8ddc111.writebug)
**游戏画面1**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/47b49d8fc633b9de4cc14c0697fcb97e.writebug)
**游戏画面2**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/151731c55f931607d70d34d45973ab4a.writebug)
**游戏结束**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/6400500fa35c937a15dfe9621ec41620.writebug)
精选_毕业设计_基于WIN32 API界面编程实现的数位飞机大战小游戏_完整源码
版权申诉
53 浏览量
2022-03-06
08:11:46
上传
评论
收藏 10.22MB ZIP 举报
工具盒子
- 粉丝: 58
- 资源: 1313