山东科技大学飞机大战课题报告
- 格式:doc
- 大小:244.07 KB
- 文档页数:27
(完整版)飞机大战--毕业论文--初稿毕业设计(论文)题目:基于安卓平台的飞机大战游戏学院:计算机科学学院专业班级:计算机科学与技术10级2班指导教师:黄国兵职称:高级工程师学生姓名:赵兵摘要自从第一台计算机研发以来,计算机行业得到了迅速的发展,成就了很多优秀的企业,例如国外的IBM,微软,GOOGLE,ARM,苹果等,国内的腾讯,阿里巴巴,百度等,而引领计算机行业的主要因素除了硬件的支撑外,就数操作系统了,而操作系统从Dos,UNIX,LINUX Windows等PC端正在逐渐向移动端转变如:从Linux到Android;从Unix到IOS;从Windows到Windows phone,主要还是因为移动端的便携性,轻巧性深受人们的喜爱,就在这样的移动互联网浪潮中,Android系统更是高达移动端操作系统80%的占有率,真可谓前景无限,而在Android平台的应用中游戏业务又占着最大的比例,所以本次选题为基于Android的飞机大战游戏,其主要目的研究移动互联网的发展趋势,对其未来的发展有深刻清晰的认识。
本论文主要阐述以面向对象的程序开发语言Java及Eclipse为开发工具,而基于智能手机Android系统之上的飞机大战游戏。
首先简要介绍课题的研究背景、目的及意义,Android的发展历程、当前国内外的发展现状。
然后介绍了Android平台开发环境及环境搭建,最后讲述了基于Android飞机大战游戏功能的实现。
其功能模块如下:提供敌机的类模块,提供子弹的类模块,主界面模块,天空背景模块,检测子弹与敌机碰撞模块,检测,敌机与我拥有的战机碰撞木块等,除此以外还为用户提供更加人性化的设计和方便人员的操作流程。
由于Android逐渐成为智能手机技术的主导,相信其基于Android的飞机大战游戏将会受到更大的欢迎。
关键字:安卓,游戏,飞行射击,飞机ABSTRACTSince the first computer researched and development , the computer industry rapid development , that made a lot of excellent enterprise , such as : IBM , Microsoft , Google , ARM , Apple inc In a foreign country ; T encent , Alibaba Group , Baidu In the domestic . Led by the computer industry in addition to factors for operating system . And the operating system from Dos, UNIX, LINUX, Windows PC correct is gradually to mobile terminal such as: LINUX - > Android. Unix - > IOS; Windows - > Windows phone, mostly because the mobile end portability, and was deeply loved by people, in this kind of mobile Internet, in the tide of the Android system is as the application of the Android platform gamebusiness accounts for the largest proportion, so this topic is based on the Android plane war game, the development trend of mobile Internet, the main objective for its future development are clear understanding.This thesis mainly expounds Java with object oriented programming language and Eclipse as the development tool, and the plane based on the intelligent mobile phone Android war games. First briefly introduced the research background, purpose and significance, the development of Android, the current domestic and foreign development present situation.And then introduced the Android platform development environment andthe environment, finally tells the story of the realization of the function of Android plane war games. Its function module isas follows: enemy planes flying in and out of class module, provides the bullet class module, main interface module, the sky background module, detect bullet collision withthe enemy aircraft module, detection, the enemy aircraft crash with my own wood, etc., in addition also provides users with more and convenient operation. Because the Android smartphone technology Android will be more welcome.KEY WORDS: Android, Game,Flight shooter,Airplane目录第1章绪论 (1)1.1 系统研究的背景及意义 (1)1.2 国内外的发展现状 (1)1.3 主要研究的内容 (2)1.4 本文的组织结构 (2)1.5 本章小结 (3)第2章用户需求分析 (4)2.1系统的架构描述 (4)2.2 系友好的用户界面 (5)2.3技术选型 (6)2.4系统的开发环境 (6)2.5 关键技术和工具简介 (7)2.6 本章小节 (8)第3章系统概要设计 (9)3.1 模块的划分 (9)3.1.1 软件模块设计 (9)3.1.2 软件功能模块 (10)3.2 主界面设计 (12)3.3 游戏界面设计 (13)3.4 系统包及其资源规划 (13)3.4.1 系统包管理如下 (13)3.4.2 Sqlite数据库 (14)3.4.3 Runable接口以及与Thread的区别 (16)3.5 本章小结 (20)第4章系统功能的实现 (21)4.1 主界面的功能实现 (21)4.1 游戏界面的功能实现 (26)4.3 子弹类的设计 (39)4.3 敌机类的设计 (40)4.5本章小结 (42)第5章系统测试 (43)5.1 软件测试的概念 (43)5.2 系统的功能和安全测试 (43)5.3 测试总结 (45)第6章总结 (46)致谢 (47)参考文献 (48)第1章绪论1.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随机生成。
游戏中随机出现四种道具:血包:可以恢复一定的血量。
护盾:一段时间内无敌。
武器升级:升级玩家的武器,共三个等级。
僚机:获得一个僚机。
2. 相关技术2.1 碰撞检测游戏中需要处理一系列的碰撞,在处理碰撞时,可以认为每个对象是与位图大小相同的矩形,用Crect类的GetRect函数获取我方战机的矩形与敌机子弹矩形,然后新建一个矩形并且调用IntersectRect(&bRect,mRect)再用if条件语句判断,若矩形区域重叠不为空,则视为碰撞,在if语句中填写实现碰撞后的功能。
经典实验--飞机⼤战⼩游戏·⼀、需求设计 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表⽰敌⼈战机的位置。
飞机大战游戏模块设计报
告
Final approval draft on November 22, 2020
飞机大战游戏
模块设计报告
青岛软件园软件人力资源服务有限公司
实训服务中心
版本历史
目录
0. 文档介绍
文档目的
指导模块编码人员编码。
文档范围
模块功能介绍及实现要求读者对象
模块编码人员
参考文献
术语与缩写解释
1. 模块命名规则
2. 模块汇总
模块汇总表
UML活动图
类体系
3. 游戏规则子系统人工智能
3游戏对象子系统应用程序对象
游戏对象
战机对象
敌机对象
导弹对象
炸弹对象
爆炸对象
文字对象。
毕业设计(论文)题目:基于安卓平台的飞机大战游戏学院:计算机科学学院专业班级:计算机科学与技术10级2班指导教师:黄国兵职称:高级工程师学生:兵学号:***********摘要自从第一台计算机研发以来,计算机行业得到了迅速的发展,成就了很多优秀的企业,例如国外的IBM,微软,GOOGLE,ARM,苹果等,国的腾讯,阿里巴巴,百度等,而引领计算机行业的主要因素除了硬件的支撑外,就数操作系统了,而操作系统从Dos,UNIX,LINUX Windows等PC端正在逐渐向移动端转变如:从Linux 到Android;从Unix到IOS;从Windows到Windows phone,主要还是因为移动端的便携性,轻巧性深受人们的喜爱,就在这样的移动互联网浪潮中,Android系统更是高达移动端操作系统80%的占有率,真可谓前景无限,而在Android平台的应用中游戏业务又占着最大的比例,所以本次选题为基于Android的飞机大战游戏,其主要目的研究移动互联网的发展趋势,对其未来的发展有深刻清晰的认识。
本论文主要阐述以面向对象的程序开发语言Java及Eclipse为开发工具,而基于智能手机Android系统之上的飞机大战游戏。
首先简要介绍课题的研究背景、目的及意义,Android的发展历程、当前国外的发展现状。
然后介绍了Android 平台开发环境及环境搭建,最后讲述了基于Android飞机大战游戏功能的实现。
其功能模块如下:提供敌机的类模块,提供子弹的类模块,主界面模块,天空背景模块,检测子弹与敌机碰撞模块,检测,敌机与我拥有的战机碰撞木块等,除此以外还为用户提供更加人性化的设计和方便人员的操作流程。
由于Android 逐渐成为智能手机技术的主导,相信其基于Android的飞机大战游戏将会受到更大的欢迎。
关键字:安卓,游戏,飞行射击,飞机ABSTRACTSince the first computer researched and development , the computer industry has been rapid development , that made a lot of excellent enterprise , such as : IBM , Microsoft , Google , ARM , Apple inc In a foreign country ; Tencent , Alibaba Group , Baidu In the domestic . Led by the computer industry in addition to hardware support, the main factors for operating system . And the operating system from Dos, UNIX, LINUX, Windows PC correct is gradually to mobile terminal such as: LINUX - > Android. Unix - > IOS; Windows - > Windows phone, mostly because the mobile end portability, and was deeply loved by people, in this kind of mobile Internet, in the tide of the Android system is as high as 80% of mobile terminal operating system share, really unlimited prospects, and in the application of the Android platform game business accounts for the largest proportion, so this topic is based on the Android plane war game, the development trend of mobile Internet, the main objective for its future development are clear understanding.This thesis mainly expounds Java with object oriented programming language and Eclipse as the development tool, and the plane based on the intelligent mobile phone Android war games. First briefly introduced the research background, purpose and significance, the development of Android, the current domestic and foreign development present situation. And then introduced the Android platform development environment and the environment, finally tells the story of the realization of the function of Android plane war games. Its function module is as follows: enemy planes flying in and out of class module, provides the bullet class module, main interface module, the sky background module, detect bullet collision with the enemy aircraft module, detection, the enemy aircraft crash with my own wood, etc., in addition also provides users with more humanized design and convenient operation. Because the Android smartphone technology has become the dominant gradually, believe that the planewar game based on Android will be more welcome.KEY WORDS: Android, Game,Flight shooter,Airplane目录第1章绪论 (1)1.1 系统研究的背景及意义 (1)1.2 国外的发展现状 (1)1.3 主要研究的容 (1)1.4 本文的组织结构 (1)1.5 本章小结 (2)第2章用户需求分析 (3)2.1系统的架构描述 (3)2.2 系友好的用户界面 (4)2.3技术选型 (5)2.4系统的开发环境 (5)2.5 关键技术和工具简介 (6)2.6 本章小节 (7)第3章系统概要设计 (8)3.1 模块的划分 (8)3.1.1 软件模块设计 (8)3.1.2 软件功能模块 (9)3.2 主界面设计 (11)3.3 游戏界面设计 (12)3.4 系统包及其资源规划 (12)3.4.1 系统包管理如下 (12)3.4.2 Sqlite数据库 (13)3.4.3 Runable接口以及与Thread的区别 (15)3.5 本章小结 (19)第4章系统功能的实现 (20)4.1 主界面的功能实现 (20)4.1 游戏界面的功能实现 (25)4.3 子弹类的设计 (37)4.3 敌机类的设计 (38)4.5本章小结 (40)第5章系统测试 (41)5.1 软件测试的概念 (41)5.2 系统的功能和安全测试 (41)5.3 测试总结 (43)第6章总结 (44)致 (45)参考文献 (46)第1章绪论1.1 系统研究的背景及意义在手机游戏的早期,大多数开发者都是想要玩转设备、学习技巧和快速攻关的狂热分子。
一、概述飞机大战是一款经典的射击游戏,玩家控制飞机在屏幕上不断向上飞行,同时射击敌机,躲避敌机的攻击。
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. 背景音乐和游戏音效能够正常播放。
太原理工大学毕业设计(论文)任务书第1页毕业设计(论文)题目:基于Android的飞机大战游戏的设计与实现毕业设计(论文)要求及原始数据(资料):一.项目简介随着手机技术的发展,现在手机的功能已不仅仅是简单的接打电话、收发短信了。
手机用户希望在工作、学习之余通过手机进行网上购物,多媒体浏览,以及游戏娱乐。
因此,,我开发出一套适合大众并具有很强的娱乐性和交互性的飞机小游戏。
二.项目要求1.熟练掌握Android开发的技巧,训练编写Android程序的能力;2.实践整个Android游戏开发过程。
3.设计并实现基于Android的飞机大战游戏程序;4.深入分析理解实现该游戏所需要的编程思想;5. 熟悉SQlite数据库编程基本操作;6. 深入练习进行软件调试和测试的能力;7. 要求程序反应迅速,良好的与用户进行交互;8. 要求界面设计美观大方,赏心悦目,能够吸引用户;7.训练检索文献资料和利用文献资料的能力;8.训练撰写技术文档与学位论文的能力。
三.项目计划总计17周,具体进度安排如下:1.1-3周,分析系统开发背景,研究系统开发目的,做出系统的可行性分析和需求分析报告;2.4-6周,根据可行性分析和需求分析报告,完成系统的总体设计;3.6-12周,完善系统的功能模块,设计和初步实现系统开发;4.13-14周,完整进行系统调试和测试,撰写测试报告。
5. 14-16周,整理相关材料,着手撰写论文,进行系统验收。
6. 17-19周,装订论文,进行论文答辩。
毕业设计(论文)主要内容:1.系统开发背景和目的:现阶段,生活节奏加快,人们没有足够时间去休闲娱乐,需求一款上手快,可玩性高,随时随地可玩的小游戏;2.系统可行性分析:Eclipse是一个开放的源代码的、基于Java的可扩展开发平台。
Android专门针对Eclipse开发做了ADT(Android Developer Tools)开发插件。
该系统采用Eclipse集成Android ADT为开发平台进行APP开发。
飞机⼤战游戏的设计与开发毕业论⽂飞机⼤战游戏的设计与开发毕业论⽂⽬录第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)5.5测试⽤例 (30)5.6测试结果 (30)5.6本章⼩结 (31)第6章⼯作总结 (32)致谢 (33)参考⽂献 (34)附录1 (35)第1章绪论第1章绪论1.1 系统研究的背景及意义当今社会是⼀个信息社会,⼀个知识经济的年代。
⾃从世界上第⼀台计算机ENIAC于1946年问世到现在,计算机业飞速发展。
飞机游戏课题研究报告飞机游戏课题研究报告一、引言飞机游戏是一种电子游戏,可以模拟飞行器在空中飞行的体验。
它可以提供给玩家真实的飞行体验,并让玩家在游戏中进行各种任务和挑战,如驾驶飞机进行战斗、进行救援任务等。
本报告将研究飞机游戏的发展历史、游戏机制以及市场前景。
二、发展历史飞机游戏的发展可以追溯到20世纪80年代。
当时,初代飞机游戏如《空中战争》等在街机和家用游戏机上受到极大的欢迎。
随着个人电脑的普及,飞机游戏也进入了PC平台,如《微软飞行模拟器》系列等。
随着技术的进步,现代飞机游戏逐渐实现了逼真的画面和物理模拟。
三、游戏机制飞机游戏的核心机制包括操控飞机进行飞行和战斗、任务和挑战设计以及多人游戏模式。
1. 操控飞机进行飞行和战斗飞机游戏通过操控飞机的方向、速度和攻击来进行飞行和战斗。
玩家可以使用键盘、游戏手柄或专门的飞行摇杆等设备来操控飞机,提高游戏的真实感。
2. 任务和挑战设计飞机游戏通常设有各种任务和挑战,玩家需要完成这些任务和挑战来获得奖励和升级。
任务包括飞行训练、救援行动、战斗任务等,挑战则包括飞行技巧的测试和击落敌机的竞赛等。
3. 多人游戏模式飞机游戏还提供多人游戏模式,玩家可以与其他玩家进行实时对战或协作任务。
多人游戏模式可以增强游戏的可玩性和互动性,带来更好的游戏体验。
四、市场前景飞机游戏市场潜力巨大,具有广阔的发展前景。
随着技术的不断进步,飞机游戏的画面和物理模拟将会更加逼真,玩家的游戏体验也将更加丰富。
此外,随着虚拟现实技术的发展,飞机游戏还可以与虚拟现实技术结合,为玩家提供更加沉浸式的飞行体验。
然而,飞机游戏也面临着一些挑战。
首先,游戏的难度和学习曲线较高,对于新手玩家来说可能会有一定的学习成本。
其次,飞机游戏需要强大的计算性能和显卡支持,对硬件要求较高。
最后,市场上飞机游戏的竞争也较为激烈,游戏开发商需要通过创新的游戏机制和内容来吸引玩家。
综上所述,飞机游戏作为一种电子游戏具有广阔的发展前景。
程序设计综合实践报告 姓名 学号 班级 计算机科学与技术 项目名称 飞机大战游戏设计实验 实习地点 计算机实验室 实习时间 xxxx-x-x至xxxx-x-x 实习成绩 指导教师签字
信息科学与工程学院 xxxx年 x月xx日 2
目 录 1. 概述 .................................................. 3 2. 相关技术 .............................................. 3 2.1CObList链表 ....................................... 4 2.2获取矩形区域函数 ................................... 4 2.3子弹随武器等级改变 ................................. 4 2.4弹出按钮函数....................................... 5 2.5字体的输出 ........................................ 6 2.6游戏模式切换的实现 ................................. 6 2.7设置定时器 ........................................ 7 2.8双缓冲技术 ........................................ 7 2.9滚屏的实现 ........................................ 7 3. 总体设计与详细设计 .................................... 8 3.1 系统模块划分 ...................................... 8 3.2 主要功能模块 ...................................... 9 4. 编码实现 ............................................. 10 5. 实训中遇到的主要问题及解决方法 ....................... 27 6. 实训体会 ............................................ 277 3
1. 概述 功能介绍: 一、非功能性要求 1. 程序目的。单向(纵版)飞行设计游戏,要求游戏者能持续玩半小时以上。分辨率为520*740。 2. 稳定性。程序无错、运行稳定、适应多种windows系统,游戏运行顺畅。 3. 可玩性高。程序角色丰富,物品多。关卡多,难度安排合理,游戏速度合理,屏幕上的飞机子弹数目合理。界面素材需能清楚区分各种角色,自己搭配的素材要求视觉效果融。 二、功能性要求 1.本机。 本机有血量。有两种形态。普通形态下有4中变形。暴走形态下为动态人马状。 初始血量为10。初始武器等级为1。初始移动速度为1。 2. (本机)所放导弹。 本机所放的导弹随武器等级提升而提升。发射导弹有间歇时间。本机为暴走形态时间歇时间变短。 大招导弹(审判之力):全屏爆炸,消灭除BOSS外所有敌机单位,掉落大量物品包。 3. 物品 物品仅有打落的敌机和boss掉落,敌机掉落一个,boss可掉落多个。每个物品只负责加一种属性,每次只负责加1级。
物品1:本机进入暴走形态。导弹密度发射频率移动速度大幅增强。但不是无敌。 物品2:本机武器设备得到提升。导弹密度提升。最高为5。 物品3:本机获得invincible保护罩,无敌。 物品4:本机血量+1。血量最高为10。 物品5:本机引擎设备得到提升。速度上升。最高为9。 物品6:本机大招(审判之力)数量+1。 4. boss和敌机 所有敌机和boss均从飞机的飞行前方出现。 敌机有两种:enemy 和 elite BOSS 有不同形态,每个BOSS血量比前一个大幅提升。
5. 敌机子弹(含boss子弹)
飞行路径:敌机均为从上到下,飞出屏幕即消失。boss为屏幕中盘旋飞行,直到消灭。 Enemy 子弹直线飞行。Elite 子弹扩散飞行。 BOSS子弹: Laser:跟踪本机,但本机可以躲避。 4
Mire: 直线发射。 Track:缓慢飞行,碰撞体积大。
2. 相关技术
2.1CObList链表 在本程序中使用了CObList链表来分别存储敌机,炸弹,导弹,爆炸效果。CobList类似于一个双向链表,POSITION类型的变量为链表的键。使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。我们可以通过获得某元素的POSITION来访问它。 class CObList : public CObject //枚举类型 enum ObjType{ enEnemy, enBomb, enBall, enExplosion, enUpup, enElite}; CObList m_ObjList[7]; POSITION pos1,pos2; //定义指针 for( pos1 = m_ObjList[i].GetHeadPosition(); ( pos2 = pos1 ) != NULL ; ) //遍历链表 CGameObject* pObj = (CGameObject*)m_ObjList[i].GetNext( pos1 );
2.2获取矩形区域函数 以myplane为例: CRect mRect1 = m_pMe->GetRect(); CRect GetRect(){ return CRect(m_ptPos, CPoint(m_ptPos.x + PLANE_WIDTH, m_ptPos.y + PLANE_HEIGHT)); }
2.3子弹随武器等级改变 if (boom_my == 1 && sss_my==0) m_ObjList[enBomb].AddTail(new CBomb(pt.x + 41, pt.y + 10, 0, 10 * bz, 3)); if(boom_my>=2 && sss_my==0) { m_ObjList[enBomb].AddTail(new CBomb(pt.x + 25, pt.y + 10, 0, 10 * bz, 3)); m_ObjList[enBomb].AddTail(new CBomb(pt.x + 55, pt.y + 10, 0, 10 * bz, 3)); } if (boom_my >= 3 || sss_my){ if (sss_my) { m_ObjList[enBomb].AddTail(new CBomb(pt.x + 48, pt.y + 10, -2 * bz, 8 * bz, (sss_my > 0))); m_ObjList[enBomb].AddTail(new CBomb(pt.x + 31, pt.y + 10, 2 * bz, 8 * bz, (sss_my > 0))); } else { 5
m_ObjList[enBomb].AddTail(new CBomb(pt.x + 48, pt.y + 10, -2 * bz, 8 * bz, 4)); m_ObjList[enBomb].AddTail(new CBomb(pt.x + 31, pt.y + 10, 2 * bz, 8 * bz, 4)); }
} if (boom_my >= 4 || sss_my){ if(sss_my) { m_ObjList[enBomb].AddTail(new CBomb(pt.x + 41, pt.y + 10, -1 * bz, 8 * bz, (sss_my>0))); m_ObjList[enBomb].AddTail(new CBomb(pt.x + 41, pt.y + 10, 1 * bz, 8 * bz, (sss_my>0))); } else { m_ObjList[enBomb].AddTail(new CBomb(pt.x + 41, pt.y + 10, -1 * bz, 8 * bz,3)); m_ObjList[enBomb].AddTail(new CBomb(pt.x + 41, pt.y + 10, 1 * bz, 8 * bz, 3)); }
} if (boom_my >= 5 || sss_my){ if(sss_my) m_ObjList[enBomb].AddTail(new CBomb(pt.x + 41, pt.y + 10, 0, 10 * bz, (sss_my > 0))); if (sss_my == 0){ m_ObjList[enBomb].AddTail(new CBomb(pt.x + 41, pt.y + 10, 0, 10 * bz, 3)); m_ObjList[enBomb].AddTail(new CBomb(pt.x + 90, pt.y , 0, 15 * bz, 2)); m_ObjList[enBomb].AddTail(new CBomb(pt.x - 15, pt.y , 0, 15 * bz, 2)); } else{ m_ObjList[enBomb].AddTail(new CBomb(pt.x + 90, pt.y, -2 * bz, 15 * bz, 5)); m_ObjList[enBomb].AddTail(new CBomb(pt.x - 15, pt.y, -2 * bz, 15 * bz, 5)); m_ObjList[enBomb].AddTail(new CBomb(pt.x + 90, pt.y, 2 * bz, 15 * bz, 5)); m_ObjList[enBomb].AddTail(new CBomb(pt.x - 15, pt.y, 2 * bz, 15 * bz, 5)); }
} 2.4弹出按钮函数 void CPlaneGameView::OnInitialUpdate() { CView::OnInitialUpdate(); //初始化游戏 m_button[0] = new CButton(); m_button[1] = new CButton();