飞机大战程序设计报告

合集下载

飞机大战游戏设计与实现

飞机大战游戏设计与实现

程序设计综合实践报告信息科学与工程学院2015年12月20日目录1. 概述 (1)1.1 关卡设置 (1)1.2 敌机设置 (1)1.3 战机设置 (2)1.4 游戏设置 (2)2. 相关技术 (2)2.1 Windows定时器技术 (2)2.2 双缓冲技术 (3)2.3 获取矩形区域 (3)3. 总体设计与详细设计 (3)3.1 系统模块划分 (3)3.2 主要功能模块 (4)4. 编码实现 (4)4.1 初始准备 (4)4.2 战机对象 (6)4.3 敌机对象 (8)4.4 道具对象 (9)4.5 主要内容 (10)4.6 窗口显示信息 (19)5. 实训中遇到的主要问题及解决方法 (20)5.1 产生中断及解决方案 (20)5.2 图片闪烁问题及解决方案 (20)6. 实训体会 (22)飞机大战游戏设计与实现1. 概述项目:飞机大战主要功能有以下几点:1.1 关卡设置本次飞机大战游戏中共设置了四个关卡,第一关的难度设置较低,仅有敌机对其进行攻击;第二关在原有的基础上增加一些补血的小道具,当积分达到一定的时候便会出现该道具,并且敌机出现的频率也比第一关高;第三关在第二关的基础上新出现了小boss,并增加了其他的道具;第四关在第三关的基础上再新出现大boss,当积分达到要求以及大boss被消灭后通关成功。

1.2 敌机设置小敌机随机出现,炮弹也随机发射,当小敌机与战机相撞或被战机的子弹击中时,小敌机消失。

当达到一定积分时,小boss出现并随机发射出与小敌机一样的炮弹,但是炮弹分三个方向发射出。

当小boss被战机的子弹击中或与战机相撞时失去5滴血。

当到达四关并且积分足够多时出现大boss,同小boss一样,当大boss与战机相撞或被战机子弹击中时失去1滴血。

除此之外,小boss和大boss上方都有血条显示,当血条消失时意味着生命消失,大boss和小boss 消失。

小boss会在屏幕上随机出现和走动出了屏幕后会在屏幕的任意地方再随机出现,直至血量为0消失。

飞机大战实训报告

飞机大战实训报告

飞机大战实训报告作为一款经典的游戏,《飞机大战》已经深入人心,对于爱好游戏开发的人来说,掌握它的制作方法有助于提升自己的技能和经验。

在我的实训项目中,我选择了制作一款《飞机大战》游戏,下面是我的实训报告。

一、前期准备在开始制作游戏之前,我首先进行了一些前期准备,包括学习游戏开发工具和游戏设计思路的设计。

1.游戏开发工具的选择根据我的经验和需求,我选择了使用Cocos Creator 开发工具,因为它可以提供完整的游戏开发环境,包括UI 设计、动画制作、场景控制等功能,同时支持多平台发布。

2.游戏设计思路的设计在开发游戏之前,我需要对游戏的设计方案进行一定的考量。

我决定将游戏分为三个主要部分:开始场景、游戏场景和结束场景。

在开始场景中,我将为玩家提供游戏规则、操作说明等信息。

游戏场景将包括玩家战机、敌机、敌机攻击、奖励、分数等元素。

结束场景将显示玩家的得分、排名和游戏结束信息。

二、游戏开发1.开始场景开始场景是游戏的首屏,玩家可以在这里了解游戏规则和操作方法。

在这个场景中,我将使用Cocos Creator 的UI 设计功能创建一个开始界面。

在这个界面中,我会提供游戏开始、音乐开关、游戏规则等按钮。

2.游戏场景游戏场景是游戏的核心场景,游戏操作和游戏体验都在这里产生。

在这个场景中,我会使用Cocos Creator 的场景设计功能创建一个游戏场景。

在这个场景中,我将包含玩家战机、敌机、敌机攻击、奖励和分数等元素。

3.结束场景结束场景是游戏的最后一个场景,玩家可以在这里查看自己的得分和排名。

在这个场景中,我将使用Cocos Creator 的UI 设计功能创建一个结束界面。

三、游戏发布当游戏制作完成后,我需要将游戏发布到各个平台上。

对于HTML5 平台,我将使用Cocos Creator 提供的发布功能将游戏发布到浏览器上,对于移动平台,我将使用Cocos Creator 提供的发布功能将游戏发布到移动设备上。

大学课程设计报告-飞机大战

大学课程设计报告-飞机大战

湖北大学本科课程设计题目Java课程设计——飞机大战姓名学号专业年级指导教师职称2015年12月18日----目录----一.项目介绍-------------------------------- 1二.概要设计2.1资源需求------------------------------ 12.2游戏流程------------------------------ 1三.类设计3.1游戏界面类---------------------------- 23.2飞行物类------------------------------ 23.3敌机类-------------------------------- 23.4蜜蜂类-------------------------------- 33.5玩家飞机类----------------------------- 33.6子弹类-------------------------------- 4四.编码分析4.1游戏界面类---------------------------- 44.2飞行物类------------------------------ 114.3敌机类-------------------------------- 124.4蜜蜂类-------------------------------- 134.5玩家飞机类----------------------------- 134.6子弹类-------------------------------- 15五.游戏测试画面----------------------------- 16六.总结------------------------------------ 18针对Java课程设计,我做了一个小游戏——飞机大战,游戏代码包含到本学期所学的所有知识点。

程序运行后,进入到开始画面,鼠标单击开始游戏。

程序设计综合实践 飞机大战 实训报告

程序设计综合实践 飞机大战 实训报告

[在此处键入]实训报告飞机大战游戏设计与开发专业名称:班级:学号:信息科学与工程学院二零一八年七月目录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随机生成。

游戏中随机出现四种道具:血包:可以恢复一定的血量。

护盾:一段时间内无敌。

武器升级:升级玩家的武器,共三个等级。

僚机:获得一个僚机。

2. 相关技术2.1 碰撞检测游戏中需要处理一系列的碰撞,在处理碰撞时,可以认为每个对象是与位图大小相同的矩形,用Crect类的GetRect函数获取我方战机的矩形与敌机子弹矩形,然后新建一个矩形并且调用IntersectRect(&bRect,mRect)再用if条件语句判断,若矩形区域重叠不为空,则视为碰撞,在if语句中填写实现碰撞后的功能。

C++课程设计报告【飞机大战】

C++课程设计报告【飞机大战】

C++程序设计A2课程设计报告课程名称C++程序设计A2课题名称飞机大战专业计算机科学与技术班级1820544 ___学号********* _____姓名王锐____ _指导教师韩燕丽__2019年6 月15 日(一)、课程设计题目:飞机大战(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:(1)要求利用面向对象的方法以及C++的编程思路来完成系统的设计。

(2)在系统的设计中,要求运用面向对象的机制(继承及多态性),来实现系统功能,并且要建立清晰的类层次结构。

(3)在系统设计中要分析和定义各个类,每个类中要有各自的数据成员和成员数。

(4)主函数中提供菜单选项,并给出足够的选择信息以及提示信息。

(5)程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。

对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入。

3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。

(三)、设计方法和基本原理:功能要求:设计一个基于控制台的简洁流畅的飞机大战游戏。

问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;目录1.系统需求分析 (1)2.总体设计 (2)3.详细设计及实现 (5)4.系统调试 (5)5.结论 ............................................................................................... 错误!未定义书签。

飞机大战课设报告

飞机大战课设报告

飞机大战课设报告飞机大战是一款经典的游戏,也是计算机科学中常见的课设项目之一。

在这个项目中,我们需要设计一个能够实现基本飞机大战功能的程序,包括游戏场景,敌人飞机,玩家飞机以及子弹等元素。

在本文中,我们将介绍飞机大战的实现原理以及我们的设计思路。

一、游戏场景的实现游戏场景是飞机大战中最基本的元素之一。

我们需要在程序中创建一个游戏窗口,用于展示游戏场景。

在窗口中,我们需要绘制背景图像,以及玩家飞机和敌人飞机等元素。

为了实现更加真实的游戏体验,我们还可以添加背景音乐和音效。

二、敌人飞机的实现在飞机大战中,敌人飞机是玩家需要消灭的目标。

我们需要在程序中创建敌人飞机,并控制其在游戏场景中的运动轨迹。

为了增加游戏难度,我们可以让敌人飞机在不同的高度和速度上运动,同时还可以添加不同种类的敌人飞机,例如飞行速度更快或者攻击力更强的飞机。

三、玩家飞机的实现玩家飞机是游戏中最重要的元素之一。

我们需要在程序中创建玩家飞机,并控制其在游戏场景中的运动轨迹。

为了让玩家更好地操作飞机,我们还可以添加键盘控制功能,例如向上或向下移动、向左或向右转向等。

四、子弹的实现子弹是玩家攻击敌人飞机的主要武器。

我们需要在程序中创建子弹,并控制其在游戏场景中的运动轨迹。

为了增加游戏体验,我们还可以添加不同种类的子弹,例如攻击力更强或者射程更远的子弹。

五、游戏逻辑的实现游戏逻辑是飞机大战中最重要的部分之一。

我们需要实现游戏的开始和结束逻辑,例如游戏开始前的介绍页面和游戏结束后的排名页面。

同时,在游戏过程中,我们还需要实现敌人飞机的生成和移动、玩家飞机的控制和移动、子弹的生成和移动以及碰撞检测等功能。

六、总结在本文中,我们介绍了飞机大战的实现原理以及我们的设计思路。

通过以上的步骤,我们可以实现一个基本的飞机大战游戏,并在程序中添加更多的功能和元素,以实现更加完整的游戏体验。

飞机大战不仅仅是一款游戏,更是一个综合性的课设项目,可以让我们更好地掌握计算机科学中的相关知识。

飞机大战游戏课程设计报告

飞机大战游戏课程设计报告

飞机大战游戏课程设计报告一、课程目标知识目标:1. 学生能理解并掌握编程语言的基本语法和结构,如变量、循环、条件语句等。

2. 学生能运用所学的编程知识,设计和开发一个简单的“飞机大战”游戏。

3. 学生能理解游戏设计中的数学原理,如坐标系统、碰撞检测等。

技能目标:1. 学生能够运用编程工具(如Scratch或Python等)进行游戏设计和开发,提高编程实践能力。

2. 学生通过团队协作,培养沟通与协作能力,学会共同解决问题。

3. 学生能够运用创新思维,设计和优化游戏功能,提高游戏的可玩性和趣味性。

情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,激发学习动力。

2. 学生在游戏设计和开发过程中,培养自信心和成就感,增强自主学习能力。

3. 学生通过游戏设计,体会团队合作的重要性,学会尊重他人,培养良好的团队精神。

课程性质:本课程为信息技术学科,以实践为主,注重培养学生的动手能力和创新思维。

学生特点:五年级学生,对新鲜事物充满好奇心,具备一定的逻辑思维能力,喜欢动手操作。

教学要求:教师应引导学生通过自主学习、合作探究的方式,完成游戏设计和开发任务,关注学生的学习过程,及时给予反馈和指导,提高学生的综合素质。

在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。

二、教学内容本课程教学内容依据课程目标进行选择和组织,主要包括以下几部分:1. 编程基础知识:- 变量的定义和使用- 常用的数据类型- 程序流程控制(条件语句、循环语句)- 函数的定义和调用2. 游戏设计原理:- 游戏的基本元素(玩家、敌人、子弹等)- 坐标系统与运动控制- 碰撞检测与游戏逻辑3. 编程工具与操作:- Scratch或Python编程环境的使用- 图形和角色的绘制与导入- 事件处理与声音效果的应用4. 项目实践:- 设计并开发“飞机大战”游戏- 团队合作与分工- 游戏测试与优化教学内容安排和进度:第一课时:介绍编程基础知识和游戏设计原理,让学生了解课程目标和要求。

飞机大战设计报告+开发计划讲解

飞机大战设计报告+开发计划讲解

项目设计报告项目名称:进击的飞机目录一、游戏整体概括 (3)1.1 游戏概括 (3)1.2 开发环境 (3)二、系统需求分析 (4)2.1用户功能需求分析 (4)2.2 系统性能要求 (4)2.3业务流程分析 (4)三、系统总体设计 (5)3.1 系统功能模块分析 (5)3.2 系统类关系图 (5)3.3 系统总体设计 (6)四、系统详细设计 (8)4.1 开发工具简介 (8)4.2 游戏界面设计 (8)4.2.1游戏开始界面ReadyView (8)4.2.2游戏主界面MainView (9)4.2.2.1 鼠标控制玩家飞机移动 (10)4.2.2.2 碰撞逻辑 (10)4.2.2.3 游戏暂停 (11)4.2.3帮助界面HelpView (11)4.2.4游戏失败界面EndView (12)五、游戏开发计划 (13)5.1游戏开发计划表 (13)5.2 游戏开发计划具体分工 (15)一、游戏整体概括1.1游戏概括本项目是一个基于android平台的、集休闲娱乐、互动交友、丰富生活等诸多元素与一身的手机竞技类游戏。

旨在通过此应用的设计与推广,为社会大众的生活增添乐趣与新意。

本项目产品名称为“进击的飞机”,功能丰富完善,界面简洁流畅,游戏方式简单,玩家易于上手。

1.2开发环境开发环境:Windows 7 & Windows 8.1开发工具:Eclipse开发语言:Java开发平台:Android ADT二、系统需求分析2.1用户功能需求分析由于本游戏交互性好,简单易操作,对用户并没有特殊的要求。

一般用户经过几分钟练习就可以掌握游戏规则。

2.2 系统性能要求①实时性:本应用为手机游戏因此对于用户的操作必须做出立即响应,否则本游戏即为失败。

②易操作性:单机手机游戏的最大特点即为易操作性,用户在不看说明的情况下也能够玩,并且在玩过几遍之后即熟悉本游戏的规则。

这是本应用对于操作性的要求。

2.3业务流程分析三、系统总体设计3.1 系统功能模块分析当前应用使用的SurfaceView来绘制的页面,因此相对来说大部分逻辑都是由View类来做处理的。

飞机大战课设报告

飞机大战课设报告

飞机大战课设报告【摘要】《飞机大战》是一款常见的休闲游戏,主要任务是控制一个飞机在游戏中尽可能地打败敌人,并获取高分。

本文主要介绍了该游戏的开发过程和相关技术,包括游戏设计、游戏机制、游戏界面、程序实现和测试等方面。

通过本次课设,我们不仅熟练掌握了Unity3D游戏引擎的基本操作和编程技巧,还进一步加强了团队合作和项目管理能力,提高了实际项目开发的技能和经验。

【关键词】飞机大战;Unity3D;游戏设计;程序实现;课设报告一、介绍《飞机大战》是一款经典的休闲游戏,在全球范围内拥有广泛的玩家群体。

这款游戏最初在1984年诞生,经过多年的发展和改进,已经成为一款集合了多种游戏机制和特色的休闲游戏。

本次课设的目的是通过设计和开发一款类似的游戏,加深学生对于Unity3D游戏引擎的认识和理解,提高实战开发的技能和能力。

二、游戏设计1. 游戏机制鉴于《飞机大战》是一款不断升级和挑战的游戏,因此我们在游戏设计方面,也采用了类似的机制。

游戏分为多个关卡,每个关卡包含不同的敌人组合和挑战任务,玩家需要不断打败敌人,通过关卡并获取相应的奖励。

同时,游戏中还设有成就系统和排行榜,并且玩家可以通过购买技能提升自己的实力。

2. 游戏界面游戏界面主要包括菜单、游戏场景、道具商城和玩家基本信息等几个部分。

游戏菜单和道具商城可以让玩家选择不同的关卡或道具,并进行购买和升级。

游戏场景中,玩家可以控制自己的飞机行驶,并且进行射击操作。

玩家基本信息则记录了玩家的身份、成就和得分情况等。

三、游戏机制1. 控制方式玩家可以通过键盘或者移动设备进行控制,其中,键盘控制方式包括方向键和射击键,玩家可以通过方向键控制飞机左右移动,并且通过射击键进行攻击。

移动设备控制方式则采用手指滑动和点击控制的方式。

2. 飞机移动飞机移动可以用刚体组件或者Transform组件实现。

我们这里采用的是Transform组件,这样可以减小游戏的物理计算量。

另外,我们还使用了单摇杆控制器插件,这样可以简化控制逻辑和提高游戏体验。

飞机大战程序设计报告

飞机大战程序设计报告

程序设计综合实践实习报告一、实习题目:飞机大战游戏二、实习时间: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),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。

在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数。

整个功能的实现过程如下:(1) 创建一张大小与需要绘制图像相同的位图作为“掩码”位图;(2) 将新创建的“掩码”位图存储至掩码位图的设备描述表中;(3) 把位图设备描述表的背景设置成“透明色”,不需要显示的颜色;(4) 复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图设备描述表中存放的位图与位图设备描述表中的位图一样;(5) 把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;(6) 把“掩码”位图与这个时候对话框相应区域的背景进行逻辑与的操作;(7) 重复步骤5的操作,把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;(8) 最后把系统的画笔还给系统,删除使用过的GDIObject,释放非空的指针,最后把新建的设备描述表也删除。

python飞机大战程序设计报告

python飞机大战程序设计报告

一、概述飞机大战是一款经典的射击游戏,玩家控制飞机在屏幕上不断向上飞行,同时射击敌机,躲避敌机的攻击。

Python作为一种广泛应用于软件开发的高级编程语言,可以用来开发各种类型的游戏。

本报告将详细介绍使用Python语言设计飞机大战程序的过程和实现方法。

二、程序设计目标1. 实现一个具有玩家飞机和敌机的基本射击游戏;2. 能够控制玩家飞机的移动和发射子弹;3. 敌机能够不断向下移动,并且发射子弹攻击玩家飞机;4. 实现游戏得分的计算和显示;5. 添加背景音乐和游戏音效。

三、程序设计思路1. 确定游戏窗口大小和背景图片;2. 创建玩家飞机和敌机的类,并实现它们的移动和碰撞检测;3. 实现玩家飞机的发射子弹和敌机的发射子弹;4. 添加得分和生命值的显示;5. 引入背景音乐和游戏音效。

四、程序设计过程1. 导入pygame模块,并初始化pygame;2. 设置游戏窗口大小和标题,并加载背景图片;3. 创建玩家飞机和敌机的类,实现它们的移动和碰撞检测;4. 实现玩家飞机的发射子弹和敌机的发射子弹;5. 添加得分和生命值的显示;6. 引入背景音乐和游戏音效。

五、程序设计实现1. 导入pygame模块,并初始化pygame:import pygamepygame.init()2. 设置游戏窗口大小和标题,并加载背景图片:SCREEN_WIDTH = 480SCREEN_HEIGHT = 600screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))pygame.display.set_caption('飞机大战')background = pygame.image.load('background.jpg').convert()3. 创建玩家飞机和敌机的类,实现它们的移动和碰撞检测:class Plane(pygame.sprite.Sprite):def __init__(self, image, speed):pygame.sprite.Sprite.__init__(self)self.image = pygame.image.load(image)self.rect = self.image.get_rect()self.speed = speeddef move(self):passdef shoot(self):passdef collide(self):pass4. 实现玩家飞机的发射子弹和敌机的发射子弹:class Bullet(pygame.sprite.Sprite):def __init__(self, image, speed, position): pygame.sprite.Sprite.__init__(self)self.image = pygame.image.load(image) self.rect = self.image.get_rect()self.speed = speedself.rect.midbottom = positiondef move(self):pass5. 添加得分和生命值的显示:class Score(pygame.sprite.Sprite):def __init__(self):pygame.sprite.Sprite.__init__(self)self.score = 0self.font = pygame.font.Font(None, 36)def update(self):self.text = 'Score: d' self.scoreself.image = self.font.render(self.text, 1, (255, 0, 0))self.rect = self.image.get_rect()self.rect.topleft = [10, 10]6. 引入背景音乐和游戏音效:pygame.mixer.init()pygame.mixer.music.load('background_music.mp3') pygame.mixer.music.play(-1, 0.0)bullet_sound = pygame.mixer.Sound('bullet.wav')enemy_sound = pygame.mixer.Sound('enemy.wav')六、程序设计实现结果1. 程序设计完成后,玩家可以通过键盘控制飞机的移动和发射子弹;2. 敌机会不断向下移动,并发射子弹攻击玩家飞机;3. 游戏窗口中显示玩家的得分和生命值;4. 背景音乐和游戏音效能够正常播放。

飞机大战JAVA程序设计报告

飞机大战JAVA程序设计报告

飞机⼤战JAVA程序设计报告中国地质⼤学长城学院Java 程序设计题⽬基于Java的打飞机游戏设计与实现系别信息⼯程系专业计算机科学与技术学⽣姓名马辉学号041120101指导教师⽥⽟龙2015 年 6 ⽉18 ⽇基于Java的打飞机游戏设计与实现1、软件运⾏所需要的软硬件环境本系统是以Windows系统为操作平台,⽤Java编程语⾔来实现本系统所需功能的。

本机器的配置如下:处理器:AMD A4 或英特尔同级别处理器主频:1.2Hz以上内存:1G以上硬盘:HHD 50G或更⾼采⽤的主要技术和软件编程语⾔:Java开发环境:windows7开发软件:Eclipse 3.72、软件开发环境配置JA V A_HOME = F:\JA V A\jdkPATH = % JA V A_HOME%\bin;%JA V A_HOME%\lib;%JA V A_HOME%\jre\lib; CLASSPATH = %JA V A_HOME%\lib;%JA V A_HOME%\jre\lib;3、软件功能框图4、软件所实现的截图5、主要功能部分的源代码import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Random;import java.util.Vector;import javax.swing.JOptionPane;import javax.swing.Timer;public class Controller extends KeyAdapter{public static Vector bangs = new Vector();public static Vector ebullets = new Vector();public static Vector pbullets = new Vector();public static Vector eplanes = new Vector();public static PPlane pplane = new PPlane();private GamePanel gamePanel;private Random random = new Random();public static int baoZhaNum;public Controller(Vector bang,Vector ebullet,Vector pbullet, Vector eplane,PPlane pplane,GamePanel gamePanel) { super(); this.bangs = bang;this.ebullets = ebullet;this.pbullets = pbullet;this.eplanes = eplane;this.pplane = pplane;this.gamePanel = gamePanel;//使⽤定时器每隔⼀秒为每⼀个敌机产⽣⼀个⼦弹Timer timer = new Timer(1000, new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubfor(int i=0;i < eplanes.size();i++){EBullet ebullet = new EBullet(eplanes.elementAt(i).x, eplanes.elementAt(i).y,8,2);ebullets.add(ebullet);}}});timer.start(); //声明定时器之后就开启定时器}@Overridepublic void keyPressed(KeyEvent e) { // TODO Auto-generated method stub switch (e.getKeyCode()){case KeyEvent.VK_UP:PPlane.UP = true;break;case KeyEvent.VK_DOWN: PPlane.DOWN = true;break;case KeyEvent.VK_LEFT: PPlane.LEFT = true;break;case KeyEvent.VK_RIGHT: PPlane.RIGHT = true;break;case KeyEvent.VK_X:PPlane.isFired = true;break;}}@Overridepublic void keyReleased(KeyEvent e) { // TODO Auto-generated method stub switch (e.getKeyCode()){case KeyEvent.VK_UP:PPlane.UP = false;break;case KeyEvent.VK_DOWN: PPlane.DOWN = false;break;case KeyEvent.VK_LEFT: PPlane.LEFT = false;break;case KeyEvent.VK_RIGHT:PPlane.RIGHT = false;break;case KeyEvent.VK_X:PPlane.isFired = false;}}public void StartRun(){new Thread(){public void run(){int count = 0; //通过count控制⼦弹避免连续按发送键时⼦弹连成线while(true){//本机移动pplane.pplaneMove();//添加本机⼦弹if(PPlane.isFired && count%5==0){PBullet pbullet1 = new PBullet(pplane.x+65, pplane.y+50, 8, 15); pbullets.add(pbullet1);PBullet pbullet2 = new PBullet(pplane.x+50, pplane.y+50, 8, 15); pbullets.add(pbullet2);PBullet pbullet3 = new PBullet(pplane.x+35, pplane.y+50, 8, 15); pbullets.add(pbullet3);PBullet pbullet4 = new PBullet(pplane.x+20, pplane.y+50, 8, 15); pbullets.add(pbullet4);}count++;//让本机⼦弹移动并判断是否打中敌机for(int i=0;i < pbullets.size();i++){pbullets.elementAt(i).bulletMove();int index = pbullets.elementAt(i).isPbulletHitEplane();if(index != -1) //不等于-1 证明打中了并产⽣爆炸{Bang bang = new Bang(pbullets.elementAt(i).x,pbullets.elementAt(i).y,30,30);bangs.add(bang);baoZhaNum++;eplanes.remove(index);}}//判断本机⼦弹出界就移除for(int i=0;i < pbullets.size();i++){if(pbullets.elementAt(i).y <= 0){pbullets.remove(i);//System.out.println("⼦弹移除");}}//添加敌机if(eplanes.size() < Global.ENEMY_NUMBER){int x = random.nextInt(Global.FRAME_WIDTH);int y = -30;EPlane eplane = new EPlane(x, y, 30, 30);eplanes.add(eplane);}//让敌机移动并且判断出界for(int i=0;i < eplanes.size();i++){eplanes.elementAt(i).eplaneMove();if(eplanes.elementAt(i).y >= Global.FRAME_HEIGHT){ eplanes.remove(i);}}//让敌机⼦弹移动并将超过边界的敌机⼦弹移除for(int i=0;i < ebullets.size();i++){ ebullets.elementAt(i).bulletMove();if(ebullets.elementAt(i).isEBulletHitPPlane()){ebullets.elementAt(i).isUsed = true;PPlane.life -= 2;}if(ebullets.elementAt(i).y >= Global.FRAME_HEIGHT){ ebullets.remove(i);}}for(int i=0;i < bangs.size();i++){if(bangs.elementAt(i).isBang == true){bangs.remove(i);}}try {sleep(30);} catch (InterruptedException e) {e.printStackTrace();}JudgeLife();gamePanel.display(bangs, ebullets, pbullets, eplanes, pplane);}}}.start();}public void JudgeLife(){if(!pplane.isAlive()){int result = JOptionPane.showConfirmDialog(gamePanel,"继续重玩?","提⽰",JOptionPane.YES_OPTION);if(result==0){newGame();}else{System.exit(0);}}}public void newGame(){bangs.clear(); //重玩必须将⼀切对象都清空ebullets.clear();pbullets.clear();eplanes.clear();pplane = new PPlane(250, 400, 100, 100);baoZhaNum = 0;pplane.life = 100; //不重置⽣命值在进⾏JudgeLife判断会⼀直出现是否重玩的对话框PPlane.DOWN = false; //重新开始游戏之后必须重置所有的静态变量否则会保存上⼀次的静态变量值运动和发射⼦弹PPlane.UP = false;PPlane.LEFT = false;PPlane.RIGHT = false;PPlane.isFired = false;}}public class PBullet extends Bullet{private Image img; //保存⼦弹的图⽚private JPanel jpanel;public JPanel getJpanel() {return jpanel;}public void setJpanel(JPanel jpanel) {this.jpanel = jpanel;}public PBullet(int x, int y, int width, int heigth) {super(x, y, width, heigth);img = new ImageIcon("Image/fire.png").getImage();// TODO Auto-generated constructor stub}public void bulletMove() {// TODO Auto-generated method stubthis.y-=20; //⼦弹的速度⼀定要⼤于飞机的速度否则⼦弹会出现在飞机后⾯}public void drawMe(Graphics g) {// TODO Auto-generated method stubg.drawImage(img, x, y, width, heigth, jpanel);}//在本机⼦弹判断是否打中敌机public int isPbulletHitEplane(){for(int j=0;j < Controller.eplanes.size();j++){Rectangle recPbullet = new Rectangle(x,y,width,heigth);Rectangle recEplane = new Rectangle(Controller.eplanes.elementAt(j).x, Controller.eplanes.elementAt(j).y,Controller.eplanes.elementAt(j).w, Controller.eplanes.elementAt(j).h);if(recPbullet.intersects(recEplane)) //判断矩形重叠{return j;}}return -1;}}6、总结JA V A和Eclipse是⼀款⾮常好的开发语⾔和平台,类的建⽴使编程相对明朗,不同的组件很明确的摆在那,对于头脑不灵活的⼈来说真的是⼀款⾮常清晰明了的开发软件,通过这⼀段时间的JA V A程序开发,我感觉到尽管的是不同的语⾔和平台,开发程序⼀样需要动脑和努⼒,每⼀款软件或者游戏都不是⼀朝⼀⼣能制作出的,都需要⼤量的构思和编程,最后还有繁琐的检查⼯作,通过这次接触JA V A我今后会更努⼒的学习它。

飞机大战课程设计报告摘要

飞机大战课程设计报告摘要

飞机大战课程设计报告摘要一、课程目标知识目标:1. 让学生掌握飞机大战游戏中的基础物理知识,如速度、重力、碰撞等;2. 帮助学生了解计算机编程的基本逻辑,如循环、条件语句、变量等;3. 使学生理解游戏设计的基本原则,如游戏规则、界面设计、用户体验等。

技能目标:1. 培养学生运用物理知识解决实际问题的能力,如设计合理的飞行轨迹;2. 培养学生运用编程技能实现游戏功能,如编写飞机移动、发射子弹等代码;3. 提高学生的团队协作能力,通过合作完成一个完整的飞机大战游戏项目。

情感态度价值观目标:1. 激发学生对科学知识的兴趣,培养探索精神和创新意识;2. 培养学生面对挑战的积极态度,增强克服困难的信心;3. 引导学生正确看待游戏,认识到游戏可以成为学习工具,培养健康游戏观念。

课程性质:本课程为跨学科综合实践课程,结合物理、计算机编程和游戏设计等多学科知识。

学生特点:五年级学生,具备一定的物理知识和逻辑思维,对计算机编程和游戏设计有浓厚兴趣。

教学要求:注重理论与实践相结合,强调动手实践,鼓励学生探究、创新和合作。

通过本课程,使学生将所学知识应用于实际项目中,提高综合运用能力。

二、教学内容1. 物理知识模块:- 速度与加速度的概念及其在飞机运动中的应用;- 重力、碰撞的基本原理及其在游戏中的表现;- 简单力学知识在飞机大战游戏中的运用。

2. 计算机编程模块:- 编程环境与工具的使用;- 基本编程语法,如变量、循环、条件语句等;- 利用编程实现飞机大战游戏的基本功能,如飞机移动、子弹发射、敌机生成等。

3. 游戏设计模块:- 游戏规则设计与策划;- 游戏界面设计,如布局、色彩、字体等;- 用户体验与游戏测试,优化游戏性能。

教学大纲:1. 第一周:介绍物理知识模块,学习速度、加速度等概念,分析飞机运动规律;2. 第二周:学习重力、碰撞原理,探讨在游戏中如何应用;3. 第三周:学习计算机编程模块,掌握编程基础,编写简单的飞机大战游戏功能;4. 第四周:深入学习编程,实现游戏核心功能,如飞机移动、子弹发射等;5. 第五周:开展游戏设计模块教学,设计游戏规则、界面,进行初步测试;6. 第六周:优化游戏设计,进行用户体验测试,完善飞机大战游戏项目。

飞机大战游戏设计报告

飞机大战游戏设计报告

JAVA期中作业飞机大战目录飞机大战游戏设计报告1、游戏名称 (1)2、游戏初步框架: (1)3、游戏规则: (1)4、需求分析 (2)4.1功能需求: (2)4.2数据需求: (3)4.3用户需求: (3)4.4行为需求: (3)5、系统设计 (4)5.1 系统模块划分 (4)5.2 主要功能模块 (5)6、详细设计 (6)6.1 开发工具 (6)6.2 游戏界面设计 (6)飞机大战游戏设计报告1、游戏名称《飞机大战》2、游戏初步框架:游戏元素:游戏背景、不同种类的飞机、敌机游戏成分:碰撞之后的血量计算、分数统计、暂停恢复、数据存储游戏的总体设计:分为三个场景,第一个为游戏的进入场景,第二个为游戏的主界面场景,第三个为游戏结束场景,游戏分别有不同关卡,每一关有自己的剧情设计,玩法各一。

游戏开始场景就是开场背景,资源加载以及初始化处理,比如数据存储等。

游戏主界面场景是游戏核心,主要展示游戏过程,在游戏过程中计算得分,玩家战机血量等。

游戏结束界面是统计当前分数,显示玩家的最高分记录,并给出菜单的进一步设计。

3、游戏规则:(1)玩家战机数量为1。

(2)玩家可自由选择战机。

(3)玩家飞机可通过键盘控制战机上下左右移动。

(4)玩家子弹攻击敌机,敌机血量减少。

(5)敌机有计算机自主控制(6)敌机从界面上端出现,不能反向运动,不能左右移动。

(7)敌机数量随机,由计算机控制。

(8)敌机可发送子弹,若战机被击中,血量减少,血量减少到一定程度,战机坠毁,游戏结束。

(9)子弹具有一定的速度。

(10)玩家可在一段时间内发送导弹清除屏幕中除Boss外的敌机。

4、需求分析4.1功能需求:飞机大战需要实现的主要功能如下:(1)用户进入游戏开始菜单可以选择开始游戏、退出游戏。

(2)战机可根据玩家的操作自由移动,但不可移出窗体外。

(3)玩家飞机以一定速度自下而上飞行,用户可以控制飞机上下左右移动。

(4)玩家飞机可连续发射子弹,子弹位置由战机起始位置决定,用户通过操控飞机位置来扫射飞机。

飞机大战游戏设计报告

飞机大战游戏设计报告

飞机大战游戏设计报告一、需求分析飞机大战是一款经典的射击类游戏,玩家通过操作飞机并不断射击敌机,躲避敌机的攻击,获取高分。

游戏的主要目标是击败所有敌机,并活到最后,获得最高分数。

二、游戏流程设计1.开始界面:游戏开始时展示游戏的名称、背景音乐的控制按钮以及开始按钮。

2.游戏界面:游戏开始后,玩家会看到自己的飞机在屏幕底部,并且敌机会从屏幕顶部射击向玩家飞机。

玩家通过触摸或键盘控制自己的飞机移动,左手指向左,右手指向右,同时通过触摸或键盘射击按钮进行攻击。

3.游戏规则:-玩家可以通过左右移动来躲避敌机的攻击,同时用子弹攻击敌机。

-敌机被击中后会掉落道具,玩家可以通过接触道具来增加分数、生命值或者升级武器。

-玩家被敌机击中后,生命值减少,当生命值为0时,游戏结束。

-游戏结束后,会显示本局游戏得分和最高得分,并提供重新开始按钮和返回主菜单按钮。

三、游戏功能设计1.角色设计:-玩家飞机:可以左右移动,并发射子弹攻击敌机,有生命值。

-敌机:从屏幕顶部向下移动,发射子弹攻击玩家飞机,玩家可以通过攻击敌机获得分数。

-道具:掉落敌机后,玩家可以通过接触道具获得特殊能力,如增加分数、生命值或者升级武器。

2.武器设计:-玩家飞机的初始武器是普通子弹,每发射一颗消耗一定的能量。

-玩家可以通过接触道具来升级武器,拥有更强大的攻击能力。

-不同武器有不同的攻击方式和能量消耗。

3.难度设计:-游戏可以设置多个难度级别,随着游戏进行逐渐增加敌机的数量和速度。

-敌机的攻击方式和频率也会逐渐增加。

4.音效设计:-游戏中应该添加背景音乐,使游戏更具氛围。

-玩家飞机发射子弹、敌机爆炸、道具掉落等均应有相应的音效,增加游戏的趣味性和真实感。

四、游戏界面设计1.开始界面:简洁明了,显示游戏名称,背景音乐的控制按钮以及开始按钮。

2.游戏界面:-上方显示玩家得分和生命值。

-屏幕底部显示玩家飞机,并通过左右移动来躲避敌机的攻击。

-敌机从屏幕顶部向下移动,并发射子弹攻击玩家飞机。

飞机大战c语言程序设计报告

飞机大战c语言程序设计报告

飞机大战c语言程序设计报告飞机大战是一款经典的射击类游戏,玩家通过控制飞机的移动和射击来击败敌人。

在本次C语言程序设计报告中,我将介绍飞机大战游戏的设计思路、主要功能和实现方法。

首先,我们需要设计游戏的界面。

使用C语言的图形库,我们可以创建一个窗口来展示游戏。

窗口中央是玩家操控的飞机,周围是敌人飞机和其他的游戏元素。

我们可以使用ASCII字符来绘制游戏界面,使用光标移动和颜色控制函数来实现动态效果。

接下来,我们需要实现玩家飞机的控制。

通过监听键盘输入,我们可以控制飞机的移动。

当按下方向键时,可以让飞机上下左右移动。

同时,我们还需要实现飞机的射击功能。

当用户按下空格键时,飞机会发射子弹,击中敌人飞机会得分。

在游戏中,我们还需要实现敌人飞机的出现和移动。

为了增加游戏的难度,可以设置多个敌人飞机,它们会从屏幕的上方或者右方进入游戏界面,并以一定的速度进行移动。

当敌人飞机飞出屏幕或者被玩家击中时,会消失并重新生成新的敌人飞机。

除了敌人飞机,我们还可以在游戏中添加其他的游戏元素,如道具箱、障碍物等。

玩家可以通过接触道具箱获得奖励,如增加射速、伤害等。

而障碍物可以增加游戏的挑战性,玩家需要躲避障碍物的同时击败敌人飞机。

最后,我们还可以为游戏增加音效和背景音乐,增强游戏的趣味性和可玩性。

通过调用C语言的音频库,我们可以实现在游戏中播放声音。

总结起来,飞机大战是一款非常经典和有趣的游戏。

通过本次C语言程序设计,我们可以深入了解游戏的设计思路和实现方法。

希望本次报告能够对大家了解飞机大战及其相应的C语言程序设计有所帮助。

飞机大战c课程设计报告

飞机大战c课程设计报告

飞机大战c 课程设计报告一、课程目标知识目标:1. 让学生掌握飞机大战C课程中的基础编程概念,如变量、循环和条件语句。

2. 使学生了解游戏设计的基本流程,包括游戏规则、角色设计和用户交互。

3. 帮助学生理解坐标系在游戏编程中的应用。

技能目标:1. 培养学生运用编程语言解决问题和实现简单游戏的能力。

2. 提高学生运用逻辑思维进行程序设计和调试的能力。

3. 培养学生团队协作和沟通能力,共同完成飞机大战游戏项目。

情感态度价值观目标:1. 激发学生对编程和游戏设计的兴趣,培养其主动探索和创新的意识。

2. 培养学生面对困难和挑战时保持积极心态,勇于尝试和克服困难。

3. 培养学生遵守网络道德规范,正确对待游戏,养成良好的生活习惯。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术课程,结合游戏设计,提高学生的编程能力和逻辑思维。

2. 学生特点:五年级学生,具备一定的计算机操作能力和逻辑思维能力,对游戏有浓厚兴趣。

3. 教学要求:课程内容要贴近学生生活,注重实践操作,培养实际编程能力。

1. 熟练运用编程语言,独立完成飞机大战游戏的设计与编程。

2. 提高解决问题的能力和团队协作精神,为后续学习打下坚实基础。

3. 树立正确的价值观,养成良好的学习习惯,激发对信息技术的热爱。

二、教学内容1. 课程导入:介绍飞机大战游戏的基本概念,激发学生兴趣,明确学习目标。

教材章节:《信息技术》五年级下册第四章第一节。

2. 编程基础:讲解变量、循环和条件语句等编程概念,为游戏设计打下基础。

教材章节:《信息技术》五年级下册第四章第二节。

3. 游戏设计流程:介绍游戏设计的基本流程,包括游戏规则、角色设计和用户交互。

教材章节:《信息技术》五年级下册第四章第三节。

4. 坐标系应用:讲解坐标系在游戏编程中的应用,使学生能够实现角色移动和碰撞检测。

教材章节:《信息技术》五年级下册第四章第四节。

5. 实践操作:分组进行飞机大战游戏的编程实践,巩固所学知识,提高编程能力。

飞机大战设计报告+开发计划讲解

飞机大战设计报告+开发计划讲解

项目设计报告项目名称:进击的飞机目录一、游戏整体概括 (3)1.1 游戏概括 (3)1.2 开发环境 (3)二、系统需求分析 (4)2.1用户功能需求分析 (4)2.2 系统性能要求 (4)2.3业务流程分析 (4)三、系统总体设计 (5)3.1 系统功能模块分析 (5)3.2 系统类关系图 (5)3.3 系统总体设计 (6)四、系统详细设计 (8)4.1 开发工具简介 (8)4.2 游戏界面设计 (8)4.2.1游戏开始界面ReadyView (8)4.2.2游戏主界面MainView (9)4.2.2.1 鼠标控制玩家飞机移动 (10)4.2.2.2 碰撞逻辑 (10)4.2.2.3 游戏暂停 (11)4.2.3帮助界面HelpView (11)4.2.4游戏失败界面EndView (12)五、游戏开发计划 (13)5.1游戏开发计划表 (13)5.2 游戏开发计划具体分工 (15)一、游戏整体概括1.1游戏概括本项目是一个基于android平台的、集休闲娱乐、互动交友、丰富生活等诸多元素与一身的手机竞技类游戏。

旨在通过此应用的设计与推广,为社会大众的生活增添乐趣与新意。

本项目产品名称为“进击的飞机”,功能丰富完善,界面简洁流畅,游戏方式简单,玩家易于上手。

1.2开发环境开发环境:Windows 7 & Windows 8.1开发工具:Eclipse开发语言:Java开发平台:Android ADT二、系统需求分析2.1用户功能需求分析由于本游戏交互性好,简单易操作,对用户并没有特殊的要求。

一般用户经过几分钟练习就可以掌握游戏规则。

2.2 系统性能要求①实时性:本应用为手机游戏因此对于用户的操作必须做出立即响应,否则本游戏即为失败。

②易操作性:单机手机游戏的最大特点即为易操作性,用户在不看说明的情况下也能够玩,并且在玩过几遍之后即熟悉本游戏的规则。

这是本应用对于操作性的要求。

2.3业务流程分析三、系统总体设计3.1 系统功能模块分析当前应用使用的SurfaceView来绘制的页面,因此相对来说大部分逻辑都是由View类来做处理的。

飞机大战游戏 体系结构设计报告

飞机大战游戏 体系结构设计报告

[键入文字]飞机大战游戏 体系结构设计报告青岛软件园软件人力资源服务有限公司实训服务中心版本历史目录0. 文档介绍 (4)0.1文档目的 (4)0.2文档范围 (4)0.3读者对象 (4)0.4参考文献 (4)0.5术语与缩写解释 (4)1. 系统概述 (5)2. 设计约束 (5)3. 设计策略 (5)4. 系统总体结构 (5)5. 子系统的结构与功能 (5)5.1人工智能子系统 (5)5.2游戏对象子系统 (6)6. 开发环境的配置 (7)7. 运行环境的配置 (7)8. 测试环境的配置 (7)0. 文档介绍0.1 文档目的为模块设计人员提供飞机大战游戏模块设计依据。

0.2 文档范围本文介绍了飞机大战游戏的体系结构。

0.3 读者对象模块设计人员0.4 参考文献无0.5 术语与缩写解释1. 系统概述飞机大战游戏是基于Windows桌面的射击类游戏。

做为一个游戏首先要保证游戏本身的规则,而这个版本的一个重要的功能就是其2D的展现形式。

2. 设计约束(1)需求约束。

体系结构设计人员从《软件需求规格说明书》)中提取需求约束✧软件、硬件环境(包括运行环境和开发环境)的约束✧用户界面的约束✧软件质量的约束,如正确性、可靠性、效率(性能)、易用性。

(2)隐含约束。

有一些假设或依赖并没有在需求文档中明确指出,但可能会对系统设计产生影响,设计人员假设对用户熟悉简单的Windows游戏的玩法。

3. 设计策略无。

4. 系统总体结构有两个主要的部分组成,分别是规则子系统、游戏对象子系统。

系统的总体结构图如下:5. 子系统的结构与功能5.1 规则子系统该子系统主要是实现飞机大战各项游戏规则。

实现了需求中的游戏规则。

组成结构如下图所示:这个系统包含1个重要的模块,人工智能,它实现了敌机对战机的攻击以及游戏对象碰撞监测规则,其实实现的是代表计算机方与玩家进行对战。

✧攻击规则⏹敌机在战机上方或下方时发射炸弹,炸弹从下至上或从上至下射向战机⏹攻击时发出声音✧碰撞规则⏹导弹或炸弹本身的矩形区域和敌机或战机的矩形区域相交时,表示导弹或炸弹射中了战机或敌机⏹战机被炸毁,游戏结束。

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

程序设计综合实践
实习报告
一、实习题目:飞机大战游戏
二、实习时间: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),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。

在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数。

整个功能的实现过程如下:
(1) 创建一张大小与需要绘制图像相同的位图作为“掩码”位图;
(2) 将新创建的“掩码”位图存储至掩码位图的设备描述表中;
(3) 把位图设备描述表的背景设置成“透明色”,不需要显示的颜色;
(4) 复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图
设备描述表中存放的位图与位图设备描述表中的位图一样;
(5) 把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操
作绘制到对话框上;
(6) 把“掩码”位图与这个时候对话框相应区域的背景进行逻辑与的操作;
(7) 重复步骤5的操作,把需要透明绘制的位图与对话框绘图相应区域的背
景进行逻辑异或操作绘制到对话框上;
(8) 最后把系统的画笔还给系统,删除使用过的GDIObject,释放非空的指
针,最后把新建的设备描述表也删除。

BOOL CGameObject::LoadImage(CImageList& imgList,UINT。

相关文档
最新文档