飞机大战实验报告
飞机大战实训报告
飞机大战实训报告作为一款经典的游戏,《飞机大战》已经深入人心,对于爱好游戏开发的人来说,掌握它的制作方法有助于提升自己的技能和经验。
在我的实训项目中,我选择了制作一款《飞机大战》游戏,下面是我的实训报告。
一、前期准备在开始制作游戏之前,我首先进行了一些前期准备,包括学习游戏开发工具和游戏设计思路的设计。
1.游戏开发工具的选择根据我的经验和需求,我选择了使用Cocos Creator 开发工具,因为它可以提供完整的游戏开发环境,包括UI 设计、动画制作、场景控制等功能,同时支持多平台发布。
2.游戏设计思路的设计在开发游戏之前,我需要对游戏的设计方案进行一定的考量。
我决定将游戏分为三个主要部分:开始场景、游戏场景和结束场景。
在开始场景中,我将为玩家提供游戏规则、操作说明等信息。
游戏场景将包括玩家战机、敌机、敌机攻击、奖励、分数等元素。
结束场景将显示玩家的得分、排名和游戏结束信息。
二、游戏开发1.开始场景开始场景是游戏的首屏,玩家可以在这里了解游戏规则和操作方法。
在这个场景中,我将使用Cocos Creator 的UI 设计功能创建一个开始界面。
在这个界面中,我会提供游戏开始、音乐开关、游戏规则等按钮。
2.游戏场景游戏场景是游戏的核心场景,游戏操作和游戏体验都在这里产生。
在这个场景中,我会使用Cocos Creator 的场景设计功能创建一个游戏场景。
在这个场景中,我将包含玩家战机、敌机、敌机攻击、奖励和分数等元素。
3.结束场景结束场景是游戏的最后一个场景,玩家可以在这里查看自己的得分和排名。
在这个场景中,我将使用Cocos Creator 的UI 设计功能创建一个结束界面。
三、游戏发布当游戏制作完成后,我需要将游戏发布到各个平台上。
对于HTML5 平台,我将使用Cocos Creator 提供的发布功能将游戏发布到浏览器上,对于移动平台,我将使用Cocos Creator 提供的发布功能将游戏发布到移动设备上。
飞机大战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的飞机大战单机版游戏,其实现的主要功能为:控制战机对象的移动,敌机对象的随机出现和发射子弹,实现游戏对象的爆炸特效,文字提示功能和界面背景切换特效,其主要是遵循开发者规定的游戏规则进行游戏闯关。
飞机大作战游戏实训总结
飞机大作战游戏实训总结1.概述飞机大战游戏是在Microsoft Visual Studio编程软件的MFC环境下制作的一款游戏,界面简洁流畅、游戏方式简单。
游戏主要实现的功能和规则如下:(1)利用键盘中的上下左右键控制我方战机,空格键发射子弹。
战机初始有一定量的血量。
(2)屏幕上随机产生敌机,战机产生的数量和当前关卡,关卡越高,产生的敌机越多,游戏难度越大。
而且敌机产生的位置和速度是不确定的。
只有当我机位于敌机下方时,敌机会产生子弹,默认情况下是不发射任何子弹的。
(3)战机子弹打中敌机,敌机就会爆炸,同时玩家分数会增加,每得1000分进人下一关。
2.相关技术在设计该游戏时,用到许多技术,这里介绍几个相对重要的技术。
关于碰撞检测的相关函数:用CRect类的GetRect()函数可以获得当前对象的矩形区域,IntersectRect()并用此函数判断战机与敌机,子弹与战机,我方导弹与敌机,战机与物品是否相撞。
CObList链表:使用CObList链表来分别存储敌机,炸弹,导弹,爆炸效果。
CobList类似于一个双向链表,POSITION类型的变量为链表的键。
使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。
我们可以通过获得某元素的POSITION来访问它。
本程序中主要用到的函数有:GetHeadPosition()——获取链表首元素的POSITION;AddTail ()——向链表尾部添加新的元素;GetNext(POSITION&rPosition)返回当前rPosition指向的元素,并使rPosition指向下一个元素。
设置定时器、销毁定时器SetTimerO函数来设置定时器,控制每隔多少毫秒执行一次什么任务。
用Ki11Time()函数来销毁定时器。
双缓冲技术为了避免窗体频繁闪烁,引入双缓冲技术。
双缓冲的原理是先建立一个内存DC,捋游戏对象绘制到内存DC上,再一次性的把内存中绘制好的图形“拷贝”到设备DC上。
飞机大战实训日记
飞机大战实训日记
1. 第一天的实训主要是了解飞机大战游戏的基本操作和规则,包括如何控制飞机移动和射击,如何进行升级和购买武器等。
2. 在第二天的实训中,我们开始进行游戏的各种模式练习,了解不同模式的特点和游戏策略。
3. 第三天的实训中,我们开始进行组队游戏,分工合作,制定战术,更好地完成各种任务和挑战。
4. 在第四天的实训中,我们开始进行实际的比赛,与其他小组进行对抗,锻炼自己的竞技能力和团队合作能力。
5. 第五天的实训中,我们对比赛过程中出现的问题进行了总结和反思,分析自己的不足之处,制定下一步的改进方案。
6. 经过一周的实训,我们的游戏水平和团队合作能力都有了很大提高,已经能够独立完成各种任务和挑战。
7. 在实训过程中,我发现自己最大的问题是对游戏策略的理解不够深刻,需要更加努力的学习和实践。
8. 实训期间我们也注意到一些游戏中的问题和难点,需要更加深入的学习和研究,为今后的游戏发展提供更好的思路和方案。
9. 最后的比赛让我们深刻认识到团队合作和个人能力的重要性,大家都非常努力地为团队争取胜利,这样的经历让我们受益匪浅。
10. 在未来的实践过程中,我们希望能够更加深入地学习飞机大战游戏的各种技巧和策略,为团队的发展和个人能力的提升做出更多的努力。
经典实验--飞机大战小游戏
经典实验--飞机⼤战⼩游戏·⼀、需求设计 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定义全局变量 (1) long long int speed = 0;//控制敌机的速度 (2) int position_x, position_y;//飞机的所在位置 (3) int high, width;//地图的⼤⼩ (4) int bullet_x, bullet_y;//⼦弹的位置 (5) int enemy_x, enemy_y;//敌⼈的位置 (6) int map[MAX][MAX]; (7) /*地图符号说明:0表⽰空⽩,1表⽰战机*的区域,2表⽰敌⼈战机的位置。
飞机大战课设报告
飞机大战课设报告飞机大战是一款经典的游戏,也是计算机科学中常见的课设项目之一。
在这个项目中,我们需要设计一个能够实现基本飞机大战功能的程序,包括游戏场景,敌人飞机,玩家飞机以及子弹等元素。
在本文中,我们将介绍飞机大战的实现原理以及我们的设计思路。
一、游戏场景的实现游戏场景是飞机大战中最基本的元素之一。
我们需要在程序中创建一个游戏窗口,用于展示游戏场景。
在窗口中,我们需要绘制背景图像,以及玩家飞机和敌人飞机等元素。
为了实现更加真实的游戏体验,我们还可以添加背景音乐和音效。
二、敌人飞机的实现在飞机大战中,敌人飞机是玩家需要消灭的目标。
我们需要在程序中创建敌人飞机,并控制其在游戏场景中的运动轨迹。
为了增加游戏难度,我们可以让敌人飞机在不同的高度和速度上运动,同时还可以添加不同种类的敌人飞机,例如飞行速度更快或者攻击力更强的飞机。
三、玩家飞机的实现玩家飞机是游戏中最重要的元素之一。
我们需要在程序中创建玩家飞机,并控制其在游戏场景中的运动轨迹。
为了让玩家更好地操作飞机,我们还可以添加键盘控制功能,例如向上或向下移动、向左或向右转向等。
四、子弹的实现子弹是玩家攻击敌人飞机的主要武器。
我们需要在程序中创建子弹,并控制其在游戏场景中的运动轨迹。
为了增加游戏体验,我们还可以添加不同种类的子弹,例如攻击力更强或者射程更远的子弹。
五、游戏逻辑的实现游戏逻辑是飞机大战中最重要的部分之一。
我们需要实现游戏的开始和结束逻辑,例如游戏开始前的介绍页面和游戏结束后的排名页面。
同时,在游戏过程中,我们还需要实现敌人飞机的生成和移动、玩家飞机的控制和移动、子弹的生成和移动以及碰撞检测等功能。
六、总结在本文中,我们介绍了飞机大战的实现原理以及我们的设计思路。
通过以上的步骤,我们可以实现一个基本的飞机大战游戏,并在程序中添加更多的功能和元素,以实现更加完整的游戏体验。
飞机大战不仅仅是一款游戏,更是一个综合性的课设项目,可以让我们更好地掌握计算机科学中的相关知识。
飞机大战游戏课程设计报告
飞机大战游戏课程设计报告一、课程目标知识目标:1. 学生能理解并掌握编程语言的基本语法和结构,如变量、循环、条件语句等。
2. 学生能运用所学的编程知识,设计和开发一个简单的“飞机大战”游戏。
3. 学生能理解游戏设计中的数学原理,如坐标系统、碰撞检测等。
技能目标:1. 学生能够运用编程工具(如Scratch或Python等)进行游戏设计和开发,提高编程实践能力。
2. 学生通过团队协作,培养沟通与协作能力,学会共同解决问题。
3. 学生能够运用创新思维,设计和优化游戏功能,提高游戏的可玩性和趣味性。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,激发学习动力。
2. 学生在游戏设计和开发过程中,培养自信心和成就感,增强自主学习能力。
3. 学生通过游戏设计,体会团队合作的重要性,学会尊重他人,培养良好的团队精神。
课程性质:本课程为信息技术学科,以实践为主,注重培养学生的动手能力和创新思维。
学生特点:五年级学生,对新鲜事物充满好奇心,具备一定的逻辑思维能力,喜欢动手操作。
教学要求:教师应引导学生通过自主学习、合作探究的方式,完成游戏设计和开发任务,关注学生的学习过程,及时给予反馈和指导,提高学生的综合素质。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容本课程教学内容依据课程目标进行选择和组织,主要包括以下几部分:1. 编程基础知识:- 变量的定义和使用- 常用的数据类型- 程序流程控制(条件语句、循环语句)- 函数的定义和调用2. 游戏设计原理:- 游戏的基本元素(玩家、敌人、子弹等)- 坐标系统与运动控制- 碰撞检测与游戏逻辑3. 编程工具与操作:- Scratch或Python编程环境的使用- 图形和角色的绘制与导入- 事件处理与声音效果的应用4. 项目实践:- 设计并开发“飞机大战”游戏- 团队合作与分工- 游戏测试与优化教学内容安排和进度:第一课时:介绍编程基础知识和游戏设计原理,让学生了解课程目标和要求。
飞机大战实训报告
程序设计综合实践实习报告学院名称专业班级学生姓名学号指导教师山东科技大学一、实习题目:飞机大战游戏的设计与实现二、实习时间:18周~ 19周实习地点:三、实习任务:1.基本功能要求:飞机大战游戏必须运用透明贴图、按键处理、定时控制、双缓冲技术等技术实现战机(玩家)和敌机(计算机)对战功能2.扩展功能:在完成基本功能基础上可以增加双人对战、游戏积分制、声音效果、多种子弹类型、客机类型、游戏关卡设计、多种类型敌机、游戏中间结果存贮等功能四、小组分工说明:自己完成五、实习成绩六、指导教师对实习的评语:指导教师(签章):2015年月日目录1.概述 (4)1.1实训项目简介 (4)1.2实训项目功能说明 (4)2.相关技术 (5)2.1透明贴图技术 (5)2.2 获取矩形区域并判断两个矩形区域是否相撞 (5)2.3鼠标控制我方战机 (5)2.4 Windows定时器技术 (6)2.5 CObList链表 (6)2.6对话框的应用 (7)2.7双缓冲技术 (7)3.需求分析 (7)3.1功能需求分析 (7)3.2 数据需求分析 . (7)3.3 行为需求分析 (7)3.4 其他需求 (7)4.总体设计与详细设计 (8)4.1 系统模块划分 (8)4.2 主要功能模块 (8)4.2.1系统主要类图 (8)4.2.2飞机大战游戏设计执行流程图 (8)4.3 扩展功能设计思路 (9)4.4 软件结构设计体会 (9)5.编码实现 (10)5.1绘制游戏背景位图的程序 (10)5.2各个游戏对象的绘制 (10)5.3我方战机位置的动态控制 (12)5.4各个游戏对象碰撞的实现 (13)5.5游戏界面输出当前游戏信息 (15)6.测试情况说明 (17)6.1主要模块测试情况 (17)6.2 主要功能测试情况 (18)7. 实训中遇到的主要问题及解决方法 (19)8.实训收获与体会 (19)1. 概述1.1实训项目简介本次实训项目是应用MFC编程完成一个界面简洁、运行流畅、操作简单、易于上手的飞机大战。
飞机大战项目实训报告
飞机大战项目实训报告一、项目背景随着计算机技术的不断发展和完善,游戏设计成为了计算机软件开发的重要组成部分之一。
针对此,本实训项目选择了一款单机游戏——飞机大战。
二、项目概述《飞机大战》是一款盛行于各大游戏平台的街机游戏,其玩法简单,操作容易上手,可单人、多人游戏。
玩家通过控制战斗机的移动与攻击,击败敌机、坦克、大型BOSS等,累计积分并提高自己的得分记录。
三、项目分析1.游戏玩法(1) 游戏起始界面:菜单栏、游戏设置、游戏排名、游戏开始、游戏介绍等。
(2) 游戏主界面:飞机、子弹、敌机、敌机轨迹、背景、音效等。
(3) 游戏结束界面:游戏得分、游戏排名、重新开始、返回主界面等。
2.技术要点图形处理、音频处理、基本算法、游戏逻辑、前端UI设计等。
四、开发流程1.需求分析首先要对游戏界面、游戏机制等进行详细的分析,梳理各个功能模块,并且根据分析结果来进行程序开发。
2.原型设计设计游戏UI框架,并进行渲染效果分析。
3.编码实现搭建游戏框架、实现游戏逻辑和算法,并对游戏进行调试。
4.测试调试经过编码实现后,对游戏进行测试和调试,确保游戏实现效果良好。
5.发布上线游戏开发完成后,进行打包、发布和上线操作。
五、技术要点1.图像处理:游戏中大量使用了图片素材进行操作,包括:飞机、子弹、敌机图片素材、背景图片处理等。
2.音频处理:音频处理主要用于游戏过程中背景音乐、游戏音效等相关操作。
3.基本算法:本游戏使用了几何线段相交法、多边形拐角点判断法等进行处理。
4.游戏逻辑:游戏逻辑主要包括游戏场景构建、游戏胜负判定等操作。
5.前端UI设计:游戏前端UI设计用于游戏的用户交互,即各种按钮、控件的设计和实现。
六、总结通过此次实训项目,我对游戏开发有了深入的了解和认识。
在项目的实践过程中,我逐步掌握了游戏开发的流程、技术要点等,也通过不断的学习和实践提高了自己的编程水平。
在以后的开发中,我需要更加深入的学习和掌握游戏开发中的各种技巧和实践经验,不断提高自己的编程水平和能力。
飞机大战游戏课程设计总结
飞机大战游戏课程设计总结一、课程目标知识目标:1. 学生能够理解并掌握游戏设计的基本原理和流程;2. 学生能够运用所学的编程知识,创建并完善一个简单的飞机大战游戏;3. 学生能够了解游戏中的物理概念,如速度、碰撞检测等。
技能目标:1. 学生能够运用编程软件,独立编写游戏程序;2. 学生能够运用创意思维,设计出独特的游戏角色和场景;3. 学生能够通过团队协作,共同解决游戏开发过程中遇到的问题。
情感态度价值观目标:1. 学生对编程产生兴趣,培养持续学习的热情;2. 学生在游戏设计中,学会尊重原创,树立正确的知识产权意识;3. 学生通过团队协作,培养沟通能力、合作精神以及解决问题的能力。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立完成飞机大战游戏的框架设计;2. 学生能够运用所学的编程知识,实现游戏的基本功能;3. 学生能够在游戏中融入创新元素,提升游戏的可玩性;4. 学生通过团队协作,共同优化游戏性能,提高游戏品质;5. 学生在课程结束后,能够总结并分享自己在游戏设计过程中的经验与收获。
二、教学内容本课程依据课程目标,结合教材内容,制定以下教学大纲:1. 游戏设计原理与流程- 游戏设计基本概念- 游戏开发流程:需求分析、设计、开发、测试与优化- 教材章节:第1章 游戏设计概述2. 编程基础与游戏开发- 编程语言选择:Python、Scratch等- 控制结构:顺序、循环、条件判断- 函数与模块:自定义函数、模块调用- 教材章节:第2章 编程基础、第3章 函数与模块3. 飞机大战游戏开发- 游戏角色设计:玩家飞机、敌机、子弹等- 游戏场景设计:背景、障碍物等- 游戏逻辑实现:移动、射击、碰撞检测等- 教材章节:第4章 游戏角色与场景设计、第5章 游戏逻辑实现4. 团队协作与项目实践- 项目分组与分工- 团队沟通与协作- 项目进度控制与调整- 教材章节:第6章 团队协作与项目管理5. 游戏测试与优化- 游戏性能测试:速度、稳定性等- 游戏体验优化:界面、音效、操作等- 教材章节:第7章 游戏测试与优化教学内容安排与进度:1-2课时:游戏设计原理与流程、编程基础3-4课时:飞机大战游戏开发5-6课时:团队协作与项目实践7-8课时:游戏测试与优化三、教学方法本课程将采用多样化的教学方法,以激发学生的学习兴趣和主动性,主要包括以下几种:1. 讲授法:- 在课程初期,通过讲授法向学生介绍游戏设计的基本原理、编程基础等理论知识,为学生奠定扎实的理论基础。
飞机大战实训报告总结
一、实训背景随着计算机技术的飞速发展,游戏开发已成为计算机科学与技术领域的一个重要分支。
为了提高学生的实践能力,加强理论知识与实际应用的结合,我们学院开展了飞机大战实训课程。
本次实训旨在让学生通过实际编程,了解并掌握游戏开发的基本流程和常用技术,培养学生的团队协作能力和创新意识。
二、实训内容1. 实训目标(1)掌握游戏开发的基本流程和常用技术;(2)熟悉游戏编程环境,提高编程能力;(3)培养团队协作能力和创新意识。
2. 实训内容(1)游戏设计:包括游戏背景、角色、场景、音效等;(2)游戏编程:使用C++、C#等编程语言进行游戏开发;(3)游戏测试:对游戏进行功能测试、性能测试和兼容性测试;(4)游戏优化:对游戏进行性能优化和用户体验优化。
三、实训过程1. 阶段一:需求分析与设计在实训初期,我们首先对飞机大战游戏进行了需求分析,明确了游戏的基本功能和性能指标。
然后,我们根据需求设计游戏的整体架构,包括游戏界面、角色、场景、音效等。
2. 阶段二:编程实现在编程实现阶段,我们采用模块化设计,将游戏分为多个模块,如游戏主界面、角色控制、敌机生成、子弹发射、碰撞检测等。
我们使用C++、C#等编程语言进行编程,实现了游戏的基本功能。
3. 阶段三:游戏测试与优化在游戏测试阶段,我们对游戏进行了功能测试、性能测试和兼容性测试,确保游戏在各个平台和设备上都能正常运行。
在游戏优化阶段,我们对游戏进行了性能优化和用户体验优化,提高了游戏的运行速度和可玩性。
4. 阶段四:团队协作与交流在实训过程中,我们注重团队协作,定期召开团队会议,讨论遇到的问题和解决方案。
我们还与其他团队交流心得,学习他们的优秀经验。
四、实训成果1. 完成了一款具有基本功能的飞机大战游戏;2. 提高了学生的编程能力和团队协作能力;3. 培养了学生的创新意识和解决问题的能力。
五、实训体会1. 理论与实践相结合:通过本次实训,我们深刻体会到理论知识与实践应用的重要性,只有将二者相结合,才能提高自己的能力。
飞机大战实训报告
程序设计综合实践报告姓名学号飞机大战班级项目名称11.22—12.4实习地点实习时间实习成绩指导教师签字信息科学与工程学院2015年12月04日目录1概述 (3)2相关技术 (3)3需求分析 (7)3.1功能需求分析 (7)3.2数据需求分析 (8)3.3行为需求分析 (8)3.4其他需求 (9)4总体设计与详细设计 (10)4.1系统模块划分 (10)4.2主要功能模块 (10)4.3扩展功能设计思路 (12)4.4软件结构设计体会 (13)5编码实现 (13)6测试情况说明 (19)6.1战机移动及子弹发射模块测试 (19)6.2爆炸模块测试 (19)7. 实训中遇到的主要问题及解决方法 (20)8. 实训收获与体会 (21)9.济南参观体会 (21)1. 概述这次实训主要做的项目是飞机大战,主要实现的功能包括:战机敌机BOSS可以发射导弹,其中战机发射导弹通过键盘上的空格键发射,敌机的导弹通过判断与战机的距离来自动发射,BOSS的导弹是一直产生的,对战机进行扫射。
战机导弹与敌机相撞,战机与敌机相撞,敌机导弹与战机相撞,战机导弹与BOSS相撞,战机与BOSS相撞都能实现爆炸效果。
战机通过方向键控制自由移动且不飞出程序边界,战机具有一定的初始左右上下移动的速度,玩家可以设置战机的速度控制战机的移动。
敌机可根据随机函数随机产生,且屏幕的上下方飞入,大Boss可以随着战机移动,或者是实现自己的移动,客机从屏幕的右方向左移动,客机上载着小人,战机攻打客机可以打死小人,小人将从客机上坠落。
战机具有吃生命值的功能,游戏过程中会随机往下掉落生命值,战机吃了之后,生命值会上升。
战机具有一定的大招,使用大招时战机可以发射导弹,但是其他的不能来攻打战机,战机可以通过使用大招来进行破关。
游戏背景可以移动,这样战机相对于背景来说是相对运动的,结束界面包括游戏胜利的界面和失败的界面。
游戏有各个关卡的划分,实现达到一定的条件可以实现升级,最后到达一定程度游戏结束。
飞机大战实验报告
飞机大战实验报告专业:网络工程132班学号:姓名:孙仁强计算机科学与技术学院二零一六年十二月一、软件运行所需要的软硬件环境?本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。
?本机器的配置如下:?处理器:CORE i7?主频:1.2Hz以上?内存:4G以上?硬盘:HHD?50G编程语言:Java?开发环境:windows7?开发软件:Eclipse?Mars二、游戏流程1.用户打开游戏,进入开始菜单。
?2.用户点击开始游戏按钮,进入游戏界面;?3.用户通过触屏方式控制玩家飞机上下左右移动,躲避与子弹相撞;?4.游戏失败后,显示本次游戏得分,用的秒数和水平;?5.退出游戏三、主要代码1、准备代码设置窗口使用双缓冲使飞机不闪烁Constant设置窗口大小package com.ahut.准备代码;public class Constant {public static final int GAME_WIDTH = 350;public static final int GAME_HEIGHT = 600;}package com.ahut.准备代码;public class GameUtil {private GameUtil () {}public static Image getImage(String path) {BufferedImage bi = null;try {} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bi;}}package com.ahut.准备代码;public class MyFrame extends Frame{public void lauchFrame() {setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);setLocation(100, 100);setVisible(true);new PaintThread().start();addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}private Image offScreenImage = null;public void update(Graphics g) {if (offScreenImage == null)offScreenImage = this.createImage(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);Graphics gOff = offScreenImage.getGraphics();paint(gOff);g.drawImage(offScreenImage, 0, 0, null);}class PaintThread extends Thread {public void run() {while (true) {repaint();try {Thread.sleep(40);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}主代码飞机:import com.ahut.准备代码.GameUtil;public class Plane extends GameObject {private boolean left, up, right, down;private boolean live = true;public void draw(Graphics g) {if (live) {g.drawImage(img, (int)x, (int)y, null);move();}}public void addDirection(KeyEvent e) {switch (e.getKeyCode()) {case KeyEvent.VK_LEFT: //左left = true; break;case KeyEvent.VK_UP: //上up = true; break;case KeyEvent.VK_RIGHT: //右right = true; break;case KeyEvent.VK_DOWN: //下down = true; break;default: break;}}public void minusDirection(KeyEvent e) {switch (e.getKeyCode()) {case KeyEvent.VK_LEFT: //左left = false; break;case KeyEvent.VK_UP: //上up = false; break;case KeyEvent.VK_RIGHT: //右right = false; break;case KeyEvent.VK_DOWN: //下down = false; break;default: break;}}public void move() {if (left) {x -= speed;}if (right) {x += speed;}if (up) {y -= speed;}if (down) {y += speed;}}public Plane(String imgpath, double x, double y) { this.img = GameUtil.getImage(imgpath);this.width = img.getWidth(null);this.height = img.getHeight(null);this.x = x;this.y = y;}public Plane() {}public void setLive(boolean live) {this.live = live;}public boolean isLive() {return live;}}子弹:import com.ahut.准备代码.Constant;public class Bullet extends GameObject {double degree;public Bullet() {degree = Math.random() * Math.PI * 2;x = Constant.GAME_WIDTH / 2;y = Constant.GAME_HEIGHT / 2;width = 10;height = 10;}public Rectangle getRect() {return new Rectangle((int)x, (int)y, width, height);}public void draw(Graphics g) {Color oldColor = g.getColor();g.setColor(Color.yellow);g.fillOval((int)x, (int)y, width, height);x += speed * Math.cos(degree);y += speed * Math.sin(degree);if (y > Constant.GAME_HEIGHT - height || y < 30) {degree = -degree;}if (x < 0 || x > Constant.GAME_WIDTH - width) {degree = Math.PI - degree;}g.setColor(oldColor);}}游戏对象:public class GameObject {Image img;double x,y;int speed=5;int width,height;public Rectangle getRect() {return new Rectangle((int)x, (int)y, width, height);}public GameObject(Image img, double x, double y, int speed, int width,int height) {super();this.img = img;this.x = x;this.y = y;this.speed = speed;this.width = width;this.height = height;}public GameObject() {}}主线程import com.ahut.准备代码.GameUtil;import com.ahut.准备代码.MyFrame;public class PlaneGameFrame extends MyFrame {Image bg = GameUtil.getImage("image/ped.jpg");Plane p = new Plane("image/plane.png", 50, 50);ArrayList bulletList = new ArrayList();Date startTime;Date endTime;public void paint(Graphics g) {g.drawImage(bg, 0, 0, null);p.draw(g);//在这里画子弹for (int i = 0; i < bulletList.size(); i++) {Bullet b = (Bullet)bulletList.get(i);b.draw(g);//检测跟飞机的碰撞boolean peng = b.getRect().intersects(p.getRect());if (peng) {p.setLive(false);break;}}if (!p.isLive()) {int period = ((int)endTime.getTime() - (int)startTime.getTime()) / 1000; //转换成秒printInfo(g, "时间: " + period + "秒", 20, 115, 300, Color.white);switch (period / 10) {case 0:case 1:printInfo(g, "菜鸟", 40, 115, 270, Color.white);break;case 2:printInfo(g, "入门", 40, 115, 270, Color.yellow);break;case 4:printInfo(g, "精通", 40, 115, 270, Color.white);break;case 5:printInfo(g, "大师", 40, 115, 270, Color.white);break;}}// printInfo(g, "分数: 100", 10, 50, 50, Color.yellow);}public void printInfo(Graphics g, String str, int size, int x, int y, Color color) { Color c = g.getColor();g.setColor(color);Font f = new Font("宋体", Font.BOLD, size);g.setFont(f);g.drawString(str, x, y);g.setColor(c);}public void launchFrame() {uchFrame();addKeyListener(new KeyMonitor());for (int i = 0; i < 10; i++) {Bullet b = new Bullet();bulletList.add(b);}startTime = new Date();}class KeyMonitor extends KeyAdapter {@Overridepublic void keyPressed(KeyEvent e) {p.addDirection(e);}@Overridepublic void keyReleased(KeyEvent e) {p.minusDirection(e);}}public static void main(String[] args) {new PlaneGameFrame().launchFrame();}}四、游戏实现截图五、实验总结JAVA和EclipsexMars是一款非常好的面向对象开发语言和平台,通过这一段时间的JAVA程序开发,我感觉到尽管的是不同的语言和平台,开发程序一样需要动脑和努力,每一款软件或者游戏都不是一朝一夕能制作出的,都需要大量的构思和编程,学习好软件工程这门课对日后的编程很有用,最后还有繁琐的调试检查运行时的错误,通过这次接触JAVA我今后会更努力的学习它。
c语言飞机大战实践报告
c语言飞机大战实践报告C语言飞机大战实践报告引言:飞机大战是一款经典的游戏,它让玩家扮演一架战斗机,在天空中与敌人进行激烈的战斗。
本报告将详细介绍我们实践过程中所采取的步骤和方法,以及所遇到的挑战和解决方案。
第一部分:项目准备在开始编写代码之前,我们首先进行了项目准备工作。
我们使用C语言作为开发语言,并使用了一个基本的图形库来实现游戏画面的显示。
我们选择了一个简单的控制台窗口来作为游戏的界面,这样我们可以利用图形库提供的函数来绘制游戏场景和玩家的飞机。
第二部分:项目架构在开始编写代码之前,我们进行了项目架构的设计。
我们将游戏分为几个模块,每个模块负责不同的功能。
首先是游戏引擎模块,它负责处理游戏的主流程,包括初始化游戏界面、接收用户输入、更新游戏状态和绘制游戏画面。
然后是游戏逻辑模块,它负责实现游戏的逻辑规则,比如玩家和敌人的移动、碰撞检测和计分等。
最后是图形绘制模块,它负责将游戏逻辑模块的数据转换成图形数据,并在界面上进行绘制。
第三部分:编写代码在完成项目架构设计后,我们开始编写代码。
首先是游戏引擎模块的实现,我们使用了一个循环来不断更新游戏状态和绘制游戏画面。
然后是游戏逻辑模块的实现,我们使用了一些基本的算法来处理玩家和敌人的移动和碰撞检测。
最后是图形绘制模块的实现,我们使用了图形库提供的函数来实现游戏画面的绘制。
第四部分:调试和优化在完成代码编写后,我们进行了调试和优化工作。
我们通过测试不同的输入和场景来验证代码的正确性,并修复了一些错误和bug。
此外,我们还尝试优化代码的性能,使游戏的运行更加流畅和稳定。
第五部分:心得体会通过这次实践,我们学到了很多关于C语言和游戏开发的知识。
我们了解到C语言是一种非常强大和灵活的编程语言,可以用来实现各种不同的应用程序。
同时,我们也体会到了游戏开发的复杂性和挑战性,需要综合运用各种不同的技术和算法来实现一个完整的游戏。
结论:通过这次实践,我们成功地完成了一款简单的C语言飞机大战游戏。
飞机大战游戏设计实验(山科大)
程序设计综合实践报告姓名学号班级计算机科学与技术项目名称飞机大战游戏设计实验实习地点实习时间实习成绩指导教师签字信息科学与工程学院2015年7月25日目录1. 概述 (3)2. 相关技术 (3)2.1CObList链表 (3)2.2获取矩形区域函数 (3)2.3添加爆炸效果函数 (4)2.4弹出对话框函数 (4)2.5字体的输出 (4)2.7游戏隐形模式的实现 (4)2.8设置定时器 (4)2.9双缓冲技术 (5)2.10滚屏的实现 (5)3. 总体设计与详细设计 (5)3.1 系统模块划分 (5)3.2 主要功能模块 (6)4. 编码实现 (6)5. 实训中遇到的主要问题及解决方法 (24)6. 实训体会 (24)1. 概述飞机大战游戏是在Microsoft Visual Studio编程软件的MFC环境下制作的一款桌面游戏,界面简洁流畅、游戏方式简单。
游戏主要实现的功能和规则如下:(1)利用键盘中的上下左右键控制我方战机,空格键发射子弹。
战机生命值初始为5,血量初始值为100。
(2)屏幕上方随机产生敌机,战机产生的数量和当前玩家的等级有关,等级越高,产生的敌机越多,游戏难度越大。
而且敌机产生的位置和速度是不确定的。
只有当我机位于敌机下方时,敌机才会产生子弹,默认情况下是不发射任何子弹的。
(3)每个关卡都会产生BOSS,BOSS横向移动,生命值200。
战机和BOSS同时存在时,BOSS发射子弹。
(4)战机子弹打中敌机,敌机就会爆炸,同时玩家分数会增加1分,战机子弹打中BOSS,BOSS生命值减1,每得100分并且杀死BOSS过关。
2. 相关技术2.1CObList链表在本程序中使用了CObList链表来分别存储敌机,炸弹,导弹,爆炸效果。
CobList类似于一个双向链表,POSITION类型的变量为链表的键。
使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。
飞机大战实训报告总结java -回复
飞机大战实训报告总结java -回复Java实训报告总结:飞机大战实训一、引言飞机大战是一款经典的游戏,其核心玩法是玩家操控飞机进行战斗,消灭敌机并击败关卡Boss。
为了学习和掌握Java编程语言的基本语法和面向对象编程的思想,我们进行了飞机大战实训项目。
本文将对该实训项目进行总结和归纳,详细介绍实训的过程和各个模块的设计与实现。
二、项目概述1. 项目背景飞机大战实训项目是为了让我们学习和运用Java编程语言的基础知识和面向对象的思想,掌握基本的游戏开发技能。
2. 项目目标通过实践,达到以下目标:(1) 熟悉Java编程语言的基本语法和面向对象编程的思想;(2) 掌握游戏开发的基本流程和常用技术;(3) 实践团队协作与沟通能力;(4) 提升问题解决能力和编程实际操作能力。
三、项目实施1. 分析与设计项目开始前,我们小组成员进行了对游戏需求的分析与设计。
首先,明确了游戏的基本功能模块和玩法规则。
然后,我们绘制了UML类图,定义了所需要的各个类及其之间的关系。
这一步骤对于后续的开发工作具有重要的指导意义。
2. 编码实现根据分析与设计的结果,我们开始进行编码实现。
首先,我们搭建了项目的基础框架,包括游戏窗口和图像资源的加载。
然后,我们根据UML类图中的定义,依次实现了飞机、子弹、敌机、Boss等各个类及其相关的功能方法。
编码过程中,我们注意代码的规范性和可读性,并进行了适当的功能封装和模块化设计。
3. 调试与测试在编码完成后,我们进行了代码的调试与测试。
首先,我们保证游戏的基本功能能够正常运行,包括飞机的移动、子弹的发射和敌机的生成等。
然后,我们对各个功能模块和类进行了逐一测试,修复了发现的问题和bug。
最后,我们对游戏进行了全面性能测试,确保游戏在各种情况下都能够稳定运行。
4. 优化与改进在游戏的调试与测试过程中,我们也发现了一些性能问题和改进的空间。
我们对游戏逻辑进行了优化,采用了线程池对敌机的生成和移动进行了控制,提高了游戏的性能和流畅度。
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. 概述..................................................1. 概述这次实训,目的以VS 为环境,利用MFC,使用C++语言编写一个简单的飞机大战游戏。
实现的主要功能:1.有开始游戏界面,上下左右键控制飞机自由移动,空格键发射炮弹。
2.设有关卡,每打完一个boss就会过关,每过一关战机炮弹会升级,敌机随机发射子弹数量增加。
3.战机起始十条命,可以通过过关和吃到道具增加血量。
4.战机子弹打中敌机,敌机就会爆炸,boss血量随关卡升高而增多,打败敌机或者boss会有分数加成。
5.设有无敌模式和普通模式,无敌模式大招无限,生命无限,战机导弹直接升至最高等级。
2. 相关技术碰撞检测用CRect类的GetRect()函数可以获得当前对象的矩形区域, IntersectRect()并用此函数判断二者是否碰撞。
CObList链表这个程序使用CObList链表来存储各效果。
CobList类似于一个双向链表,POSITION 类型的变量为链表的键。
使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。
我们可以通过获得某元素的POSITION来访问它。
本程序中主要用到的函数有:GetHeadPosition():获取链表首元素的POSITION;AddTail():将新的元素添加到链表最后;GetNext( POSITION& rPosition ):使rPosition指向下一个元素。
设置定时器SetTimer()函数来设置定时器。
背景滚动为了让游戏场景更加逼真,游戏节奏更加合理,可以通过让背景滚动来提高游戏的场景效应,实现这一技术时,可以将一张背景图片复制为2张,从上到下连续的拼接在一起,使其不会出现图片的卡顿和瞬移现象。
内存释放技术这个程序中有大量的地方需要使用内存,如果不及时删除会出现闪图等情况,容易导致程序崩溃,要及时释放内存资源。
飞机大战游戏设计与实现
程序设计综合实践报告姓名学号班级项目名称飞机大战游戏设计与实现实习地点计算机实验室实习时间2015—12-9至2015—12—19实习成绩指导教师签字信息科学与工程学院2015年12月20日目录1. 概述 (1)1.1 关卡设置 (1)1。
2 敌机设置 (1)1.3 战机设置 (1)1。
4 游戏设置 (1)2。
相关技术 (2)2.1 Windows定时器技术 (2)2.2 双缓冲技术 (2)2。
3 获取矩形区域 (2)3。
总体设计与详细设计 (2)3.1 系统模块划分 (2)3.2 主要功能模块 (3)4。
编码实现 (4)4。
1 初始准备 (4)4.2 战机对象 (6)4.3 敌机对象 (7)4。
4 道具对象 (9)4。
5 主要内容 (10)4。
6 窗口显示信息 (18)5。
实训中遇到的主要问题及解决方法 (20)5。
1 产生中断及解决方案 (20)5。
2 图片闪烁问题及解决方案 (20)6. 实训体会 (20)1。
概述项目:飞机大战主要功能有以下几点:1.1 关卡设置本次飞机大战游戏中共设置了四个关卡,第一关的难度设置较低,仅有敌机对其进行攻击;第二关在原有的基础上增加一些补血的小道具,当积分达到一定的时候便会出现该道具,并且敌机出现的频率也比第一关高;第三关在第二关的基础上新出现了小boss,并增加了其他的道具;第四关在第三关的基础上再新出现大boss,当积分达到要求以及大boss被消灭后通关成功。
1。
2 敌机设置小敌机随机出现,炮弹也随机发射,当小敌机与战机相撞或被战机的子弹击中时,小敌机消失。
当达到一定积分时,小boss出现并随机发射出与小敌机一样的炮弹,但是炮弹分三个方向发射出.当小boss被战机的子弹击中或与战机相撞时失去5滴血。
当到达四关并且积分足够多时出现大boss,同小boss一样,当大boss与战机相撞或被战机子弹击中时失去1滴血。
除此之外,小boss和大boss上方都有血条显示,当血条消失时意味着生命消失,大boss和小boss消失.小boss会在屏幕上随机出现和走动出了屏幕后会在屏幕的任意地方再随机出现,直至血量为0消失.大boss则在屏幕中随机走动不出屏幕,直至血量为0消失。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
飞机大战实验报告专业:网络工程132班学号:*********姓名:孙**计算机科学与技术学院二零一六年十二月一、软件运行所需要的软硬件环境本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。
本机器的配置如下:处理器:CORE i7主频:1.2Hz以上内存:4G以上硬盘:HHD50G编程语言:Java开发环境:windows7开发软件:Eclipse Mars二、游戏流程1.用户打开游戏,进入开始菜单。
2.用户点击开始游戏按钮,进入游戏界面;3.用户通过触屏方式控制玩家飞机上下左右移动,躲避与子弹相撞;4.游戏失败后,显示本次游戏得分,用的秒数和水平;5.退出游戏三、主要代码1、准备代码设置窗口使用双缓冲使飞机不闪烁Constant设置窗口大小package com.ahut.准备代码;public class Constant {public static final int GAME_WIDTH = 350;public static final int GAME_HEIGHT = 600;}package com.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) {BufferedImage bi = null;try {URL u = GameUtil.class.getClassLoader().getResource(path);bi = javax.imageio.ImageIO.read(u);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bi;}}package com.ahut.准备代码;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class MyFrame extends Frame{public void lauchFrame() {setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);setLocation(100, 100);setVisible(true);new PaintThread().start();addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}private Image offScreenImage = null;public void update(Graphics g) {if (offScreenImage == null)offScreenImage = this.createImage(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);Graphics gOff = offScreenImage.getGraphics();paint(gOff);g.drawImage(offScreenImage, 0, 0, null);}class PaintThread extends Thread {public void run() {while (true) {repaint();try {Thread.sleep(40);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}主代码飞机:package com.ahut.plane;import java.awt.Graphics;import java.awt.event.KeyEvent;import com.ahut.准备代码.GameUtil;public class Plane extends GameObject {private boolean left, up, right, down;private boolean live = true;public void draw(Graphics g) {if (live) {g.drawImage(img, (int)x, (int)y, null);move();}}public void addDirection(KeyEvent e) {switch (e.getKeyCode()) {case KeyEvent.VK_LEFT: //左left = true; break;case KeyEvent.VK_UP: //上up = true; break;case KeyEvent.VK_RIGHT: //右right = true; break;case KeyEvent.VK_DOWN: //下down = true; break;default: break;}}public void minusDirection(KeyEvent e) {switch (e.getKeyCode()) {case KeyEvent.VK_LEFT: //左left = false; break;case KeyEvent.VK_UP: //上up = false; break;case KeyEvent.VK_RIGHT: //右right = false; break;case KeyEvent.VK_DOWN: //下down = false; break;default: break;}}public void move() {if (left) {x -= speed;}if (right) {x += speed;}if (up) {y -= speed;}if (down) {y += speed;}}public Plane(String imgpath, double x, double y) { this.img = GameUtil.getImage(imgpath);this.width = img.getWidth(null);this.height = img.getHeight(null);this.x = x;this.y = y;}public Plane() {}public void setLive(boolean live) {this.live = live;}public boolean isLive() {return live;}}子弹:package com.ahut.plane;import java.awt.Color;import java.awt.Graphics;import java.awt.Rectangle;import com.ahut.准备代码.Constant;public class Bullet extends GameObject {double degree;public Bullet() {degree = Math.random() * Math.PI * 2;x = Constant.GAME_WIDTH / 2;y = Constant.GAME_HEIGHT / 2;width = 10;height = 10;}public Rectangle getRect() {return new Rectangle((int)x, (int)y, width, height);}public void draw(Graphics g) {Color oldColor = g.getColor();g.setColor(Color.yellow);g.fillOval((int)x, (int)y, width, height);x += speed * Math.cos(degree);y += speed * Math.sin(degree);if (y > Constant.GAME_HEIGHT - height || y < 30) {degree = -degree;}if (x < 0 || x > Constant.GAME_WIDTH - width) {degree = Math.PI - degree;}g.setColor(oldColor);}}游戏对象:package com.ahut.plane;import java.awt.Image;import java.awt.Rectangle;public class GameObject {Image img;double x,y;int speed=5;int width,height;public Rectangle getRect() {return new Rectangle((int)x, (int)y, width, height);}public GameObject(Image img, double x, double y, int speed, int width,int height) {super();this.img = img;this.x = x;this.y = y;this.speed = speed;this.width = width;this.height = height;}public GameObject() {}}主线程package com.ahut.plane;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Image;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.ArrayList;import java.util.Date;import com.ahut.准备代码.GameUtil;import com.ahut.准备代码.MyFrame;public class PlaneGameFrame extends MyFrame {Image bg = GameUtil.getImage("image/ped.jpg");Plane p = new Plane("image/plane.png", 50, 50);ArrayList bulletList = new ArrayList();Date startTime;Date endTime;public void paint(Graphics g) {g.drawImage(bg, 0, 0, null);p.draw(g);//在这里画子弹for (int i = 0; i < bulletList.size(); i++) {Bullet b = (Bullet)bulletList.get(i);b.draw(g);//检测跟飞机的碰撞boolean peng = b.getRect().intersects(p.getRect());if (peng) {p.setLive(false);break;}}if (!p.isLive()) {int period = ((int)endTime.getTime() - (int)startTime.getTime()) / 1000; //转换成秒printInfo(g, "时间: " + period + "秒", 20, 115, 300, Color.white);switch (period / 10) {case 0:case 1:printInfo(g, "菜鸟", 40, 115, 270, Color.white);break;case 2:printInfo(g, "入门", 40, 115, 270, Color.yellow);break;case 4:printInfo(g, "精通", 40, 115, 270, Color.white);break;case 5:printInfo(g, "大师", 40, 115, 270, Color.white);break;}}// printInfo(g, "分数: 100", 10, 50, 50, Color.yellow);}public void printInfo(Graphics g, String str, int size, int x, int y, Color color) { Color c = g.getColor();g.setColor(color);Font f = new Font("宋体", Font.BOLD, size);g.setFont(f);g.drawString(str, x, y);g.setColor(c);}public void launchFrame() {uchFrame();addKeyListener(new KeyMonitor());for (int i = 0; i < 10; i++) {Bullet b = new Bullet();bulletList.add(b);}startTime = new Date();}class KeyMonitor extends KeyAdapter {@Overridepublic void keyPressed(KeyEvent e) {p.addDirection(e);}@Overridepublic void keyReleased(KeyEvent e) {p.minusDirection(e);}}public static void main(String[] args) {new PlaneGameFrame().launchFrame();}}四、游戏实现截图五、实验总结JAVA和EclipsexMars是一款非常好的面向对象开发语言和平台,通过这一段时间的JAVA 程序开发,我感觉到尽管的是不同的语言和平台,开发程序一样需要动脑和努力,每一款软件或者游戏都不是一朝一夕能制作出的,都需要大量的构思和编程,学习好软件工程这门课对日后的编程很有用,最后还有繁琐的调试检查运行时的错误,通过这次接触JAVA我今后会更努力的学习它。