MFC_陨石撞飞机实验报告

合集下载

飞机大战MFC实验报告

飞机大战MFC实验报告

实训报告飞机大战游戏设计与开发目录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的飞机大战单机版游戏,其实现的主要功能为:控制战机对象的移动,敌机对象的随机出现和发射子弹,实现游戏对象的爆炸特效,文字提示功能和界面背景切换特效,其主要是遵循开发者规定的游戏规则进行游戏闯关。

陨石飞机

陨石飞机

平面游戏一陨石撞飞机一、目标与要求设计一个陨石撞飞机的平面游戏:陨石不断地向下落,飞机通过上下左右键移动以躲避陨石。

如图所示。

二、工具/准备工作在开始实验前,应回顾或复习的相关内容。

需要一台主算机,其中安装有Visual C++ 6.0集成开发环境软件。

三、分析知识点:Visual C++6.0中位图操作,Cbitmap类的应用,键盘响应(消息WM_KEYDOWN)处理函数,定时器。

四、步骤1.在VC++中新建一个工程文件,命名为plane,下一步选择单文档结构,其余采用默认选项,建立一个单文档工程文件。

添加新的Resource。

如下图所示。

在Insert Resource对话框中选择Bitmap选项,单击New按钮,如图所示。

该位图的ID 默认为IDB_BITMAP1。

2.在ResourceView选项卡中双击IDB_BITMAP1I选项,打开位图编辑器,设计飞机图像,如下图所示。

3.同样地可设计3个陨石图像,如下图所示。

4.在类CplaneView的声明中增加如下的数据成员:class CPlaneView : public CView{protected: // create from serialization onlyCPlaneView();DECLARE_DYNCREA TE(CPlaneView)// Attributespublic:CPlaneDoc* GetDocument();CBitmap m_plane; // 飞机CBitmap m_stone1, m_stone2, m_stone3; // 陨石int planex, planey; // 飞机坐标int stone1x, stone1y; // 陨石1坐标int stone2x, stone2y; // 陨石2坐标int stone3x, stone3y; // 陨石3坐标// Operationspublic:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CPlaneView)public:virtual void OnDraw(CDC* pDC); // overridden to draw this view virtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);//}}AFX_VIRTUAL// Implementationpublic:virtual ~CPlaneView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:// Generated message map functionsprotected://{{AFX_MSG(CPlaneView)afx_msg int OnCreate(LPCREA TESTRUCT lpCreateStruct);afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);//}}AFX_MSGDECLARE_MESSAGE_MAP()private:void DrawBitmap(CDC *pDC, CBitmap &oBitmap, int oldx, int oldy, int newx, int newy);};5.在CplaneView类的构造函数CPlaneView()与OnDraw(CDC* pDC)各成员函数中分别添加下列语句(自行添加的语句),其他的函数保持不变。

撞机事件分析报告

撞机事件分析报告

撞机事件分析报告概述撞机事件是指飞机在空中、地面或其他建筑物上发生撞击的事故。

这种事故通常会导致严重的伤亡和财产损失。

撞机事件的发生原因多种多样,包括飞行员错误、机械故障、恶劣天气等因素。

本报告旨在对撞机事件进行综合分析,以便更好地理解这类事故的原因和影响。

数据统计与分析根据从各国飞行安全管理机构以及国际航空运输协会收集的数据统计,撞机事故在全球范围内时有发生。

2019年全球范围内共发生撞机事件190起,其中造成了2759人死亡。

这些数据表明撞机事故对人员安全和财产造成了重大损失。

撞机事件的常见原因撞机事件的发生往往有多个因素的共同作用。

以下是一些常见的撞机事件原因:1.飞行员错误:飞行员的失误是导致撞机事件最常见的原因之一。

包括飞行员疲劳、飞行员健康状况不佳、飞行员注意力不集中等问题。

2.飞机机械故障:飞机机械故障也会导致撞机事件。

例如,引擎故障、电子系统故障等会影响飞行安全的因素。

3.恶劣天气:恶劣的天气条件对飞行安全有着重要影响。

强风、大雨、低云等气象条件会限制飞行员的视野和操作能力,增加了撞机风险。

4.空管错误:空中交通管制系统的错误也可能导致撞机事件的发生。

例如,航线规划错误、飞机间距控制不当等。

5.机场设施问题:机场的设施问题也可能成为撞机事件的一个因素。

例如,导航设施故障、跑道维护不当等。

撞机事件的影响撞机事件对个人、社会和经济都会造成严重的影响。

1.人员伤亡:撞机事件通常会导致大量人员伤亡。

这不仅对伤者和他们的家人造成了巨大的痛苦,也给医疗机构和救援队伍增加了巨大的负担。

2.经济损失:撞机事件对相关行业和企业造成了严重的经济损失。

航空公司因此遭受重大的财务损失,机场和旅游业也受到了冲击。

3.影响信心:撞机事件可能使公众对航空安全产生质疑,削弱乘客的信心。

这可能导致航空公司的业务受到影响,乘客选择其他交通工具。

预防措施为了减少撞机事件的发生,各国飞行安全管理机构和航空公司可以采取以下预防措施:1.飞行员培训:加强飞行员的培训和考核,提高他们的技术水平和意识。

陨石下落实验自我反思报告

陨石下落实验自我反思报告

陨石下落实验自我反思报告
尊敬的老师:
我最近进行了一次关于陨石下落的实验,在此向您提交我的实验报告和自我反思。

实验概述:
我使用了一个小型的充氮气球 (直径为 50 厘米,高为 70 厘米),将陨石 (重约 500 克) 从二楼投掷到气球中,然后观察陨石在
气球中的下落情况。

我使用了一台摄像机来记录陨石的下落过程。

实验结果:
在实验中,陨石在进入气球后迅速膨胀,并在气球中上下波动。

最终,陨石在气球中稳定下来,并保持了一段时间。

在这段时间里,陨石不断地发出微弱的爆炸声,并在气球中留下了一些痕迹。

实验反思:
通过这次实验,我认识到陨石下落的过程非常复杂,需要考虑多种因素,如陨石的大小、密度、形状、重量、空气阻力等。

在本次实验中,我虽然使用了充氮气球来减少陨石与空气的接触,但仍然无法完全避免陨石与气球的接触,这可能会影响陨石的下落情况。

我还发现,陨石在气球中的下落情况与在地面上的下落情况不同。

在气球中,陨石受到的空气阻力和浮力较大,这可能会影响陨石的速度和轨迹。

因此,在进行陨石下落的实验时,需要考虑这些因素。

结论:
通过这次实验,我了解了陨石下落的复杂性,并认识到了实验需
要考虑的因素。

我将进一步研究陨石下落的规律,并尝试通过实验来验证和证明某些理论。

MFC_陨石撞飞机实验报告

MFC_陨石撞飞机实验报告

专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分一、题目陨石撞飞机综合性实验二、中文摘要用MFC设计一个陨石撞飞机的平面游戏:陨石不断地向下落,飞机通过上下左右键移动以躲避陨石。

当陨石碰撞了飞机时,显示提示对话框,及飞机爆炸图像。

确定后在碰撞位置重新开始游戏。

三次碰撞后显示提示对话框,游戏结束。

三、关键词MFC、Bitmap、timer、键盘响应(WM_KEYDOWN)四、前言此程序大多代码出自参考资料,一小部分代码为搜索资料并加工完成,其功能尚有不完善之处。

五、软件开发过程(一)、新建MFC APPWizard[exe]单文档工程文件在Visual C++中新建一个工程,命名为Plane。

工程类型为:MFC AppWizard[exe]。

在MFC AppWizard-Step1对话框中设置应用程序的类型,建立一个单文档工程文件,得到一个应用程序框架文件。

(二)、添加资源:、飞机位图、陨石位图、爆炸位图。

专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分在[插入]-[资源…]选择Bitmap选项,单击[新建]即可。

绘出一个飞机,ID 为(IDB_BITMAP1)、五个陨石(IDB_BITMAP2~IDB_BITMAP6)和一个炸弹位图(IDB_BITMAP7),如下图。

飞机位图陨石位图爆炸位图(三)、在planeView.h头文件中声明所需变量和函数CBitmap m_plane; //声明一个CBitmap类型的飞机变量m_planeint mx,my;//表示飞机坐标CBitmap m_bump; //爆炸位图变量int mpx,mpy;//表示爆炸位图的坐标int t; //爆炸次数//声明陨石位图的成员变量为CBitmap类型的变量CBitmap m_stone1,m_stone2,m_stone3,m_stone4,m_stone5;//声明陨石的坐标变量为int类型:int nstone1x,nstone1y;专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分int nstone2x,nstone2y;int nstone3x,nstone3y;int nstone4x,nstone4y;int nstone5x,nstone5y;再声明函数成员void CPlanView::DrawPlane(CDC *pDC);//飞机位图函数void CPlanView::Drawbump(CDC *pDC); //爆炸位图函数// 声明绘制陨石的函数原型:void DrawStone1(CDC *pDC);void DrawStone2(CDC *pDC);void DrawStone3(CDC *pDC);void DrawStone4(CDC *pDC);void DrawStone5(CDC *pDC);以上成员(数据成员、成员函数)均为public属性(四)在planview.cpp文件中添加函数1)、修改构造函数mx=100; my=100; t=0; //赋初值m_plane.LoadBitmap(IDB_BITMAP1); //飞机位图调用专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分m_bomb.LoadBitmap(IDB_BITMAP7); //爆炸位图调用//添加陨石初始化操作代码,随机产生nstone1x=rand()%500; // 陨石1 x方向随机数0~499 nstone1y=10;m_stone1.LoadBitmap(IDB_BITMAP2);nstone2x=rand()%500; // 陨石2 x方向随机数0~499 nstone2y=10;m_stone2.LoadBitmap(IDB_BITMAP3);nstone3x=rand()%500; // 陨石3 x方向随机数0~499 nstone3y=10;m_stone3.LoadBitmap(IDB_BITMAP4);nstone4x=rand()%500; // 陨石4 x方向随机数0~499 nstone4y=10;m_stone4.LoadBitmap(IDB_BITMAP5);nstone5x=rand()%500; // 陨石5 x方向随机数0~499 nstone5y=10;m_stone5.LoadBitmap(IDB_BITMAP6);专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分2)、修改ondraw()函数添加DrawPlane(pDC); //调用绘制飞机函数3)、添加DrawPlane()和Drawbump()函数void CPlaneView::DrawPlane(CDC *pDC){CDC MemDC;MemDC.CreateCompatibleDC(pDC);BITMAP bm;m_plane.GetObject(sizeof(BITMAP),&bm);CBitmap MemBitmap;MemBitmap.CreateCompatibleBitmap(pDC,bm.bmWidth,bm.bmHeight);CBitmap *pOldBitmap;pOldBitmap=(CBitmap*)MemDC.SelectObject(&MemBitmap);MemDC.SelectObject(&m_plane);专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分pDC->BitBlt(mx,my,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);MemDC.SelectObject(pOldBitmap);}Drawbump()函数如上类似。

陨石撞飞机游戏实验步骤

陨石撞飞机游戏实验步骤

5 在视图中显示飞机和位图
这涉及到视图窗口的绘制,要在 CPlaneView::OnDraw()函数中绘制。 //打开这个函数,在其中添加代码: CDC MEmDC; MEmDC.CreateCompatibleDC (pDC);
CDC MEmDC; //CDC类定义的是设备上下文对象的类, 处理与 窗口客户区对应的显示上下文的成员。通过 CDC对象的成员函数进行所有的绘图。 //MEmDC 必须为局部变量 MEmDC.CreateCompatibleDC (pDC); //产生与pDC指定设备兼容的设备上下文内存, 设备上下文内存包含显示表面的信息,它用于 在向实际的兼容设备表面发送图象之前在内存 中作好准备。
10 游戏功能扩展
(1)增加游戏难度 (2)统计游戏得分 (3)添加背景图片 (4)使图片透明
case VK_LEFT: if(m_RectPlane.left >area.left) m_RectPlane+=CSize(-10,0); break; case VK_RIGHT: if(m_RectPlane.right <area.right) m_RectPlane+=CSize(10,0); break; } InvalidateRect(m_RectPlane); CView::OnKeyDown(nChar, nRepCnt, nFlags); } 写完上面的代码,飞机就可以移动了。
//判断是否移出界外 if(m_RectStone[0].top>area.bottom) { srand((unsigned) time(NULL)); m_RectStone[0].left=0+rand()%(50+1); srand((unsigned) time(NULL)); m_RectStone[0].top=0+rand()%(100+1); m_RectStone[0]=CRect(m_RectStone[0].left,m_RectStone[0].top,m_Re ctStone[0].left+m_StoneW[0],m_RectStone[0].top+m_StoneH[0]); } }

c飞机大战实训报告附带码

c飞机大战实训报告附带码

目录1. 概述 (3)1.1 实训项目简介 (3)1.2 实训功能说明 (3)1.2.1 基本功能 (3)1.2.2 附加功能 (3)2. 相关技术 (4)2.1 Windows定时器技术 (4)2.2 透明贴图实现技术 (4)2.3 CObList链表 (5)2.4获取矩形区域 (6)2.5使用AfxMessageBox显示游戏过程中的提示信息 (7)2.6内存释放 (7)2.7 CImageList处理爆炸效果 (7)2.8对话框的应用 (8)3. 总体设计与详细设计 (8)3.1 系统模块划分 (8)3.2 主要功能模块 (9)3.2.1 系统对象类图 (9)3.2.2 系统主程序活动图 (10)3.2.3 系统部分流程图 (11)4. 编码实现 (13)4.1 绘制游戏背景位图程序 (13)4.2 飞机大战游戏对象的绘制程序 (14)4.3 飞机大战游戏对象战机位置的动态控制 (18)4.4 飞机大战游戏对象之间的碰撞实现 (21)4.5 游戏界面输出当前信息 (22)5. 项目程序测试 (24)5.1战机移动及子弹发射模块测试 (24)5.2 敌机及炸弹模块测试 (20)5.3 爆炸模块测试 (20)6. 实训中遇到的主要问题及解决方法 (25)7. 实训体会 (25)1. 概述1.1 实训项目简介本次实训项目是做一个飞机大战的游戏,应用MFC编程,完成一个界面简洁流畅、游戏方式简单,玩起来易于上手的桌面游戏。

该飞机大战项目运用的主要技术即是MFC编程中的一些函数、链表思想以及贴图技术。

1.2 实训功能说明1.2.1 基本功能(1)设置一个战机具有一定的速度,通过键盘,方向键可控制战机的位置,空格键发射子弹。

(2)界面中敌机出现的位置,以及敌机炸弹的发射均为随机的,敌机与敌机炸弹均具有一定的速度,且随着关卡难度的增大,数量和速度均增加。

(3)对于随机产生的敌机和敌机炸弹,若超过矩形区域,则释放该对象。

陨石撞击模拟实验记录数据

陨石撞击模拟实验记录数据

陨石撞击模拟实验记录数据实验名称:陨石撞击实验实验目的:研究陨石撞击对地壳变形的影响实验设备:冲击投射器、钢球、靶板、高速相机、位移传感器、压力传感器实验流程:1.设置冲击投射器,将钢球固定在冲击投射器上。

2.将靶板放置在冲击投射器下方,调整靶板高度以使其与钢球的轨迹重合。

3.调整冲击投射器的出射速度和角度,进行一次完整的实验。

4.使用高速相机记录撞击过程的图像。

5.使用位移传感器测量靶板的位移。

6.使用压力传感器测量撞击过程中的压力变化。

实验记录:实验编号:001冲击投射器出射速度:100m/s冲击投射器出射角度:45°钢球直径:10 cm靶板材料:岩石靶板厚度:20 cm实验结果:1. 高速相机记录的图像显示,钢球在撞击过程中形成了一个明显的碰撞坑。

碰撞坑的直径约为20 cm,深度约为10 cm。

2. 位移传感器测量到靶板在撞击过程中的最大位移为5 cm。

3.压力传感器测量到撞击过程中的最大压力为500MPa。

实验分析:根据实验结果可以看出,陨石的撞击对地壳会造成明显的变形。

在撞击过程中,钢球形成了一个碰撞坑,这表明地壳在撞击力下发生了塑性变形。

靶板的位移和撞击过程中的压力变化进一步证实了这一点。

结论:从实验结果可以得出结论,陨石撞击地球会对地壳造成明显的变形。

这种变形可能导致地壳断裂、火山喷发、地震等地质灾害的发生。

这些灾害可能对生物和环境产生重大影响,甚至导致生物的灭绝。

实验改进:在以后的实验中,可以改变撞击物的质量、速度和角度,以及靶板的材料和厚度,进一步研究陨石撞击对地壳的影响。

此外,可以结合数值模拟方法,对陨石撞击过程进行更加精细的研究,以提高实验的准确性和可靠性。

陨石撞击模拟实验结论手写

陨石撞击模拟实验结论手写

陨石撞击模拟实验结论手写【题目】陨石撞击模拟实验结论手写【正文】1. 介绍陨石撞击是地球上自然界中一种极为罕见但却极具破坏力的事件,也是科学家研究地球形成和演化的重要一环。

为了更好地理解陨石撞击事件的影响,科学家进行了一系列模拟实验来模拟陨石撞击地球的过程。

本文将对陨石撞击模拟实验的结论进行手写总结,以便读者更直观地了解实验结果。

2. 陨石撞击实验结论根据陨石撞击模拟实验的结果,可以得出以下结论:2.1 陨石撞击会引发爆炸实验表明,当陨石撞击地球时,由于高速碰撞产生的能量释放,会造成陨石局部区域的爆炸。

这一爆炸会引发巨大的冲击波和高温火球,并对撞击点周围地区造成毁灭性的损害。

2.2 形成陨石坑实验还表明,陨石撞击地球后,会在撞击点形成一个巨大的凹陷区域,即陨石坑。

陨石坑一般呈圆形,边缘会出现明显的凸起。

根据陨石坑的直径和形状,可以推测出撞击陨石的尺寸和速度。

2.3 火山喷发现象陨石撞击地球时,会产生巨大的热量和能量,从而导致地下岩浆的活跃。

实验中发现,陨石撞击地球后,局部地区的火山活动明显增强,甚至可能引发火山爆发。

这一结果揭示了地质学中陨石撞击与火山活动之间的密切关系。

2.4 影响生物多样性实验还发现,陨石撞击对地球上生物多样性产生了重要的影响。

陨石坠落后,会引发巨大的压力波和火山喷发现象,造成当地环境的破坏和变化。

一些物种可能会因为环境变化而灭绝,而另一些物种则会因适应能力强而在新环境中存活下来。

这种物种的消失和新物种的出现将对地球上的生态系统产生深远影响。

3. 个人观点和理解陨石撞击模拟实验的结论给我们带来了很多有价值的信息。

通过实验我们可以更好地认识到陨石撞击的破坏力有多么恐怖,这对地球的演化和生存环境的稳定性提出了新的挑战。

陨石撞击与火山活动的关系揭示了地球内部的奥秘,为我们研究地球的形成和演化提供了新的线索。

陨石撞击对生物多样性的影响让我们看到了物种适应能力的重要性,也提醒我们要保护好地球上的生态系统,以保护和维护人类赖以生存的环境。

陨石撞击实验自我反思总结

陨石撞击实验自我反思总结

陨石撞击实验自我反思总结一、引言陨石撞击实验是地球科学领域中的一个重要实验,它可以帮助我们更好地了解地球形成过程以及地球表面的变化。

然而,在进行陨石撞击实验时,我们需要注意一些事项,以确保实验的安全性和有效性。

本文将对我所参与的陨石撞击实验进行自我反思总结。

二、实验背景在本次陨石撞击实验中,我们使用了一个模拟装置来模拟陨石撞击地球的过程。

该装置包括一个加速器和一个目标板。

加速器用于将小球加速到一定速度,并在一定角度下发射出去,目标板则用于接收小球并记录其轨迹和碰撞效果。

三、实验过程在进行陨石撞击实验时,我们首先需要确定小球的质量、大小和形状等参数,并根据这些参数设置加速器和目标板的位置和角度。

然后,我们使用计算机模拟软件来预测小球落点和碰撞效果,并根据预测结果调整加速器和目标板的位置和角度。

接下来,我们开始进行实际操作。

首先将小球放入加速器中,并确定其初始速度和角度。

然后,我们按下发射按钮,小球被加速器发射出去,并飞向目标板。

在小球撞击目标板时,我们使用高速摄像机记录下其碰撞效果,并对数据进行分析和比较。

四、实验结果通过对实验数据的分析和比较,我们得出了一些结论。

首先,在相同质量和大小的情况下,不同形状的小球对目标板的撞击效果有所不同。

例如,圆形小球产生的撞击效果比长方形小球要好。

其次,在相同形状和大小的情况下,不同质量的小球对目标板的撞击效果也有所不同。

例如,质量较大的小球产生的撞击效果比质量较小的小球要好。

五、实验反思在进行陨石撞击实验时,我们需要注意以下几点:1.安全第一:由于实验中使用了高速运动物体,因此需要保证实验场地和设备都足够安全,并且参与者需要佩戴相关防护装备。

2.精度问题:由于实验中涉及到多个参数的调整和测量,因此需要保证测量工具和计算机模拟软件都足够精确,并且参与者需要具备相关技能和经验。

3.数据分析问题:由于实验中产生的数据较多,因此需要保证参与者具备良好的数据分析和比较能力,并且需要使用专业软件对数据进行处理和分析。

陨石撞击模拟实验记录表手写

陨石撞击模拟实验记录表手写

陨石撞击模拟实验记录表手写(最新版)目录1.陨石撞击模拟实验背景2.实验过程概述3.实验记录表的内容4.实验结果与分析5.实验的意义和应用正文1.陨石撞击模拟实验背景陨石撞击模拟实验是为了研究地球上生命的起源以及陨石对地球环境的影响而进行的一项重要实验。

通过模拟不同大小、形状和速度的陨石撞击地球的场景,科学家们可以深入了解这些天体事件对地球生态系统的影响,为保护地球生命提供科学依据。

2.实验过程概述陨石撞击模拟实验通常包括以下几个步骤:首先,科学家们会根据实验需求选择合适的陨石模型,这些模型可以根据陨石的大小、形状和成分进行模拟。

接下来,科学家们会将模拟的陨石放入实验装置中,并设定合适的速度和角度。

实验过程中,科学家们会通过高精度传感器和摄像设备记录陨石撞击地球的瞬间,以及产生的冲击波、地震、火灾等影响。

最后,科学家们会对实验数据进行分析,以了解陨石撞击对地球生态系统的具体影响。

3.实验记录表的内容陨石撞击模拟实验记录表通常包括以下几个部分:实验名称、实验目的、实验时间、实验地点、实验设备、实验过程、实验结果和实验人员等。

通过这些详细的记录,科学家们可以对实验过程进行回顾和总结,为今后的研究提供参考。

4.实验结果与分析实验结果显示,不同大小、形状和速度的陨石撞击地球会产生不同的影响。

较小的陨石可能只会在地球表面留下坑洼,而较大的陨石则可能引起严重的生态灾难,如引发火灾、地震、海啸等。

此外,实验还发现,陨石撞击的速度和角度也会对地球生态系统产生重要影响。

通过对实验结果的分析,科学家们可以更好地了解陨石撞击对地球的影响,为防范天体事件提供科学依据。

5.实验的意义和应用陨石撞击模拟实验对于了解地球生命的起源和演化具有重要意义。

通过模拟不同条件下的陨石撞击,科学家们可以探讨生命如何在地球上诞生和演化。

此外,实验还为研究地球生态系统的稳定性提供了重要依据。

在实际应用中,陨石撞击模拟实验可以为地球环境保护和防灾减灾提供科学支持。

陨石实验自我反思报告总结

陨石实验自我反思报告总结

陨石实验自我反思报告总结1. 实验背景本次实验是为了探究陨石对地球表面的影响以及其可能带来的灾害性后果。

通过模拟陨石坠落的过程,我们可以更好地了解陨石的破坏能力和所造成的环境变化。

2. 实验过程在实验中,我们首先选择了适当的模型陨石,并进行了相关参数的测量和记录。

接下来,我们设计了合适的实验条件,包括坠落高度、角度和速度等。

然后,我们在合适的实验场地进行了陨石坠落实验,并对实验现象和数据进行了记录和分析。

3. 实验结果经过实验,我们观察到陨石坠落时的碰撞和爆炸现象,同时也测量到了陨石坠落后周围环境的变化。

实验结果显示,陨石的坠落能够产生巨大的冲击力和爆炸能量,对地球表面造成严重破坏,并导致大量粉尘和轰击物飞散。

4. 反思与总结通过这次陨石实验,我深刻意识到了陨石对地球的潜在威胁以及预防和控制的重要性。

完成这个实验过程中,我也学到了很多知识和技能,但同时也发现了一些不足和需要改进的地方。

首先,实验前的准备工作不够充分。

我们在模型陨石的选择和相关参数的测量上花费了很多时间,而忽视了实验场地的选择和环境控制。

这导致了实验结果的一定误差,并且无法真实地模拟出陨石坠落的真实情况。

其次,在实验过程中对数据的获取和记录不够仔细。

由于过于注重现场观察和实验效果,我们忽略了对关键数据的准确记录和分析。

这给后续数据处理和结果验证带来了一定困难。

最后,实验报告的撰写也需要改进。

由于对实验过程和结果的描述不够清晰和逻辑,报告的阅读和理解存在一定的困难。

在撰写报告时,我们需要更加注重清晰的结构和准确的表达,使读者能够更好地理解和接受我们的研究成果。

5. 改进计划为了提高实验的准确性和可靠性,我制定了以下改进计划:首先,加强实验前的准备工作。

在模型陨石的选择和参数测量之外,我将更加关注实验场地的选择和环境控制。

确保实验条件的合理性和逼真性,以便更好地模拟真实的陨石坠落情况。

其次,改进数据的获取和记录过程。

在实验中,我将更加注重对关键数据的准确记录和分析,确保数据的可靠性和一致性。

陨石撞击模拟实验记录表手写

陨石撞击模拟实验记录表手写

陨石撞击模拟实验记录表手写摘要:一、陨石撞击模拟实验背景及目的二、实验过程及结果概述三、实验结果分析与启示四、对陨石撞击事件的应对措施正文:陨石撞击模拟实验是一种旨在探究陨石撞击地球过程及后果的实验。

实验通过模拟陨石撞击,研究撞击过程中产生的物理、化学及生物效应,为应对真实陨石撞击事件提供科学依据。

一、陨石撞击模拟实验背景及目的近年来,陨石撞击地球的事件频发,给人类社会带来了巨大的威胁。

为了研究陨石撞击地球的后果,科学家们开展了陨石撞击模拟实验。

实验采用高能炸药作为驱动器,将爆炸产生的能量传递给撞击体,使其获得足够的速度撞击地球表面。

实验的目的是观察撞击过程中产生的各种效应,如冲击波、地震、火灾等,并研究其对地球生态环境和人类生存的影响。

二、实验过程及结果概述本次实验在我国某地进行,实验装置包括高能炸药、撞击体和测量设备。

实验过程中,高能炸药爆炸驱动撞击体,使其以高速撞击地球表面。

实验测量了撞击过程中的冲击波、地震、火灾等物理、化学和生物效应。

实验结果显示,撞击过程中产生了强烈的冲击波,附近建筑物受到严重影响;撞击地点发生地震,震级约为里氏2.5级;撞击引发的火灾迅速蔓延,附近森林受到影响。

此外,实验还发现撞击产生了大量尘埃,升腾至大气层,导致大气能见度降低。

三、实验结果分析与启示根据实验结果,撞击事件会对地球表面和大气层产生显著影响。

撞击产生的尘埃颗粒会遮蔽阳光,导致地球表面温度下降,影响生物圈的稳定。

此外,撞击还可能导致土壤、水资源和生态系统的污染。

实验结果启示我们,应对陨石撞击事件需要多学科联合应对。

一方面,要加强天文学研究,提前发现潜在的撞击天体,为预警提供科学依据;另一方面,要研究撞击事件的后果,制定相应的应急预案,降低撞击事件对地球生态环境和人类生存的影响。

四、对陨石撞击事件的应对措施1.加强天文观测,提前发现潜在撞击天体,为预警提供时间。

2.建立多学科联合应对机制,整合各类资源,提高应对效率。

陨石撞击模拟实验变量说明和数据收集

陨石撞击模拟实验变量说明和数据收集

陨石撞击模拟实验的变量说明和数据收集1. 引言近年来,随着太空探索的不断深入,对于陨石撞击的研究变得尤为重要。

陨石撞击是指陨石在进入地球大气层后,由于地球引力的作用而坠落到地球表面的现象。

这类撞击事件的发生对地球环境和生物群落都有着重大影响。

为了更好地理解陨石撞击的过程和影响,科学家们需要进行模拟实验来研究撞击事件的各个方面。

2. 实验目的本实验的目的是通过模拟陨石撞击过程,研究撞击事件对地球表面的影响,并收集相关数据进行分析和讨论。

3. 实验变量的说明3.1 陨石的质量在本实验中,我们将通过改变陨石的质量来观察其对撞击事件的影响。

陨石的质量可以用公斤(kg)作为单位进行表示。

通过选择不同质量的陨石进行模拟实验,我们可以探讨陨石质量与撞击破坏程度之间的关系。

3.2 陨石的速度陨石进入地球大气层后会逐渐减速,并最终以较低的速度坠落到地面。

本实验将通过改变陨石的进入速度来观察其对撞击事件的影响。

速度可以用米每秒(m/s)作为单位进行表示。

通过选择不同速度的陨石进行模拟实验,我们可以探讨陨石速度与撞击效应之间的关系。

3.3 地表物质的性质地球表面的物质具有不同的特性,对于陨石撞击事件的影响也会有所差异。

本实验将通过改变地表物质的性质来观察其对撞击事件的影响。

地表物质的性质可以包括密度、硬度、厚度等参数。

通过选择不同性质的地表物质进行模拟实验,我们可以探讨地表物质性质与撞击效应之间的关系。

4. 数据收集方法在陨石撞击模拟实验中,我们将收集以下数据以进行后续分析和讨论:4.1 撞击力撞击力是衡量陨石撞击事件强度的重要参数。

我们将使用力计或压力传感器来测量撞击事件中产生的力,并以牛顿(N)作为单位进行表示。

4.2 撞击点的形态学变化撞击事件会导致地表形态的改变,如形成陨石坑或碎裂岩石等。

我们将使用测量仪器(如激光测距仪)来测量撞击点的形态学变化,并记录相关数据。

4.3 地表物质的化学变化模拟实验过程中,撞击事件会产生高温、高压等条件,可能导致地表物质的化学变化。

陨石撞击模拟实验变量说明和数据收集

陨石撞击模拟实验变量说明和数据收集

陨石撞击模拟实验变量说明和数据收集1. 引言陨石撞击是地球上发生的一种自然现象,也是地球演化过程中重要的事件之一。

通过模拟实验,我们可以更好地理解陨石撞击对地球的影响,并为地质学、天文学等领域的研究提供参考数据。

本文将介绍陨石撞击模拟实验的变量说明和数据收集方法。

2. 实验目的通过模拟实验,探究不同参数下陨石撞击对地球的影响,以及不同物体属性对撞击效果的影响。

3. 实验变量3.1 碰撞速度碰撞速度是指陨石与地球碰撞时相对于地球表面的速度。

在实验中,我们可以设置不同的碰撞速度来观察其对地表形成的坑洞大小、形态等方面的影响。

3.2 撞击角度撞击角度是指陨石与地球碰撞时与垂直于地表的夹角。

不同角度下,陨石与地表之间产生不同程度的冲击力和动能转化效果。

通过调整撞击角度,我们可以观察到不同形态的陨石坑和地表变形。

3.3 陨石尺寸陨石尺寸是指陨石的直径或质量。

不同尺寸的陨石对地球的撞击效果也会有所不同。

通过设置不同尺寸的陨石,我们可以观察到不同大小和深度的坑洞以及可能产生的火山喷发等现象。

3.4 地表材料地表材料是指模拟实验中使用的地球表面材料,如岩石、土壤等。

不同材料对撞击能量的吸收和传播方式有所差异,从而影响撞击效果。

通过使用不同地表材料,我们可以观察到不同形态和深度的坑洞以及可能产生的碎片飞溅等现象。

4. 数据收集方法4.1 坑洞测量在实验过程中,我们可以使用测量仪器(如激光测距仪)来测量模拟撞击后产生的坑洞大小、深度等参数。

通过多次实验并取平均值,可以得到更准确的数据。

4.2 形态分析通过对模拟撞击后的坑洞形态进行分析,可以得到陨石撞击对地表形成的不同形态的坑洞特征。

可以使用数字图像处理软件对实验结果进行处理和分析。

4.3 碎片飞溅观察在实验中,我们可以设置高速摄影设备来观察模拟撞击时产生的碎片飞溅情况。

通过观察和记录碎片飞溅的速度、方向等参数,可以得到更详细的数据。

4.4 动能转化分析通过测量模拟撞击前后陨石和地表材料之间的动能转化情况,可以了解撞击过程中能量传递和吸收的机制。

最新C++程序设计案例教程精品课件窗口程序设计-陨石撞飞机游戏

最新C++程序设计案例教程精品课件窗口程序设计-陨石撞飞机游戏

下面开始制作下落的陨石
1. 制作几张(3~5)不同的陨石位图文件,方法同上(与 制作飞机位图文件一样)。 将这3~5块陨石图像的ID分别命名为: IDB_BITMAP2、IDB_BITMAP3、IDB_BITMAP4、 IDB_BITMAP5、IDB_BITMAP6等等。 如图示: 2. 在PlaneView.h文件中添加处理陨石的数据成员与函 数成员的代码: 同飞机位图一样,如:
CBitmap *pOldBitmap; pOldBitmap=(CBitmap*)MemDC.SelectObject(&MemBitmap);
MemDC.SelectObject(&m_plane); pDC->BitBlt(mx,my,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY); MemDC.SelectObject(pOldBitmap); }
• 2. 添加资源:陨石位图、飞机位图。 1)在ResourceView资源视图选项卡中,插入 或添加新的资源Resource,如图1所示:
• 2)在Insert Resource(插入资源) 对话框中选择 Bitmap(位图)选项,单击New(新建)按钮,如图2 所示:
该位图的ID默认为IDB_BITMAP1. • 3)在ResourceView资源视图选项卡中 ①飞机制作: 双击IDB_BITMAP1选项,打开资源编辑器中的位 图编辑器,设计一个飞机位图文件,如下图所示。 ②陨石制作: 用前面相同方法,在ResourceView资源视图选项 卡中,新建(或添加)几个位图,用于设计几个(3~5个) 不同的陨石位图文件(每个陨石用一幅图像文件), 各个位图的ID默认为IDB_BITMAP2、 IDB_BITMAP3、 IDB_BITMAP4、 IDB_BITMAP5。

陨石撞击实验自我反思总结

陨石撞击实验自我反思总结

陨石撞击实验自我反思总结
在进行陨石撞击实验之前,我对这个实验的认识仅仅停留在电影和小说中的想象,对于实际的情况并没有太多的了解。

通过这次实验,我深刻地认识到了陨石撞击对地球的影响,也更加了解了科学实验的重要性。

陨石撞击对地球的影响是非常大的。

在实验中,我们使用了不同大小的陨石模型,发现即使是小型陨石的撞击也会对地球造成不小的影响。

更大的陨石撞击则会对地球造成更加严重的后果,如引发火山爆发、地震等自然灾害,甚至可能导致物种灭绝。

这让我深刻认识到了地球的脆弱性,也更加珍惜我们的家园。

科学实验的重要性也得到了进一步的体现。

在实验中,我们通过模拟陨石撞击的过程,观察了不同情况下的撞击效果,并对结果进行了分析和总结。

这些实验数据和结论对于科学研究和应对陨石撞击事件具有重要的意义。

同时,实验也让我深刻认识到了科学实验的严谨性和重要性,只有通过科学实验才能更加准确地了解事物的本质和规律。

这次实验也让我深刻认识到了团队合作的重要性。

在实验中,我们需要共同协作,完成实验的各个环节,从而得到准确的实验结果。

在这个过程中,我学会了倾听他人的意见,尊重他人的想法,也更加了解了团队合作的重要性。

这次陨石撞击实验让我受益匪浅。

通过实验,我深刻认识到了陨石撞击对地球的影响,也更加了解了科学实验的重要性和团队合作的重要性。

希望未来能够继续参与这样的实验,不断提高自己的科学素养和团队合作能力。

探究陨石的撞击小实验反思

探究陨石的撞击小实验反思

探究陨石的撞击小实验反思陨石是指从天空坠落到地球上的天体物质,它们在空气的阻力下会燃烧,形成明亮的火球并发出巨大的声响。

陨石的撞击一直是人类探索的热门话题,也是地球上生命演化的重要因素之一。

为了更好地了解陨石撞击的作用和机制,我们可以进行一些简单的小实验来进行探究和反思。

我们可以准备一些模拟陨石的小石头,如小麦粒大小的石子,然后在室内或户外的平坦地面上进行实验。

我们可以将这些小石子以不同的速度和角度投掷到地面上,观察石子落地时产生的撞击效果。

通过这个小实验,我们可以发现,石子以较大的速度和较小的角度撞击地面时,会产生较大的撞击力和能量,同时也会产生较大的声响和碎石飞溅。

这种撞击效果和陨石撞击地球的效果有些相似,因为陨石在落地时也会以极高的速度和较小的角度撞击地面,从而产生巨大的撞击力和能量,对地球的地壳和生态环境都会造成一定的影响。

我们可以在实验室中使用一些模拟地球表面的材料,如砂土、岩石等,来进行更加精细的实验。

我们可以将模拟陨石在不同速度和角度下撞击这些材料,然后观察和测量撞击后的效果,如形成的陨坑深度、直径、形状等。

通过这个小实验,我们可以更加直观地了解陨石撞击地球的机制和影响。

我们可以发现,陨石撞击地球时,会产生巨大的撞击力和能量,把地表的材料强烈挤压和冲击,从而形成陨坑和震荡波。

这些影响不仅会对地球的地壳造成巨大的破坏和变形,还会对地球的生态环境和生命演化产生深远的影响。

我们可以通过这些小实验来反思和探究陨石撞击地球的意义和价值。

陨石撞击是地球历史上的重要事件之一,它不仅对地球的地质和生态环境产生了深刻的影响,也为人类探索宇宙和认识地球历史提供了珍贵的信息和材料。

通过研究陨石撞击的机制和效果,我们可以更好地了解地球和宇宙的奥秘,同时也可以为人类的生存和发展提供更加科学的依据和思路。

陨石撞击是一个充满神秘和探究的话题,通过一些简单的小实验,我们可以更好地了解它的机制和影响,同时也可以为人类认识和探索宇宙提供更加丰富和深入的材料和思路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.. ... .一、题目陨石撞飞机综合性实验二、中文摘要用MFC设计一个陨石撞飞机的平面游戏:陨石不断地向下落,飞机通过上下左右键移动以躲避陨石。

当陨石碰撞了飞机时,显示提示对话框,及飞机爆炸图像。

确定后在碰撞位置重新开始游戏。

三次碰撞后显示提示对话框,游戏结束。

三、关键词MFC、Bitmap、timer、键盘响应(WM_KEYDOWN)四、前言此程序大多代码出自参考资料,一小部分代码为搜索资料并加工完成,其功能尚有不完善之处。

五、软件开发过程(一)、新建MFC APPWizard[exe]单文档工程文件在Visual C++中新建一个工程,命名为Plane。

工程类型为:MFC AppWizard[exe]。

在MFC AppWizard-Step1对话框中设置应用程序的类型,建立一个单文档工程文件,得到一个应用程序框架文件。

(二)、添加资源:、飞机位图、陨石位图、爆炸位图。

在[插入]-[资源…]选择Bitmap选项,单击[新建]即可。

绘出一个飞机,ID 为(IDB_BITMAP1)、五个陨石(IDB_BITMAP2~IDB_BITMAP6)和一个炸弹位..专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分图(IDB_BITMAP7),如下图。

飞机位图陨石位图爆炸位图(三)、在planeView.h头文件中声明所需变量和函数CBitmap m_plane; //声明一个CBitmap类型的飞机变量m_plane int mx,my;//表示飞机坐标CBitmap m_bump; //爆炸位图变量int mpx,mpy;//表示爆炸位图的坐标int t; //爆炸次数//声明陨石位图的成员变量为CBitmap类型的变量CBitmap m_stone1,m_stone2,m_stone3,m_stone4,m_stone5;//声明陨石的坐标变量为int类型:int nstone1x,nstone1y;int nstone2x,nstone2y;int nstone3x,nstone3y;专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分int nstone4x,nstone4y;int nstone5x,nstone5y;再声明函数成员void CPlanView::DrawPlane(CDC *pDC);//飞机位图函数void CPlanView::Drawbump(CDC *pDC); //爆炸位图函数// 声明绘制陨石的函数原型:void DrawStone1(CDC *pDC);void DrawStone2(CDC *pDC);void DrawStone3(CDC *pDC);void DrawStone4(CDC *pDC);void DrawStone5(CDC *pDC);以上成员(数据成员、成员函数)均为public属性(四)在planview.cpp文件中添加函数1)、修改构造函数mx=100; my=100; t=0; //赋初值m_plane.LoadBitmap(IDB_BITMAP1); //飞机位图调用专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分m_bomb.LoadBitmap(IDB_BITMAP7); //爆炸位图调用//添加陨石初始化操作代码,随机产生nstone1x=rand()%500; // 陨石1 x方向随机数0~499 nstone1y=10;m_stone1.LoadBitmap(IDB_BITMAP2);nstone2x=rand()%500; // 陨石2 x方向随机数0~499 nstone2y=10;m_stone2.LoadBitmap(IDB_BITMAP3);nstone3x=rand()%500; // 陨石3 x方向随机数0~499 nstone3y=10;m_stone3.LoadBitmap(IDB_BITMAP4);nstone4x=rand()%500; // 陨石4 x方向随机数0~499 nstone4y=10;m_stone4.LoadBitmap(IDB_BITMAP5);专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分nstone5x=rand()%500; // 陨石5 x方向随机数0~499 nstone5y=10;m_stone5.LoadBitmap(IDB_BITMAP6);2)、修改ondraw()函数添加DrawPlane(pDC); //调用绘制飞机函数3)、添加DrawPlane()和Drawbump()函数void CPlaneView::DrawPlane(CDC *pDC){CDC MemDC;MemDC.CreateCompatibleDC(pDC);BITMAP bm;m_plane.GetObject(sizeof(BITMAP),&bm);CBitmap MemBitmap;专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分MemBitmap.CreateCompatibleBitmap(pDC,bm.bmWidth,bm.bmHeight);CBitmap *pOldBitmap;pOldBitmap=(CBitmap*)MemDC.SelectObject(&MemBitmap);MemDC.SelectObject(&m_plane);pDC->BitBlt(mx,my,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);MemDC.SelectObject(pOldBitmap);}Drawbump()函数如上类似。

4)添加键盘响应处理函数(OnkeyDown)①添加函数,使飞机能随用户按下的上下左右方向键而移动。

在菜单中选择View->ClassWizard,选中CPlaneView类,在Message Maps选项卡中的Messages栏目选择WM_KEYDOWN消息,双击该项,系统自动生成onKeyDown 消息处理函数.专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分②在PlaneView.cpp文件中,在系统自动产生的函数框架里添加如下所示代码:CClientDC ClientDC(this);RECT rect;BITMAP bm;m_plane.GetObject(sizeof(BITMAP),&bm);rect.left=mx;rect.top=my;rect.right=rect.left+bm.bmWidth;rect.bottom=rect.top+bm.bmHeight;CBrush brush(GetSysColor(COLOR_WINDOW)); // 擦去原来的飞机图像ClientDC.FillRect(&rect,&brush);if(nChar==VK_UP) //按键盘上的向上键"↑"{my=my-8;}if(nChar==VK_LEFT) //按键盘上的向上键"←"{mx=mx-8;}if(nChar==VK_RIGHT) //按键盘上的向上键"→"专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分{mx=mx+8;}if(nChar==VK_DOWN) //按键盘上的向上键"↓"{my=my+8;}DrawPlane(&ClientDC); //重新绘制飞机图像CView::OnKeyDown(nChar, nRepCnt, nFlags);5)添加自定义的绘制陨石的函数DrawStone1void CPlaneView::DrawStone1(CDC *pDC){CDC MemDC;MemDC.CreateCompatibleDC(pDC);BITMAP bm1;m_stone1.GetObject(sizeof(BITMAP),&bm1);CBitmap MemBitmap;专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分MemBitmap.CreateCompatibleBitmap(pDC,bm1.bmWidth,bm1.bmHeight);CBitmap *pOldBitmap;pOldBitmap=(CBitmap*)MemDC.SelectObject(&MemBitmap);MemDC.SelectObject(&m_stone1);pDC->BitBlt(nstone1x,nstone1y,bm1.bmWidth,bm1.bmHeight,&MemDC,0,0,SRC COPY);MemDC.SelectObject(pOldBitmap);}其余函数DrawStone2、DrawStone3、DrawStone4、DrawStone5,类似如上的函数写法6)为了实现陨石的自动下落运动,需要添加定时器函数来控制。

①选View|ClassWizard菜单项,在MFC ClassWizard中,选择CPlaneView类,在Message Maps选项卡中的Messages栏目选择WM_TIMER、WM_CREATE消息,分别双击该项,由系统自动生成该对应的消息函数。

专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分②在OnCreate函数中添加:SetTimer(1,200,NULL);//定时器③在OnTimer函数中添加CClientDC ClientDC(this);RECT ClientRect;GetClientRect(&ClientRect);RECT rect1,rect2,rect3,rect4,rect5;BITMAP bm;m_stone1.GetObject(sizeof(BITMAP),&bm);CBrush brush(GetSysColor(COLOR_WINDOW));int n=0,ns1,ns2,ns3,ns4,ns5;n++;ns1=nstone1x+n;rect1.left=ns1-20;rect1.top=nstone1y-20;rect1.right=rect1.left+bm.bmWidth;rect1.bottom=rect1.top+bm.bmHeight;专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分ClientDC.FillRect(&rect1,&brush);nstone1y=nstone1y+10; // 陨石1 下落的速度if(nstone1y>ClientRect.bottom){nstone1y=0;nstone1x=rand()%ClientRect.right; // 陨石落下的位置随机产生}陨石2至陨石5类似if(n>3){n=0;}DrawStone1(&ClientDC);DrawStone2(&ClientDC);DrawStone3(&ClientDC);DrawStone4(&ClientDC);DrawStone5(&ClientDC);CView::OnTimer(nIDEvent);7)接着添加陨石撞上飞机时弹出提示的函数专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分if(t<3) //判断死亡次数{if(nstone1x>=mx-30 && nstone1x<=mx+20 && nstone1y>=my-30 && nstone1y<=my+20) //判断爆炸条件{mpx=mx;mpy=my;Drawbump(&ClientDC); //显示爆炸位图KillTimer(1); //停止计时器MessageBox("死亡!"); //提示框显示死亡nstone1y=0;nstone1x=rand()%ClientRect.right; //重新产生被撞陨石SetTimer(1,200,NULL); //开始计时器t++;}}else{t=0;专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分mpx=mx;mpy=my;Drawbump(&ClientDC);MessageBox("Game Over!Press OK to restar!","Notice"); //超过3次死亡显示Game Over}if(t<3) //判断死亡次数{if(nstone2x>=mx-30 && nstone2x<=mx+20 && nstone2y>=my-30 && nstone2y<=my+20) //判断爆炸条件{mpx=mx;mpy=my;Drawbump(&ClientDC); //显示爆炸位图KillTimer(1); //停止计时器MessageBox("死亡!"); //提示框显示死亡nstone2y=0;nstone2x=rand()%ClientRect.right; //重新产生被撞陨石SetTimer(1,200,NULL); //开始计时器专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分t++;}}else{t=0;mpx=mx;mpy=my;Drawbump(&ClientDC);MessageBox("Game Over!Press OK to restar!","Notice"); //超过3次死亡显示Game Over}if(t<3) //判断死亡次数{if(nstone3x>=mx-30 && nstone3x<=mx+20 && nstone3y>=my-30 && nstone3y<=my+20) //判断爆炸条件{mpx=mx;mpy=my;专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分Drawbump(&ClientDC); //显示爆炸位图KillTimer(1); //停止计时器MessageBox("死亡!"); //提示框显示死亡nstone3y=0;nstone3x=rand()%ClientRect.right; //重新产生被撞陨石SetTimer(1,200,NULL); //开始计时器t++;}}else{t=0;mpx=mx;mpy=my;Drawbump(&ClientDC);MessageBox("Game Over!Press OK to restar!","Notice"); //超过3次死亡显示Game Over专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分}if(t<3) //判断死亡次数{if(nstone4x>=mx-30 && nstone4x<=mx+20 && nstone4y>=my-30 && nstone4y<=my+20) //判断爆炸条件{mpx=mx;mpy=my;Drawbump(&ClientDC); //显示爆炸位图KillTimer(1); //停止计时器MessageBox("死亡!"); //提示框显示死亡nstone4y=0;nstone4x=rand()%ClientRect.right; //重新产生被撞陨石SetTimer(1,200,NULL); //开始计时器t++;}}else{专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分t=0;mpx=mx;mpy=my;Drawbump(&ClientDC);MessageBox("Game Over!Press OK to restar!","Notice"); //超过3次死亡显示Game Over}if(t<3) //判断死亡次数{if(nstone5x>=mx-30 && nstone5x<=mx+20 && nstone5y>=my-30 && nstone5y<=my+20) //判断爆炸条件{mpx=mx;mpy=my;Drawbump(&ClientDC); //显示爆炸位图KillTimer(1); //停止计时器MessageBox("死亡!"); //提示框显示死亡nstone5y=0;nstone5x=rand()%ClientRect.right; //重新产生被撞陨石专业软件工程年级、班级09级8班课程名称计算机综合性实验实验项目陨石撞飞机实验时间2010 年 6 月20 日实验指导老师黄荔实验评分SetTimer(1,200,NULL); //开始计时器t++;}}else{t=0;mpx=mx;mpy=my;Drawbump(&ClientDC);MessageBox("Game Over!Press OK to restar!","Notice"); //超过3次死亡显示Game Over}程序结束六、系统测试情况基本完成实验要求,飞机可以键盘响应上下左右移动,撞上陨石有提示并能调出爆炸位图,超过三次碰撞提示游戏结束。

相关文档
最新文档