飞机大战MFC实验报告
飞机大战实训报告
飞机大战实训报告
作为一款经典的游戏,《飞机大战》已经深入人心,对于爱好游戏开发的人来说,掌握它的制作方法有助于提升自己的技能和经验。在我的实训项目中,我选择了制作一款《飞机大战》游戏,下面是我的实训报告。
一、前期准备
在开始制作游戏之前,我首先进行了一些前期准备,包括学习游戏开发工具和游戏设计思路的设计。
1.游戏开发工具的选择
根据我的经验和需求,我选择了使用Cocos Creator 开发工具,因为它可以提供完整的游戏开发环境,包括UI 设计、动画制作、场景控制等功能,同时支持多平台发布。
2.游戏设计思路的设计
在开发游戏之前,我需要对游戏的设计方案进行一定的考量。我决定将游戏分为三个主要部分:开始场景、游戏场景和结束场景。在开始场景中,我将为玩家提供游戏规则、操作说明等信息。游戏场景将包括玩家战机、敌机、敌机攻击、奖励、分数等元素。结束场景将显示玩家的得分、排名和游戏结束信息。
二、游戏开发
1.开始场景
开始场景是游戏的首屏,玩家可以在这里了解游戏规则和操作方法。在这个场景中,我将使用Cocos Creator 的UI 设计功能创建一个开始界面。在这个界面中,我会提供游戏开始、音乐开关、游戏规则等按钮。
2.游戏场景
游戏场景是游戏的核心场景,游戏操作和游戏体验都在这里产生。在这个场景中,我会使用Cocos Creator 的场景设计功能创建一个游戏场景。在这个场景中,我将包含玩家战机、敌机、敌机攻击、奖励和分数等元素。
3.结束场景
结束场景是游戏的最后一个场景,玩家可以在这里查看自己的得分和排名。在这个场景中,我将使用Cocos Creator 的UI 设计功能创建一个结束界面。
经典实验--飞机大战小游戏
经典实验--飞机⼤战⼩游戏
·⼀、需求设计
1.为检测C语⾔的学习成果,根据所学的C语⾔知识,设计程序:飞机⼤战⼩游戏;
2.⾃⾏定义变量,函数或结构体,编写源代码并进⾏编译运⾏测试;
3.根据编写的代码,⾃⾏攥写实验报告;
·⼆、系统设计
1 实验题⽬:
飞机⼤战⼩游戏
2 游戏描述
飞机⼤战是⼀款惊险刺激的射击游戏,通过控制飞机的上下左右移动,发射⼦弹,击退敌机并赢得分数,玩游戏既可以锻炼⼈的反应能⼒,也可以起到放松⾝⼼的作⽤.
进⾏C语⾔⾯向对象程序设计课程设计主要是在学习C语⾔这门⾯向对象语⾔的基础上,并通过实践加深对 C语⾔⾯向对象程序设计语⾔特点的认识与理解。同时,可以提⾼运⽤C编程语⾔解决实际问题的能⼒;锻炼实际的编程能⼒;还能提⾼调查研究、查阅技术⽂ 献、资料以及编写软件设计⽂档的能⼒。
3 功能要求
【1】实现游戏难度的选择,飞机模型以及界⾯的外观设计等的功能。
【2】实现⽅向操移动的操作和敌机随机⽣成功能。
【3】分数计算功能。
【4】游戏的开始,暂停,结束以及分数显⽰的功能。
三、概要设计
1 简要设计及所涉及的知识
运⽤⼆维数组的加减和循环来设计游戏.通过下,xy的加减实现位置的移动;然后⽤⼀系列函数,实现各功能;
2 功能描述
(1) 难度选择: 1为困难,2为⼀般,3为简单,Enter开始游戏;
(2) 操作:按1235控制飞机左下右上移动,空格发射⼦弹,按8暂停,按0停⽌游戏并输出分数;;
(3) 游戏的测评⽅式为计分制,每击中⼀架敌机分数加1,⽆分数限制;
程序设计综合实践 飞机大战 实训报告
[在此处键入]
实训报告
飞机大战游戏设计与开发
专业名称:
班级:
学号:
信息科学与工程学院
二零一八年七月
目录
1. 概述 (3)
2. 相关技术 (3)
2.1 碰撞检测 (3)
2.2 COblist链表 (3)
2.3 双缓冲技术 (4)
2.4 背景滚动 (4)
2.5 爆炸动画的实现 (4)
2.6定时器的使用 (4)
3. 总体设计与详细设计 (4)
3.1 系统模块划分 (4)
3.2 主要功能模块 (5)
4. 编码实现 (7)
5. 实训中遇到的主要问题及解决方法 (42)
6. 实训体会 (43)
1. 概述
本次实训任务是以visual studio 2017为环境,利用MFC和C++编写一个飞机大战游戏。其实现的主要功能为:实现游戏对象的爆炸特效,界面背景切换,文字提示和血条显示功能,奖励机制(血包、护盾、僚机、武器升级),大招和无敌模式等。
通过方向键控制战机移动,空格键发射子弹,击毁敌机可以得分。游戏中可以按“X”开启或关闭无敌模式。按“P”可以暂停。游戏设有能量槽,能量不断积累,超过一半可以按“Z”键使用大招,大招为全屏攻击。玩家收到攻击血量减少,血量为0游戏结束,显示“Game Over”,可以按“R”复活,继续游戏。
游戏设有关卡机制,每关开始一段时间后出现boss。击败boss进入下一关。boss有三种,难度依次增加。第一种boss发射直线子弹,第二种boss发射散射子弹,第三种boss 两种子弹随机发射。前三关背景图和boss固定,之后背景图与boss随机生成。
游戏中随机出现四种道具:
血包:可以恢复一定的血量。
飞机大战程序设计报告
程序设计综合实践
实习报告
一、实习题目:飞机大战游戏
二、实习时间:2014.9.20-2014.9.30实习地点:J13-132、232
三、实习任务:通过项目实战,掌握C++面向对象编程的基础技术和Windows 应用程序的编程方法,能够运用MFC技术及其开发环境进行小项目的开发。
四、小组分工说明:
五、实习成绩
六、指导教师对实习的评语:
指导教师(签章):
年月日
飞机大战游戏
1.实习目的
1.1使学生全面了解软件项目实施的过程,理解软件企业对于程序员的基本
素质和技术能力要求。
1.2使学生掌握C++及Window程序设计的基本技术,能够运用MFC技术及其
开发环境进行小型项目的开发。
1.3重点培养学生的独立创新精神和查阅资料能力,提高其口头和书面的沟
通能力。
1.4使学生掌握快速学习新知识、新技术方法,培养良好的分析问题和解决
问题的能力
1.5重点提高学生的编程能力,使学生建立正确的编程理念,养成规范的编
程习惯。
2. 实习计划
1、9.20—9.21先建立CGameObject 类,利用继承机制,根据此类进行依次的派生。
2、9.22—9.25再建立派生类:Bomb,Ball,Enemy,MyPlane,Explosion等,
并实现各自功能。
3、9.26—9.29在xxView.cpp中的OnTimer中实现背景的设置,对敌机,
导弹,敌机子弹,爆炸效果的绘制,以及敌机子弹和战机,导弹和敌机的碰撞检验,并添加爆炸效果
4、9.29—9.30最后释放pDC以及定时器
3.实习过程
3.1 技术准备
透明贴图技术
绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。
飞机大战实训报告
目录
1. 概述................................ 错误!未定义书签。
2. 相关技术............................ 错误!未定义书签。
2.1碰撞检测 (2)
2.2 CObList链表 (2)
2.3 设置定时器 (2)
2.4 背景滚动技术 (2)
2.5 内存释放技术 (2)
3. 总体设计与详细设计 .................. 错误!未定义书签。
3.1 系统模块划分 .................... 错误!未定义书签。
3.2 主要功能模块 .................... 错误!未定义书签。
4. 编码实现 (6)
5. 实训中遇到的主要问题及解决方法 (49)
6. 实训体会 (50)
1. 概述
这次实训,目的以VS 为环境,利用MFC,使用C++语言编写一个简单的飞机大战游戏。
实现的主要功能:
1.有开始游戏界面,上下左右键控制飞机自由移动,空格键发射炮弹。
2.设有关卡,每打完一个boss就会过关,每过一关战机炮弹会升级,敌机随机发射
子弹数量增加。
3.战机起始十条命,可以通过过关和吃到道具增加血量。
4.战机子弹打中敌机,敌机就会爆炸,boss血量随关卡升高而增多,打败敌机或者
boss会有分数加成。
5.设有无敌模式和普通模式,无敌模式大招无限,生命无限,战机导弹直接升至最高
等级。
2. 相关技术
2.1碰撞检测
用CRect类的GetRect()函数可以获得当前对象的矩形区域,IntersectRect()并用此函数判断二者是否碰撞。
飞机大战实训报告
飞机大战实训报告
本次实训是关于“飞机大战”的项目,该项目主要实现了一个简
单的单机版飞机射击游戏。我在实训中学习了Unity游戏引擎的基础
知识和游戏开发的一些流程。
首先,我了解了Unity的基本操作,如场景编辑器、资源管理器
和游戏对象等。在这个游戏项目中,我创建了游戏场景、添加了游戏
对象,如飞机、子弹和敌人等。我还使用了Unity提供的一些组件,
比如射线检测和动画控制组件,来实现游戏的一些功能。
其次,我学习了游戏开发的一些基本流程,如游戏设计、关卡设
计和游戏逻辑实现等。在学习过程中,我也尝试了一些游戏设计的方法,例如玩家死亡后重新开始游戏、通过积分系统来提高玩家动力等。
最后,在实训的过程中,我掌握了项目开发的基本过程和流程,
如需求分析、系统设计、编码和测试等。我也意识到在项目开发中团
队协作的重要性和沟通能力的提升。
通过本次实训,我对游戏开发有了更深入的了解,也掌握了一些
基本的技能。我相信这将对我今后的职业发展有很大的帮助。
飞机大战项目实训报告
飞机大战项目实训报告
一、项目背景
随着计算机技术的不断发展和完善,游戏设计成为了计算机软件开发的重要组成部分之一。针对此,本实训项目选择了一款单机游戏——飞机大战。
二、项目概述
《飞机大战》是一款盛行于各大游戏平台的街机游戏,其玩法简单,操作容易上手,可单人、多人游戏。玩家通过控制战斗机的移动与攻击,击败敌机、坦克、大型BOSS等,累计积分并提高自己的得分记录。
三、项目分析
1.游戏玩法
(1) 游戏起始界面:菜单栏、游戏设置、游戏排名、游戏开始、游戏介绍等。
(2) 游戏主界面:飞机、子弹、敌机、敌机轨迹、背景、音效等。
(3) 游戏结束界面:游戏得分、游戏排名、重新开始、返回主界面等。
2.技术要点
图形处理、音频处理、基本算法、游戏逻辑、前端UI设计等。
四、开发流程
1.需求分析
首先要对游戏界面、游戏机制等进行详细的分析,梳理各个功能模块,并且根据分析结果来进行程序开发。
2.原型设计
设计游戏UI框架,并进行渲染效果分析。
3.编码实现
搭建游戏框架、实现游戏逻辑和算法,并对游戏进行调试。
4.测试调试
经过编码实现后,对游戏进行测试和调试,确保游戏实现效果良好。
5.发布上线
游戏开发完成后,进行打包、发布和上线操作。
五、技术要点
1.图像处理:
游戏中大量使用了图片素材进行操作,包括:飞机、子弹、敌机图片素材、背景图片处理等。
2.音频处理:
音频处理主要用于游戏过程中背景音乐、游戏音效等相关操作。
3.基本算法:
本游戏使用了几何线段相交法、多边形拐角点判断法等进行处理。
4.游戏逻辑:
游戏逻辑主要包括游戏场景构建、游戏胜负判定等操作。
中南大学电信-C语言飞机大战实验报告资料
}
//背景函数(用户操作函数)
void background()
{
printf("\n");
printf("\t\twelcome to plane world\n");
printf("\t\tw a s d is Direction key\n");
}
else break;
game_background();
nCount++;
Sleep(100);
}
printf("\n\n玩家死亡\n");
system("pause");
}
//隐藏Baidu Nhomakorabea标函数
void hide()
{
//不显示光标
CONSOLE_CURSOR_INFO cur_info={1,0};
#include<conio.h>
#include<windows.h>
#include<time.h>
#define g_back_x 20
#define g_back_y 20
Java算法实训(飞机大战)实验报告
淮阴工学院
实验报告2016 ------- 2017 学年第 1 学期学院计算机与软件工程学院
课程名称算法实训
班级达内1151
学号 1151331134
姓名陈龙
指导教师达内讲师
算法实训实验报告
一、实训目的及意义
进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java 开发的实战经验。学习java的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。通过实习,巩固大二所学专业的基本知识,提高分析、判断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
二、实训任务
实习期间,通过学习一个简单的Java程序——飞机大战,了解和掌握Java 编程的基础,如构造器、API接口等。最后可以独立完成一个小程序。
三、实习训语言Java的特点
1.Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,并提供了自动的废料收集,不必为内存管理而担忧。
2、Java语言是一个面向对象的
Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
mfc程序实验报告
mfc程序实验报告
篇一:MFC实验报告
实验日期:2013 年05 月18 日
一、实验目的
1、熟悉Visual C++的基本操作。
2、基本了解基于对话框的windows 应用程序的编写过程。
3、对于Windows Socket编程建立初步概念。
二、实验要求
1、应用Visual C++中MFC CSocket 类,实现网络数据传输。
2、仿照本实验步骤,制作实用的局域网一对一聊天程序。
三、实验原理
设置加入连接的数目,通过更改IP 地址和端口号,成为不同的客户端,与服务器端连接,实现用户间的聊天功能。
1.程序整体框架:主程序监听一端
口,等待客户接入;同时构造一个线程类,准备接管会话。当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。
2.客户端(Client)
客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个端口。
3.服务器端(Server)
服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
4.用户图形界面
用户图形界面方便程序与用户的交互,多个用户参加,完成会话功能,具
体的设计要方便用户的使用,直观清晰,简洁明了,友好美观。
四、实验内容
一个最简单的点对点聊天程序
飞机大战实验报告
飞机大战实验报告
专业:网络工程132班
学号:139074298
:仁强
计算机科学与技术学院二零一六年十二月
一、软件运行所需要的软硬件环境
本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。本机器的配置如下:
处理器:CORE i7
主频:1.2Hz以上
内存:4G以上
硬盘:HHD50G
编程语言:Java
开发环境:windows7
开发软件:Eclipse Mars
二、游戏流程
1.用户打开游戏,进入开始菜单。
2.用户点击开始游戏按钮,进入游戏界面;
3.用户通过触屏方式控制玩家飞机上下左右移动,躲避与子弹相撞;
4.游戏失败后,显示本次游戏得分,用的秒数和水平;
5.退出游戏
三、主要代码
1、准备代码设置窗口使用双缓冲使飞机不闪烁
Constant设置窗口大小
package .ahut.准备代码;
public class Constant {
public static final int GAME_WIDTH = 350;
public static final int GAME_HEIGHT = 600;
}
package .ahut.准备代码;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import .URL;
public class GameUtil {
private GameUtil () {}
public static Image getImage(String path) {
VC++电脑游戏飞机大战的开发与设计(含源文件)
毕业设计(论文)
题目:飞机大战游戏的设计与开发学院:计算机科学学院
摘要
飞机游戏是一款风靡全球的电视机游戏和掌上游戏机产品,曾几何时,它创造了一个无法企及的游戏巅峰,也曾影响了一代产业链。虽然它辉煌的业绩在历史的涡轮中渐渐远去,但这款游戏每每提及,总会令人爱不释手,魂牵梦绕。
这款游戏的名字叫做飞机大战,它是运行于Windows操作系统下的一款2D 游戏,以C/C++为开发语言,构建于Microsoft Foundation Class Library(MFC)框架体系中,其中调用了部分的Win32API函数接口,在Visual Studio2010环境下开发的一款多媒体游戏。
随着硬件性能的不断提高,游戏的日益普及,使开发者不再需要过多的关注不同的硬件设备。本论文着眼于双缓冲绘图的运用,开发出仅用于理论研究的二维平面射击类游戏。
本文首先分析了电脑游戏的发展历史,然后分析了制作游戏的基本流程和游戏本身所要包含的几种元素以及游戏应具备的游戏层次。根据2D游戏的特点和游戏的角色,以及给用户呈现的游戏界面的特效,对2D图形技术,Windows 图形界面编程技术GDI,DirectDraw的显卡接口和DirectSound声卡接口以及MVC 设计模式下的MFC框架等技术进行了比较仔细的研究。通过自定义一个游戏类CGame,封装了游戏元素的基本属性和行为,这样便于在用到游戏的行为操作是,只要轻松的产生CGame对象便可直接调用其方法,也有利于升级为双人游戏,乃至网络版时,只需要在该类中添加相应的行为便可。当我们向用户呈现游戏运行的界面时,通过Timer时钟控件,映射到相应的处理函数,使得游戏界面大约每2秒钟刷新一下界面,这样才能让一张位图背景图片具有动态效果。当使用DirectSound声卡接口时,我方和敌方相互射击所发出的声音,都是在时钟映射函数调用时处理的。
MFC实验报告
VC++
实
验
报
告
姓名:
学号:
学院:
专业:
指导老师:
2012年6 月1日
计算机与信息技术学院综合性、设计性实验报告专业:计算机科学与技术年级/班级:网络工程 2011-2012
学年第二学期
课程名称VC++程序设计实验指导教师本组成员
学号姓名
实验地点计算机机房实验时间5月8日上午8:00-11:30 5月15日上午8:00-11:30 5月22日上午8:00-11:30
项目名称MFC基本应用程序的建立实验类型综合性
(一)实验目的:
1. 理解windows编程的特点
2. 了解MFC应用程序的消息映射、数据映射、运行时类型检查和诊断信息转化机制。
3. 掌握用APPWizard(exe)创建SDI,MDI以及基于对话框的应用程序的方法
4. 了解SDI、MDI在编程、功能等方面的异同。
5. 掌握使用项目工作区窗口的CLASS VIEW页面为一个类添加成员的方法。
6. 掌握用CLASS WIZARD映射消息的方法。
(二)实验仪器或设备:
操作系统:Windows XP SP3
处理器:Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz 2.50GHz
内存:8.00GB(7.85GB可用)
显卡:ATI HD6770 1G GDDR5独立显卡
硬盘:500G
VC ++6.0环境
(三)总体设计(设计方案、设计流程及原理等)
设计思想:启动Visual C++6.0;调入并运行Ex_HelloMFC.cpp;创建一个单文档应用程序Ex_MySDI;用ClassWizard映射消息;创建一个多文档应用程序Ex_MyMDI;向类添加成员函数和成员变量,设置断点并控制程序运行。
Java算法实训(飞机大战)实验报告
淮阴工学院
实验报告2016 ------- 2017 学年第 1 学期学院计算机与软件工程学院
课程名称算法实训
班级达内1151
学号 1151331134
姓名陈龙
指导教师达内讲师
算法实训实验报告
一、实训目的及意义
进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java 开发的实战经验。学习java的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。通过实习,巩固大二所学专业的基本知识,提高分析、判断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
二、实训任务
实习期间,通过学习一个简单的Java程序——飞机大战,了解和掌握Java 编程的基础,如构造器、API接口等。最后可以独立完成一个小程序。
三、实习训语言Java的特点
1.Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,并提供了自动的废料收集,不必为内存管理而担忧。
2、Java语言是一个面向对象的
Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
飞机大战游戏的设计与开发毕业论文
飞机⼤战游戏的设计与开发毕业论⽂飞机⼤战游戏的设计与开发毕业论
⽂
⽬录
第1章绪论 (1)
1.1 系统研究的背景及意义 (1)
1.2 国内外的发展现状 (1)
1.4 本⽂的组织结构 (2)
1.5 本章⼩结 (2)
第2章游戏的相关知识和系统开发平台的阐述 (3)
2.1游戏基本流程概述 (3)
2.2游戏系统元素阐述 (4)
2.3开发环境和相关技术的概述 (5)
2.3.1 开发环境 (5)
2.3.2 相关技术 (5)
2.4本章⼩结 (10)
第3章游戏分析 (11)
3.1 ⽤户功能需求分析 (11)
3.2 系统性能要求 (12)
3.3可⾏性分析 (12)
3.4本章⼩结 (13)
第4章游戏设计 (14)
4.1游戏整体设计 (14)
4.1.1 整体结构 (14)
4.1.2 游戏对战规则 (14)
4.2游戏界⾯设计 (15)
4.2.1游戏起始界⾯设计 (15)
4.2.2游戏运⾏界⾯设计 (17)
4.2.3游戏结束界⾯设计 (17)
4.3游戏功能设计 (18)
4.3.1双缓冲绘图 (19)
4.3.2功能实现 (19)
4.4本章⼩结 (26)
第5章系统测试 (27)
5.1软件测试基础理论 (27)
5.1.1 软件测试定义 (27)
5.1.2 软件测试基本概念 (27)
5.2软件测试⽬的 (27)
5.3软件测试⽅法分类 (28)
5.3.1 静态测试与动态测试 (28)
5.3.2 ⿊盒⽩盒与⽩盒测试 (28)
5.3.3 单元测试、集成测试、系统测试、验证测试和确认测试 (29)
5.4论坛测试 (29)
5.4.1 测试⽤例设计要求 (29)
飞机大战实训报告总结java -回复
飞机大战实训报告总结java -回复
Java实训报告总结:飞机大战实训
一、引言
飞机大战是一款经典的游戏,其核心玩法是玩家操控飞机进行战斗,消灭敌机并击败关卡Boss。为了学习和掌握Java编程语言的基本语法和面向对象编程的思想,我们进行了飞机大战实训项目。本文将对该实训项目进行总结和归纳,详细介绍实训的过程和各个模块的设计与实现。
二、项目概述
1. 项目背景
飞机大战实训项目是为了让我们学习和运用Java编程语言的基础知识和面向对象的思想,掌握基本的游戏开发技能。
2. 项目目标
通过实践,达到以下目标:
(1) 熟悉Java编程语言的基本语法和面向对象编程的思想;
(2) 掌握游戏开发的基本流程和常用技术;
(3) 实践团队协作与沟通能力;
(4) 提升问题解决能力和编程实际操作能力。
三、项目实施
1. 分析与设计
项目开始前,我们小组成员进行了对游戏需求的分析与设计。首先,明确了游戏的基本功能模块和玩法规则。然后,我们绘制了UML类图,定义了所需要的各个类及其之间的关系。这一步骤对于后续的开发工作具有重要的指导意义。
2. 编码实现
根据分析与设计的结果,我们开始进行编码实现。首先,我们搭建了项目的基础框架,包括游戏窗口和图像资源的加载。然后,我们根据UML类图中的定义,依次实现了飞机、子弹、敌机、Boss等各个类及其相关的功能方法。编码过程中,我们注意代码的规范性和可读性,并进行了适当的功能封装和模块化设计。
3. 调试与测试
在编码完成后,我们进行了代码的调试与测试。首先,我们保证游戏的基本功能能够正常运行,包括飞机的移动、子弹的发射和敌机的生成等。然后,我们对各个功能模块和类进行了逐一测试,修复了发现的问题和bug。最后,我们对游戏进行了全面性能测试,确保游戏在各种情况下都能够稳定运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实训报告
飞机大战游戏设计与开发
目录
1. 概述 (4)
2. 相关技术 (4)
2.1 透明贴图技术 (4)
2.2 CObList链表 (4)
2.3获取矩形区域函数 (4)
2.4弹出对话框函数 (5)
2.5字体的个性化输出函数 (5)
2.6设置定时器 (5)
2.7双缓冲技术 (5)
2.8 内存释放技术 (6)
2.9对话框中添加动态按钮 (6)
2.10检测方向键按下 (6)
3. 需求分析(用结构化方法或面向对象方法给出系统的主要需求模型) (6)
3.1功能需求分析 (6)
3.2 数据需求分析 (7)
3.3 行为需求分析 (7)
3.4 其他需求 (8)
4. 总体设计与详细设计 (8)
4.1 系统模块划分 (9)
4.2 主要功能模块 (10)
4.3 扩展功能设计思路 (10)
5. 编码实现 (11)
5.1游戏初始创建 (11)
5.2定时器 (11)
5.3背景及游戏开始、结束界面绘制函数 (11)
5.4键盘控制函数 (12)
5.5游戏对象进行碰撞测试和碰撞销毁 (13)
5.6创建动态按钮(开始游戏、游戏规则) (13)
5.6重新开始游戏代码 (14)
5.7设置游戏难度代码 (14)
5.8游戏结束时释放资源函数 (15)
5.9调整对话框大小函数 (15)
5.10开始界面背景绘制函数 (15)
5.11选择下一关卡以及选择完成后的执行代码 (16)
6.测试情况说明。 (17)
6.1主要模块测试情况(白盒) (17)
6.11各游戏对象碰撞检测爆炸模块测试 (17)
6.12战机导弹的方向速度模块测试 (17)
6.13文字显示,游戏结束和关卡进入模块测试 (18)
6.14设置游戏难度和重新开始模块测试 (18)
6.2 主要功能测试情况(黑盒) (18)
6.21各游戏对象碰撞检测爆炸模块测试 (18)
6.22敌机子弹导弹的方向速度模块测试 (19)
6.23文字显示,游戏结束和关卡进入模块测试 (19)
6.24设置游戏难度和重新开始模块测试 (19)
7. 实训中遇到的主要问题及解决方法 (19)
8. 实训收获与体会 (20)
1. 概述
本次实训主要是做一个基于windows的飞机大战单机版游戏,其实现的主要功能为:控制战机对象的移动,敌机对象的随机出现和发射子弹,实现游戏对象的爆炸特效,文字提示功能和界面背景切换特效,其主要是遵循开发者规定的游戏规则进行游戏闯关。
游戏主要角色:战机、敌机、战机导弹、敌机子弹、客机、导弹架、生命包,其中战机分为四种:普通战机,一级战机,二级战机。其主要遵循的游戏规格如下:战机数量为1;由玩家通过键盘控制(方向键控制位置、‘Z’键发射导弹)战机,战机有一定的运行速度;导弹释放存在间隔,有一定的运行速度;导弹遇到敌机发生爆炸,敌机被炸毁,导弹消失,玩家得分;由计算机控制敌机自动向战机发动攻击;敌机数量随机,计算机生成敌机时随机选择类别;普通敌机从游戏区域的上下两端进入位置随机;敌机行驶期间,不左右移动,不反向移动;运行线路为直线,方向为从下至上,或从下至上,不可左右移动;战机导弹击毁敌机后有一定几率掉落导弹架和生命包,导弹架可以增加战机导弹数量,生命包可以增加战机生命。每关有boss从游戏区域的左上角端进入,左右位置随机;敌机行驶期间,可左右移动,可反向移动;当敌机到达战机下方时发射炸弹对战机进行攻击。炸弹纵向由发射位置起至游戏区域结束;炸弹遇到战机时发生爆炸,战机减生命值,炸弹消失;战机与boss碰撞,战机被毁,游戏结束;炸弹运行时有速度限制;客机在游戏界面左上角出现,又左向右运动,客机上有油箱,导弹击中客机油箱客机爆炸并消失,玩家减分。当玩家战机生命值为0时,游戏结束,并显示玩家得分。
2. 相关技术
此次实训的飞机大战游戏其中的技术主要就是一些API函数、内存释放和双缓冲技术。
2.1 透明贴图技术
此次实训中用于贴图的函数:
LoadImage(CImageList& imageList,UINT bmpID,COLORREF crMask,int cx,int cy,int nInitial) //此函数主要用于将图片放入图像链表imageList中。
img_Bomb1.Draw(pDC,0,G_pos,ILD_TRANSPARENT) //此函数主要是讲img_Bomb1链表中的图像显示在pDC这个句柄中。ILD_TRANSPARENT表示是透明贴图。
其中主要就是CImageList图像列表。它是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。
2.2 CObList链表
CObList bomblist; //主要是定义一个CObList类的一个链表对象用于存储所有的此种相关的对象,易于后续的添加删除和提取数据。
POSITION posball=NULL,posball_t=NULL; //定义指针
CBomb *temp = new CBomb();
temp=pDoc->bomblist.GetHeadPosition();//指针读取头结点
temp= (CBomb *)pDoc->bomblist.GetNext(posball); //指针读取下一个结点
2.3获取矩形区域函数
CRect rc; //定义
GetClientRect(&rc); //获取其矩形区域获取结果课为:rc.Width() //矩形区域的宽度rc.Height() //矩形区域的高度