飞机大战实验报告

上传人:壹****1 文档编号:494838764 上传时间:2022-10-03 格式:DOCX 页数:15 大小:21.69KB
返回 下载 相关 举报
飞机大战实验报告_第1页
第1页 / 共15页
飞机大战实验报告_第2页
第2页 / 共15页
飞机大战实验报告_第3页
第3页 / 共15页
飞机大战实验报告_第4页
第4页 / 共15页
飞机大战实验报告_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《飞机大战实验报告》由会员分享,可在线阅读,更多相关《飞机大战实验报告(15页珍藏版)》请在金锄头文库上搜索。

1、实训报告飞机大战游戏设计与开发专业名称:班 级:学 号:信息科学与工程学院二零一二年十二月1. 概述32. 相关技术32.1指针的应用32.2动态链表的调用33. 总体设计与详细设计33.1系统模块划分33.2主要功能模块34. 编码实现45. 实训中遇到的主要问题及解决方法156. 实训体会151. 概述本项目是通过vb基于C+实现的战斗机通过导弹炸毁敌机以及躲避敌机导弹的一款游 戏,游戏里包括躲避敌机轰炸,轰炸敌机,以及打boss,以及通过shift键实现对背后敌机的轰炸。2. 相关技术所用的关键技术void Ctest2View:OnTimer(UINT_PTR nIDEvent)在此函

2、数里实现对图 像里所出现的一切事物的绘制,在ontimer里主要用到的一个是碰撞即判断两个碰撞物体的 矩形区域是否有交集。2.1指针的应用指针类型 pBomb-Draw(); pBoss-GetRect(); pBoss-GetPoint();指针易于获得某个类 的所在的位置,所在的区域、坐标以及图像的绘制2.2动态链表的应用链表类型:例:定义一个链表CObList listBoss;listExplosion.AddTail(newCExplosion(plane.GetRect().left,plane.GetRect().top);plane. GetRect()通过链表来求出某个类的矩

3、形区域、坐标、以及图形的绘制。3. 总体设计与详细设计3.1系统模块划分1、void Ctest2View:OnDraw(CDC* pDC)2、void Ctest2View:OnTimer(UINT_PTR nIDEvent)3、void Ctest2View:OnInitialUpdate()4、void Ctest2View:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)5、void Ctest2View:OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)3.2主要功能模块功能模块分为敌机绘制导弹

4、绘制战机绘制炸弹绘制boss、boss1绘制、爆炸绘制、插 入图片、插入声效以及每关boss的筛选。主要类图:BALL (炸弹)类 BOSS1类BOSS类Enemy (敌机)类Myplane类Explosion 类 BOMB 类在ontimer里实现对所弹出的icon里所有图像的输出,主要划分为1、敌机、战机、导弹、boss、背景图片、gameover图片的绘制,以 及爆炸声效,结束声效的实现。2、实现方向键对飞机的控制,实现space以及shift键对导弹发射的 控制4.编码实现/ test2View.cpp : Ctest2View 类的实现#include stdafx.h”#inclu

5、de test2.h”#include test2Doc.h”#include test2View.h”#pragma comment(lib, winmm.lib)#include mmsystem.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ Ctest2ViewIMPLEMENT_DYNCREATE(Ctest2View, CView)BEGIN_MESSAGE_MAP(Ctest2View, CView)/标准打印命令ON_COMMAND(ID_FILE_PRINT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_P

6、RINT_DIRECT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView:OnFilePrintPreview)ON_WM_TIMER()/ ON_WM_CREATE()ON_WM_KEYDOWN()ON_WM_KEYUP()END_MESSAGE_MAP()/ Ctest2View 构造/析构Ctest2View:Ctest2View()/ TODO:在此处添加构造代码Ctest2View:Ctest2View()BOOL Ctest2View:PreCreateWindow(CREATESTRUCT& cs)/ TOD

7、O:在此处通过修改/ CREATESTRUCT cs来修改窗口类或样式return CView:PreCreateWindow(cs);/ Ctest2View 绘制void Ctest2View:OnDraw(CDC* pDC)Ctest2Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;/ TODO:在此处为本机数据添加绘制代码CRect rect;GetClientRect(&rect);pDC-Rectangle(rect);/画边框CBrush brush;brush.CreateSolidBrush(RGB(

8、0,150,255);/设置背景颜色CBrush *oldbrush=pDC-SelectObject(&brush);pDC-Rectangle(rect);pDC-SelectObject(oldbrush);/ Ctest2View 打印BOOL Ctest2View:OnPreparePrinting(CPrintInfo* pInfo)/默认准备return DoPreparePrinting(pInfo);void Ctest2View:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO:添加额外的打印前进行的初始化

9、过程void Ctest2View:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO:添加打印后进行的清理过程/ Ctest2View 诊断#ifdef _DEBUGvoid Ctest2View:AssertValid() constCView:AssertValid();void Ctest2View:Dump(CDumpContext& dc) constCView:Dump(dc);Ctest2Doc* Ctest2View:GetDocument() const / 非调试版本是内联的ASSERT(m_pDocument

10、-IsKindOf(RUNTIME_CLASS(Ctest2Doc);return (Ctest2Doc*)m_pDocument;#endif /_DEBUG/ Ctest2View消息处理程序void Ctest2View:OnTimer(UINT_PTR nIDEvent)/ TODO:在此添加消息处理程序代码和/或调用默认值CDC *pDC=GetDC();CDC MemDC;/ 显示生命值和得分static int Num_grade=0;static int Num_life=1000000;static int m=1;CClientDC dc(this);CString gra

11、de;CString life;CString t;CString haha;CString lihai;消除重叠CRect rect;GetClientRect(&rect);CBrush brush;CBitmap bmp;if(Num_life=0) PlaySound(TEXT (xiaoxin.wav),NULL,SND_FILENAME|SND_ASYNC);CBrush m_gameover2;CBitmap bmp1;bmp1.LoadBitmap(IDB_gameover2); /加载位图m_gameover2.CreatePatternBrush(&bmp1);/创建位图画

12、刷pDC-FillRect(rect,&m_gameover2); /用背景画刷填充区域 KillTimer(1);elseCBrush m_beijing;bmp.LoadBitmap(IDB_beijing); /加载位图m_beijing.CreatePatternBrush(&bmp);/创建位图画刷pDC-FillRect(rect,&m_beijing); /用背景画刷填充区域pDC-SetBkMode(TRANSPARENT);pDC-SetTextColor(RGB(255,240,240);/更改字体颜色t.Format(L”第1 关”,m);pDC-TextOutW(10,

13、45,t);grade.Format(L”得分:%d,Num_grade);pDC-TextOutW(10,30,grade);life.Format(L”生命值:%d,Num_life);pDC-TextOutW(10,15,life);/敌机绘制及战机与敌机碰撞if (listEnemy.GetCount()GetRect(),plane.GetRect()判断敌机和战机区域是否有交集pEnemy-Draw(pDC, TRUE);int n=rand()%40;if (n=1)listBall.AddTail(newCBall(pEnemy-GetPoint().x+12,pEnemy-G

14、etPoint().y+25,pEnemy-GetMotion();elselistExplosion.AddTail(new CExplosion(plane.GetRect().left,plane.GetRect().top);PlaySound(TEXT (explosion.wav),NULL,SND_FILENAME|SND_ASYNC);listEnemy.RemoveAt(oldpos);/消除敌机Num_grade+=10;if (Num_grade%1000=0)m+=1;lihai.Format(L”厉害,恭喜过关);pDC-TextOutW(500,50,lihai);Num_life-=1;delete pEnem

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号