坦克大战毕业设计报告.pdf

上传人:g****s 文档编号:86006702 上传时间:2023-04-13 格式:PDF 页数:37 大小:1.34MB
返回 下载 相关 举报
坦克大战毕业设计报告.pdf_第1页
第1页 / 共37页
坦克大战毕业设计报告.pdf_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《坦克大战毕业设计报告.pdf》由会员分享,可在线阅读,更多相关《坦克大战毕业设计报告.pdf(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 本 科 毕 业 设 计(论 文)题目 基于 jsp 的坦克大战游戏的设计与实现 学院名称 信息学院 专业班级 计科(高职)10-1 学生姓名 郭建建 导师姓名 贾瑞祥 二一四 年 五 月 二十八 日 齐鲁工业大学本科毕业设计(论文)原创性声明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导教师的指导下独立研究、撰写的成果。设计(论文)中引用他人的文献、数据、图件、资料,均已在设计(论文)中加以说明,除此之外,本设计(论文)不含任何其他个人或集体已经发表或撰写的成果作品。对本文研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示了谢意。本声明的法律结果由本人承担。毕业设计(论文)作

2、者签名:年 月 日 齐鲁工业大学关于毕业设计(论文)使用授权的说明 本毕业设计(论文)作者完全了解学校有关保留、使用毕业设计(论文)的规定,即:学校有权保留、送交设计(论文)的复印件,允许设计(论文)被查阅和借阅,学校可以公布设计(论文)的全部或部分内容,可以采用影印、扫描等复制手段保存本设计(论文)。指导教师签名:毕业设计(论文)作者签名:年 月 日 年 月 日 2 目 录 摘 要.3 ABSTRACT.IV 第一章 绪论.5 1.1 课题背景和意义.5 1.2 国内外游戏发展状况.5 1.2.1 与欧美对比.5 1.2.2 与韩国对比.5 1.2.3 与日本对比.5 1.2.4 我国国内的

3、发展状况.6 1.3 章节安排.7 第二章 开发技术概述.8 2.1 系统运行环境.8 2.2 JAVA 语言的特点.8 2.3 关于 JSP.9 2.4本章小结.10 第三章 游戏设计的原理及技术.11 3.1 游戏概述.11 3.1.1 游戏概念.11 3.1.2 游戏类型.11 3.1.3 游戏的市场与需求.12 3.2 游戏设计相关技术.12 2 3.2.1 DIRECTX.12 3.2.2 OPENGL.12 第四章 系统设计.14 4.1系统需求分析.14 4.2 系统总体设计.错误!未定义书签。4.2.1 基本设计和处理流程.15 4.2.2 功能总述.1 6 第五章 系统实现.

4、错误!未定义书签。7 5.1 游戏窗口设计.17 5.2 TankClieng类基本功能分析.18 5.3 Explode类基本功能分析.20 5.4 Missile类基本功能分析.22 5.5 PlayMusic类基本功能分析.24 5.6 Tank类基本功能分析.26 5.7本章小结.第六章 程序创新点.27 6.1双缓冲技术.27 第七章 总结与展望.28 7.1 总结.28 7.2 不足之处.29 7.3 展望29 参考文献.30 2 致 谢.3 1 齐鲁工业大学 2014 届本科生毕业设计(论文)3 摘 要 坦克游戏是一款众所周知的休闲游戏,在网络日益发达的今天,网页游戏为我们提供了

5、很好的放松空间。本游戏是在MyEclipse平台上开发调试,运用服务器Tomcat,网页界面的结构设计以实用性出发,具有易于操作、简洁、方便等特点。本文采用MyEclipse平台开发调试。玩家坦克的运行是通过键盘响应事件控制,获取小道具,敌方坦克则是自动运行并具有了一定的智能性。子弹打中敌人,敌人爆炸,同样敌人也能移动,也能放子弹,敌人坦克数为 0 打完进入下一关,还加入了游戏声音。玩家的坦克消灭敌方坦克后,会随机生成物品,玩家的坦克吃了可以补充血量,发射超级炮弹,还可以加快速度。本论文第一章是介绍国内外游戏的发展状况,以及它的意义和其他开发游戏的区别,第二章介绍一些游戏编程的技术和原理,第三

6、章是系统分析与设计,对坦克大战游戏戏有一个总体的设计,第四章室系统功能与实现,游戏具体实现都在这章,最后总结 关键词:坦克大战 JAVA MyEclipse JSP servlet齐鲁工业大学 2014 届本科生毕业设计(论文)IV ABSTRACT The tank game is a game of leisure as everyone knows,developed networkincreasingly today,Webpage games provide a good relaxing space for us.This game is developing and debugg

7、ing on MyEclipse platform,using the Tomcat server,the structure design Webpage interface to practicality,has the characteristics of easy operation,simple,convenient.MyEclipse platform debugging using this.Game players tank is controlled by keyboard response events,gets props,an enemy tank is operate

8、d automatically and has certain intelligence.The bullet hit the enemy,the enemy bombing,the same enemy can move,can put the bullet,the enemy tank number 0 played into the next Commissioner,has also joined the game sound.The first chapter of the thesis is to introduce the development of domestic and

9、international games,and the distinction between its significance and other game development,the second chapter introduces the technology and principle ofsome game programming,the third chapter is the system analysis and design,an overall design of the game play,the fourth chapter room system functio

10、n and the realization,the game specific implementation in this chapter,the final summary Keywords:tank;JAVA;MyEclipse;Jsp;serverlet齐鲁工业大学2014 届本科生毕业设计(论文)2 第一章 绪论 1.1 课题背景和意义 游戏软件是计算机诞生之后就开始有的产物,有最开始的单机版游戏逐渐发展为大型的网游,但是随着整个行业新生模式的诞生,游戏也在向着小型互动的SNS 型转变,这样的游戏有着互动性强,直接在网页中运行,用户体验较简单容易。坦克大战(Battle City)是

11、1985 年日本南梦宫Namco 游戏公司在任天堂FC(FamilyComputer)平台上,推出的一款多方位平面射击游戏。游戏以坦克战斗及保卫基地为主题。大部分80 后的青年人曾经都玩过这款FC 平台上的经典游戏,FC 平台上的坦克大战只能两个人协同作战。本系统运用Java 这个跨平台的编程语言,重新实现这一款经典游戏,探究曾经这一款经典游戏的大概设计与实现,并且加入坦克八个方向的行走,双人模式,使游戏的玩法更丰富。1.2国内外游戏发展状况 想要比较客观的认识中国的游戏教育现状首先就要对世界上游戏产品比较发达的地区进行一定的了解,在这些地区存在的游戏教育模式与形式都是我们非常好的教科书。为此

12、,我特地收集整理了一些资料,罗列出来并与国内的情况加以对比,以便让大家能够更加深入的了解到目前游戏教育的发展情况。1.2.1与欧美对比 因此欧美的游戏制作人才相对来说有更高的起点和基础能力,也正是因为这个原因,因此欧美专业的策划人才相对较少,欧美的策划人才基本是由程序员转型而成的,这也是欧美的游戏制作在背景创意方面极少具有突破的原因之一。1.2.2 与韩国对比 由于韩国面积有限,加上对游戏制作几乎是倾力支持,因此韩国的游戏开发也是一个飞跃的过程,而之所以在这个过程中没有出现中国现在出现的人才断层,是因为韩国游戏开发者之间的沟通交流及资源共享要比国内强很多倍。这样可以从整体上提升所有游戏制作者的

13、能力,而在中国,虽然也想要这么做,但可行性会相差很多。韩国同样有面向游戏制作的职业培训机构,不过由于功利问题和类似国内的浮躁心态,韩国也有很多人才方面的问题。相比两三年前,韩国游戏研发群体的整体心态已大不如前了,考虑到本文的着重点,在此略过不提。由于韩国经历了一个类似的发展过程,因此国内机构在引入外来师资力量和课程体系时,可以适当考虑韩国的一些情况,当然由于跨度较大,可能会付出相对高昂的代价。齐鲁工业大学 2014 届本科生毕业设计(论文)2 1.2.3 与日本对比 日本几乎所有的游戏公司都与某所大学达成了人才培养的合作协议,不论任天堂还是 SEGA,也不论是早稻田大学还是东大等,游戏公司与大

14、学之间有千丝万缕的联系,可以说日本很少有游戏制作爱好者,只有极为庞大的游戏爱好者。不过与欧美相比,日本存在有不少面向游戏制作的职业培训机构,这应当与日本人就业压力大和整体民族压抑性有关,其中主要的培训方向也是程序和美术。1.2.4 我国国内的发展状况 网络游戏对全世界都是一种新兴产业,所有国家都处在同一个起跑线上。我国网络游戏已经形成了相当的规模,显示出强劲发展的良好趋势。1、资本形成集聚 随着中国网络游戏行业的市场不断壮大,一大批网络游戏公司成功上市,通过融资获得企业发展所需资金;风险投资等社会资本也通过各种方式涌入网游行业,使得网络游戏行业资本积累迅速增加;一些大公司通过并购进入网游领域,

15、例如中华网游戏集团对 17game 和光通的并购;在网游行业内部,盛大、腾讯等行业领先者不断投入巨资,大规模开发网络游戏新产品,谋求长期稳定发展。大量资本的涌入,满足了网络游戏企业的资金需求,集聚了人才、技术等优质资源,极大地拓展了网络游戏产业的发展空间、加快了网络游戏发展速度。2、研发力量增强 在中国政府实施“中国自主研发网络游戏出版工程”等一系列鼓励和推动国产民族原创游戏出版政策推动下,中国原创网络游戏从2005 年开始,连续占据国内网络游戏 60%以上的市场份额,“中国创造”的网络游戏已经成为中国游戏产业的支柱。截至 2008 年 10 月,中国网络游戏研发公司数量已达 131 家,比

16、2007年增长了 4%,中国网络游戏研发从业人员数量达到 24768 人,比 2007 年增长了17.8%,整体研发实力增强。3、新型游戏崛起 近年来,由于大型 MMORPG 游戏的新鲜感日益下降以及上班族的时间限制,网络休闲游戏应运而生,主力厂商的积极推进以及玩家对休闲游戏的青睐成就了休闲游戏的大好局面。网络休闲市场得到了进一步的细化,形成了音乐舞蹈、体育类、竞速类、射击类等各种细分市场,具有鲜明的特色,如久游网的劲舞团在相当时间内位居国内游戏人气榜前茅。以虚拟社区游戏和网页游戏为标志的新的游戏类型开始试水中国网游市场。在虚拟社区游戏市场,三个本土的虚拟世界 Hipihi、Novoking、

17、Uworld 已经开始了战略布局,正在为将来的竞争做准备。另外,网页游戏也将是游戏市场的一齐鲁工业大学 2014 届本科生毕业设计(论文)2 个热点,凭借其进入便捷、不用下载客户端等特点,将吸引大量的用户群,目前已受到运营商更多的关注。4、盈利模式创新 广告成为新的赢利增长点。网络游戏和广告被巧妙地结合起来,游戏植入式广告在国外已经迅猛发展。在国内也开始崭露头角,网络游戏媒体化的商业价值,越来越受到网络游戏行业、广告业界和广告主的认同。2007 年,我国互联网用户数达到 2.3 亿,其中 17.2%以上为网络游戏玩家,且以 18 岁到 34 岁的年轻人为主,这些人不仅是网络游戏的生力军,更是时

18、尚消费品的主要消费者。IGA 可以凭借更直接、更形象的优势传达广告的传播意图,盛大、分众等游戏和广告领域的领先企业已经积极介入 IGA 领域。可以预见,IGA 将成为网络游戏业未来的盈利亮点。5、国际化运用 随着网龙、金山等公司在海外市场的成功运营,一批具有自主研发实力的中国网络游戏企业将经过国内市场检验、取得成功的产品进军海外市场,使海外市场销售收入大幅提高。国内的厂商还通过加强与国际开发商的合作进行游戏开发,共享双方的技术和经验,并参与全球分成。典型的案例如:盛大收购韩国Actoz、盛大投资 NCsoft 中国子公司,EA 参股九城等资本层面的合作,这意味着中国游戏产业已经对世界网络游戏格

19、局产生了不可忽视的影响。网络游戏作为一种全新的产业,在国际、国内正以前所未有的速度迅速发展,具有广阔的市场前景,据 IDC 预计,到 2012 年仅中国网络游戏市场销售收入将达到 262.3 亿元人民币。我国应进一步明确发展战略,集成力量,以更加积极的姿态迎接挑战、抢抓机遇,使网络游戏成为推动国家经济发展的新增长点。1.3章节安排 第一章是介绍国内外游戏的发展状况,以及它的意义。第二章介绍一些开发技术,为本系统后期实现做了理论支持 第三章是游戏设计的原理及技术,对游戏设计有了一定的了解。第四章室系统设计与实现,游戏具体实现都在这章,最后总结 齐鲁工业大学2014 届本科生毕业设计(论文)8 第

20、二章 开发技术概述 2.1 系统运行环境(1)网络服务器操作系统:Windows 7;(2)开发工具:Myeclipse8.5;(3)运行环境:J2SDK 1.6;(4)编程语言:Java 语言;2.2 JAVA语言的特点 Java 语言的流行除了因为它能够编制嵌入HTML 文件中的Applet 外,还在于 Java 语言本身的面向对象、简单、平台无关性、安全性、多线程等特点java语言的结构与编写方式,与c语言类似,因此学习Java 语言,不仅要了解Java 语言特点,同时还要有程序设计基础和面向对象的概念。java 语言的特点如下:Java 语言的特点一:简单、高效 Java 语言与C类似

21、,如果用户了解C和面向对象的概念,就可以很快编写出Java 程序;此外,Java 又不同于诸如C语言提供的各种各样的方法,它只提供了基本的方法,这样就减少了编程的复杂性,例如去掉了头文件、指针变量、结构、运算符重载、多重继承等复杂特性。Java 语言虽然简单,却很高效,它可以用面向对象的方法来描述用户的每一个动作。Java 语言的特点二:面向对象 Java 语言是一种新的面向对象的程序设计语言,它除了几种基本的数据类型外,大都是类似c中的对象和方法,程序代码大多体现了类机制,以类的形式组织,由类来定义对象的各种行为。Java 同样支持类继承,这样也减少了程序设计的复杂性。Java 语言的特点三

22、:平台无关性 Java 语言经编译后生成与计算机硬件结构无关的字节代码(Bytecode),这些字节代码被定义为不依赖任何硬件平台和操作系统。当 Java 程序在运行时,需要由一个解释程序对生成的字节代码解释执行。这体现了Java 语言的与平台无关性,使得Java 程序可以在任何平台上运行,如MS-DOS,Windows,Unix 等,因此具有很强的移植性。Java 语言的特点四:交互式特性 Java 是面向对象的网络编程语言,由于它支持TCP IP 协议,使得用户可以通过浏览器访问到Internet 上的各种动态对象。并且在网络上用户可以交互式地进行各种动作,而多线程技术的引入使得这种交互式

23、操作更为容易。齐鲁工业大学2014 届本科生毕业设计(论文)9 Java 语言的特点五:多线程机制 Java 语言支持多线程机制,多线程机制使得Java 程序能够并行处理多项任务。Java 程序可以设计成具有多个线程,例如让一个线程负责数据的检索、查寻,另一个线程与用户进行交互,这样,两个线程得以并行执行。多线程机制可以很容易地实现网络上的交互式操作。Java 语言的特点六:动态的内存管理机制 Java 语言采用了自动垃圾回收机制进行内存的管理。在 C语言中,程序员在编写程序时要仔细地处理内存的使用,例如当某个内存快使用完毕时,要及时释放,以供其它程序使用,一旦内存管理不当,就有可能造成内存空

24、间浪费或程序运行故障。在 Java 系统中包括了一个自动垃圾回收程序,它可以自动、安全地回收不再使用的内存块,这样,程序员在编程时就无需担心内存的管理问题,从而使Java 程序的编写变得简单,同时也减少了内存管理方面出错的可能性。Java 语言的特点七:安全性 在类似Internet 的这种分布式网络环境中,安全性是个不容忽视的问题。Java 语言在安全性方面引入了实时内存分配及布局来防止程序员直接修改物理内存布局;通过字节代码验证器对字节代码的检验,以防止网络病毒及其它非法代码侵入。此外,Java 语言还采用了许多面向对象的异常处理机制,负责对一些异常事件进行处理,如内存空间不够,程序异常中

25、止等的处理 以上介绍了一些主要Java 语言的特点,除此之外它还具有动态性、类库丰富、高性能等特点,这些都使得Java 语言在各个方面得以成熟和完善,成为大众日益青睐的程序设计语言之一。2.4关于 jsp JSP 是由SunMicrosystems 公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML 文件(*.htm,*.html)中加入Java 程序片段(Scriptlet)和JSP 标签,就构成了JSP 网页。Java 程序片段可以操纵数据库、重新定向网页以及发送E-mail 等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的

26、结果,这样大 大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP 网页。JSP 全名为Java Server Pages,其根本是一个简化的Servlet 设计,他实现了Html 语法中的java 扩张(以 形式)。JSP 与 Servlet 一样,是在服务器端执行的。通常返回给客户端的就是一个HTML 文本,因此客户端只要有浏齐鲁工业大学2014 届本科生毕业设计(论文)10 览器就能浏览。Web 服务器在遇到访问JSP 网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP 文件中的HTML 代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向

27、网页等,以实现建立动态网页所需要的功能。通常JSP 页面很少进行数据处理,只是用来实现网页的静态化页面,只是用来提取数据,不会进行业务处理。JSP 技术使用Java 编程语言编写类XML 的 tags 和 scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags 和 scriptlets 访问存在于服务端的资源的应用逻辑。JSP 将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet 中分离出来。JSP 页面由HTML 代码和嵌

28、入其中的Java 代码所组成。服务器在页面被客户端请求以后对这些Java 代码进行处理,然后将生成的HTML 页面返回给客户端的浏览器。Java Servlet 是JSP 的技术基础,而且大型的Web 应用程序的开发需要 Java Servlet 和 JSP 配合才能完成。JSP 具备了Java 技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。2.5本章小结 在本章中首先介绍了该系统的运行环境,需要注意的是软件环境的配置,因为整个系统都是在虚拟环境下运行的,所以虚拟环境对整个设计的调试和运行至关重要,还对java 语言和jsp 做了简单的介绍,为本系统后期实

29、现做了理论支持。齐鲁工业大学2014 届本科生毕业设计(论文)11 第三章 游戏设计的原理及技术 游戏的可玩性是游戏所包含的交互性的程度及特点,就是玩家与游戏世界及游戏世界对玩家的选择作出反应的方式。游戏设计就是定义游戏可玩性的内容。游戏设计决定了玩家可以在游戏世界中做出什么选择,并且这些选择会在游戏的其余部分造成哪些不同的结果。游戏设计决定了游戏中胜利或失败的标准,用户可以控制游戏的方式,决定了游戏可以向玩家所传达的信息,并且可以决定游戏的难度。简单地说,游戏设计决定了游戏可玩性实现过程中的每一个细节。3.1游戏概述 3.1.1 游戏概念 荷兰学者胡伊青加在人:游戏者中对游戏定义为:游戏是一

30、种自愿的活动或者消遣,这种活动或消遣是在某一固定的时空范围内进行的,其规则是游戏者自由接受,但又有绝对的约束力,游戏以自身为目的而又伴有一种紧张、愉快的情感以及对它“不同于日常生活”的意识。胡伊青加概括了游戏的四个特征:(l)它是自主的,实际上是自由的;(2)游戏“平常的”或“真实的”生活;(3)它的隔离性,它的有限性,它在特定范围的时空中“演出”,它包含它自身的过程和意识;(4)它制造秩序,它就是秩序.3.1.2游戏类型 动作(Action)单纯的动作游戏较为罕见,因为动作是一个广义上的类别。最初,具有关卡设计特性的横版过关游戏都可以称其为动作游戏。但随着动作游戏的多极化,动作游戏逐渐分成了

31、多个小类。现在动作游戏均指传统的过关式动作游戏,或不强调射击的动作游戏。超级玛丽、洛克人、银河战士、刺客信条 射击(Shooting)射击游戏(Shooting)带有很明显的动作游戏特点,因为要控制的角色和物体基本处于运动状态,而且“射击”本身也是动作的一种。概括来说,没有纯然的射击游戏,因为射击必须要经过一种方式来呈现它的“射击”,所里不论是用枪械、飞机,只要是进行射击动作的游戏都可以称之为射击游戏。格斗(Fight)格斗游戏(Fighting)。这类的游戏具有明显的动作游戏特征,并且很好分辨,画面通常是玩家两边面对站立并相互作战,使用格斗技巧使击败对手来获取胜利。齐鲁工业大学2014 届本

32、科生毕业设计(论文)12 这类游戏通常会被强烈要求的精巧的人物与招式设定,以达到公平竞争的原则。另外则是有些同类型的游戏注重拳脚的比试,而有些就使用兵器。此外格斗游戏尚有2D、2.5D 以及全3D,不过几乎所有的格斗游戏的游戏方式都相同。除了一点小差异,那就是3D 格斗游戏由于视角会转换,不能再使用往后的按键作为防守,所以大多设有专用的防守键。冒险(Adventure)冒险游戏(Adventure)。这类游戏几乎只在PC 电脑上发展,并且是电脑游戏最初发展的类型之一,在大约1980-1990 年之间这类游戏发展到颠峰。在当初的电脑效能远远逊于现在的电脑,并不能做精细的画面处理,因此以文字为主的

33、冒险游戏便大行其道,它不用漂亮的画面也能使玩家拥有丰富的游玩体验。(1)文字冒险(Classic Adventure)文字冒险游戏是传统的冒险游戏,一般为揭秘要素。由于动作冒险游戏的兴起,老一代文字冒险游戏已经没落。新兴的文字冒险游戏一般含有恋爱成分,这使得文字冒险游戏可以一直持续下去。传统:猴岛小英雄、国王密使、印第安纳琼斯 新兴:CLANNED、樱花大战 (2)动作冒险(Action Adventure)动作冒险游戏是过关式动作游戏3D 化后的产物,他们也含有过关、解谜的要素,但由于画面的进步,从单纯的下指令前进,变为需要在关卡里利用机关或行动技巧进行前进的方式。古墓丽影、波斯王子 3.1

34、.3游戏的市场与需求 2004 年是游戏业极具里程碑意义的一年,游戏业真正完成率从地下产业至阳光产业的转换过程并得到了社会的重视 2005 年,网络游戏的产业规模和市场潜力将得到进一步的激发 据预测,2007 年将是国产网络游戏的大作之年,中国大陆游戏市场年平均增长率为62%国内所需技术人员至少2 万名,人才的缺口已经在1.5 万人以上,网络游戏人才奇缺的问题亟待解决。3.2游戏设计相关技术 3.2.1 DirectX Microsoft DirectX 是这样一组技术:它们旨在使基于Windows 的计算机成为运行和显示具有丰富多媒体元素(例如全色图形、视频、3D 动画和丰富音频)的应用程序

35、的理想平台。DirectX 包括安全和性能更新程序,以及许多涵盖齐鲁工业大学2014 届本科生毕业设计(论文)13 所有技术的新功能。应用程序可以通过使用DirectX API 来访问这些新功能。DirectX 加强3D 图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低了用户安装及设置硬件的复杂度。3.2.2 OpenGL OpenG 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、

36、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenG 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。OpenGL 是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2 之间进行移植。因此,支持OpenGL 的软件具有很好的移植性,可以获得非常广泛的应用。由于OpenGL 是图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD2、3DS/3DSMAX3等3D 图形设计软

37、件制作的DXF 和 3DS 模型文件转换成OpenGL 的顶点数组。齐鲁工业大学2014 届本科生毕业设计(论文)14 第四章 系统设计 4.1系统需求分析 4.1.1系统角色 游戏玩家:玩游戏的人,能够操作坦克在地图上面行动和发射炮弹。4.1.2模块设计 需求 模块 产生游戏的屏幕 主类模块 将坦克大战的过程呈现在屏幕上 绘制坦克 坦克类模块 控制坦克的移动并让坦克可以攻击 坦克血条的绘制 添加坦克的图片 画出子弹 子弹类模块 控制子弹的移动 子弹相互撞击 让子弹不可以穿墙 添加子弹的图片 画出爆炸的过程 爆炸类模块 删除爆炸对象 添加爆炸的图片 画出墙 实现墙的功能 墙类模块 画出血块 4

38、.2 系统总体设计 坦克大战游戏主要实现玩家参加游戏的整个流程,用户登陆浏览器单击页面上的游戏开始按钮,进入单机模式可以直接进入游戏状态;系统的总体流程图如下图4-2 所示:齐鲁工业大学2014 届本科生毕业设计(论文)15 图 4-2 坦克游戏系统流程图 4.2.1 基本设计和处理流程 坦克大战游戏需要实现坦克的游戏过程,声音控制,游戏速度设置,坦克速度设置,键盘设置等功能。坦克游戏程序总体框架如图4-2-1 所示 齐鲁工业大学2014 届本科生毕业设计(论文)16 图 4-2-1 坦克游戏总框架 4.2.2 功能总述 游戏开始:进入游戏后,按enter 键开始游戏。坦克控制:游戏有单人模式

39、和双人模式,单人模式通过按键盘wasd 来控制自己坦克的移动。双人模式是加上 上、下、左、右来控制。坦克发射子弹:按空格键可以发射子弹。坦克爆炸:自己的子弹打大了敌方坦克会爆炸,敌方坦克打中自己坦克也会爆炸。坦克移动规则:到了边缘,碰到障碍,碰到对方的坦克,都不能继续往前移动,可以改变方向移动自己的坦克。游戏声音:进入游戏有相应的背景音乐,坦克发射子弹,坦克爆炸都有相应的声音,声音让游戏变得更有趣。敌人坦克:敌人会随机的上、下、左、右移动,以及发射子弹,也要遵循坦克移动规则。齐鲁工业大学2014 届本科生毕业设计(论文)17 第五章 系统实现 5.1 游戏窗口设计 在游戏中产生一个窗口,添加关

40、闭窗口的事件处理,不允许窗口的大小改动。通过如下代码实现。import java.awt.*;import java.awt.event.*;public class TankClient extends Frame public void lauchFrame()this.setLocation(400,300);this.setSize(800,600);this.setTitle(TankWar);this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0)

41、;);this.setResizable(false);setVisible(true);public static void main(String args)TankClient tc=new TankClient();tc.lauchFrame();在浏览器中单击开始游戏后显示的界面如图4-2-3所示:齐鲁工业大学2014 届本科生毕业设计(论文)18 图 4-3-1 游戏主界面 5.2 TankClieng类基本功能分析 TankClient 类是整个系统的核心部分,它承担整个系统的所有可实现功能的调度工作。是整个游戏运行的场所。TankClient 类设计流程图,如图4-3 所示:齐

42、鲁工业大学2014 届本科生毕业设计(论文)19 图 4-3 TankClient类设计流程 TankClient 类是主类,继承Frame 类,通过调用其他类中封装的方法来使整个系统运行起来,在TankClient 类中还有guan()方法,用来设置坦克大战的每一关。当敌人坦克都消灭了,会自动进入下一关。TankClient 的部分代码:public void lauchFrame()guan_0();hearts.add(new Heart(3,10);hearts.add(new Heart(33,10);hearts.add(new Heart(62,10);if(myTank_1!=

43、null)hearts1.add(new Heart(403,10);hearts1.add(new Heart(433,10);hearts1.add(new Heart(462,10);this.setLocation(400,300);齐鲁工业大学2014 届本科生毕业设计(论文)20 this.setSize(800,600);this.setTitle(坦克大战);/窗口退出,系统自动生成 this.addWindowListener(new WindowAdapter()Override public void windowClosing(WindowEvent e)System.

44、exit(0);/正常退出 );setResizable(false);this.setVisible(true);/创建线程,并启动,其他声音 new Thread(playMusic.otherMusic).start();/增加键盘相应类 this.addKeyListener(new KeyMonitor();this.addKeyListener(new KeyMonitor1();/背景音乐线程 playMusic.PlayBackground();/重画线程 new Thread(new PaintThread().start();/画吃的线程 new Thread(new GT

45、hread().start();public static void main(String args)TankClient tankClient=new TankClient();tankClient.lauchFrame();public static void run()TankClient tankClient=new TankClient();tankClient.lauchFrame();5.3 Explode类基本功能分析 齐鲁工业大学2014 届本科生毕业设计(论文)21 Explode 类也是一个只封装自己的变量和方法的外部包装类,没有main 方法,供TankClient

46、主类需要是调用它的draw()方法,当子弹击中坦克师需要产生爆炸。爆炸效果如图4-3-3 所示:如图4-3-3:爆炸效果 部分代码如下:public void draw(Graphics graphics)/虚代理,word 打开图片是,先显示框框 /初始化,模拟异步IO,读数据中,不是先读完才干别的事,而是读的时候,干别的事,读完才通知 if(false=init)for(int i=0;i images.length;i+)graphics.drawImage(imagesi,x,y,null);init=true;/删除爆炸对象 if(this.live=false)tankClient

47、.explodes.remove(this);return;if(step=images.length)live=false;step=0;return;齐鲁工业大学2014 届本科生毕业设计(论文)22 graphics.drawImage(imagesstep,x,y,null);step+;5.4 Missile类基本功能分析 Misslile(子弹)类和Tank 类一样,只封装一些变量属性和静态方法,主要变量包括:子弹自己的大小(WIDTH,HRIGHT),运动速度(SPRRD_X:在x 轴方向的速度;SPEED_Y:在Y 轴方向的速度)等。Misslie类持有一个TankClient

48、 类(大管家)的引用tc,TankClient 类要执行发射炮弹操作时调用Missile 类中的方法。Misslie 类中的主要方法如下:(1)draw()方法:负责画出子弹的所有活动;(2)move()方法:先判断方向再移动,并给它一定的移动速度;(3)getRec()方法:负责取得子弹的外切方形,为碰撞检测做准备;(4)hitTan()方法:检测子弹是否撞到坦克,若撞到返回true,否则返回false;(5)hitTanks()方法:检测是否撞到一系列坦克中的一个;(6)hitWall()方法:检测子弹和墙是否相撞。部分代码如下:public boolean hitTank(Tank ta

49、nk)if(this.live&this.getRect().intersects(tank.getRect()&tank.isLive()&this.good!=tank.isGood()/判断两个方框是否相碰 if(tank.isGood()=true)/是否为主坦克 tank.setLife(tank.getLife()-20);if(tank.getLife()=0)tank.setLive(false);else if(tank.boss=true)齐鲁工业大学2014 届本科生毕业设计(论文)23 tank.setLife(tank.getLife()-2);if(tank.get

50、Life()=0)tank.setLive(false);if(tank.blood!=null)this.tankClient.bloods.add(tank.blood);if(this.two=1)tankClient.score+=10;if(this.two=2)tankClient.score1+=10;else tank.setLive(false);if(tank.blood!=null)this.tankClient.bloods.add(tank.blood);if(this.two=1)tankClient.score+=10;if(this.two=2)tankClie

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

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁