坦克大战小游戏游戏两个操作柄

坦克大战游戏_图文攻略_全通关攻略_高分攻略_百度攻略
摘要坦克大战游戏是一款经典益智冒险游戏,在当代仍然受到广大青少年朋友的喜爱和欢迎。本系统是基于Java语言,在JDK1.6的开发环境下使用MyEclise软件来设计与实现的,此游戏具有很高的人工智能化,优美的图形界面支持在windows平台上运行。通过坦克大战的游戏与实现可以让我们更好地掌握和学习面向对象的编程思想,以及学习、了解游戏的一般开发过程,为以后更好地融入企业、公司的项目开发做一个简单的铺垫。本论文主要介绍了坦克大战游戏的系统分析、概要设计、需求分析、逻辑结构、详细设计、功能测试等一般游戏开发过程,该款坦克大战游戏能很好的将自己所学的知识应用到游戏的设计与实现,并且此款游戏在实际的游戏操作过程中能按照自己的设计要求来实现各种功能以及游戏安全平稳的运行。此款坦克大战游戏具有完美的人机交互画面,能够实现人与电脑大战,游戏的剧情设计的也非常简单,就是游戏玩家在保护好自己“基地”前提下,消灭所有的敌方坦克游戏玩家胜利。如果游戏玩家被消灭或者“基地”被敌方攻破则玩家失败游戏结束。本游戏使用JAVA语言开发的编写的,具有很好的人机交互界面。通过使用MyEclipse开发工具是一个十分优秀的用于开发JAVA的软件 ,来实现坦克大战这款经典的益智冒险小游戏。让人们在休闲时可以享受到游戏带来的快乐与愉悦,让人们疲惫的心得以在玩游戏中得到释放。精彩内容,尽在百度攻略: 关键词:坦克大战、JAVA语言、MyEclipse开发软件、服务器和客户端 精彩内容,尽在百度攻略:AbstractBattle City game is a classic puzzle adventure game , in the contemporary youth is still loved by the majority of my friends and welcome. The system is based on the Java language , using MyEclise software development environment under JDK1.6 design and implementation , this game has a high artificial intelligence , beautiful graphical interface supports running on windows platform. Battle City game and realized by allowing us to better understand and learn object-oriented programming ideas , and learn to understand the game development process in general , for the future to better integrate into the enterprise , the company's project development to make a simple bedding. This paper introduces the casual game systems analysis, design , requirements analysis, logical structure , detailed design , functional testing and other general game development process , Which sees the game can be a very good knowledge of what they are learning is applied to the game design and implementation, and this game in the actual operation of the process of game design can according to their own requirements to achieve a variety of functions and the game safe and stable operation. This section casual game with a perfect interactive screen , to achieve human-computer war game story design is also very simple, is gamers themselves under the protection of a good "base" premise , destroy all the enemy tanks gamers victory. If gamers were eliminated or "base" is the enemy players failed to break the game ends .This game is developed using JAVA language written , with good interactive interface . By using MyEclipse development tool is a very good software for the development of JAVA to achieve tankedaizhan this classic puzzle adventure game . So that people can enjoy the game in leisure time to bring happiness and joy , so tired of people playing the game experience to get released.精彩内容,尽在百度攻略: Keywords : Battle City , JAVA language , MyEclipse development software, server and client 精彩内容,尽在百度攻略: 第一章
引言1.1本课题游戏开发的目的精彩内容,尽在百度攻略:随着我国经济快速发展人们生活水平提高计算机得到了快速的普及以及对电子游戏的的快速发展,作为发展中的中国游戏玩家每年都高速增长,不仅是城市的居民休闲时玩电子游戏随着经济的发展我国广大农村的的居民也把电子游戏选作放松、娱乐的主要休闲方式之一;电子游戏有它独特优势因为它不需要玩家专门购买游戏器材,也不需要准备宽阔的游戏场地,只需要一台完整地电脑配有鼠标和键盘,它可以是人们在工作和学习时使用的计算机,并不需要另行配置,这和传统其他休闲游戏相比即省钱又省事。随着网络的日益普及进入家家户户Java应用程序产生的网络增值服务逐渐体现出其巨大影响力,电子游戏逐渐丰富人们的生活娱乐方式、并且向人们提供优秀快捷的信息起着不可或缺的作用。游戏开发者和玩家往往是前沿最早的采用先进计算机技术的。用他们的创新本性来从事开发游戏的制作,电子游戏不再受到大型采购公司控制,游戏领域有充足的宽阔空间给那些在这方面有天分的优秀创新人。随着技术不断成熟对游戏经验持续的促进,游戏市场得以快速持续不断增长。计算机游戏和金钱,可以提高了我们的创作水平,因此我们愿意花费更多的时间和金钱在游戏上,来改善我们生活的整体质量让我们在游戏中获得游戏带给我们的快感与愉悦。即使在当今困难的经济时代,游戏仍保持快速增长,电子游戏仍然是盈利行业的重要组成部分,优秀Java开发者应该注意到这里蕴藏着的巨大的商机。每天工作累了玩玩游戏这样轻松而又安逸的休闲生活方式,让越来越多的人们去享受这样的娱乐方式,随着庞大数目人使用电脑玩电子游戏,其中必然存在某些巨大的商机,即使游戏玩家不乐意为一个简单的休闲游戏花费金钱,但我们可以在游戏中添加广告等游戏相关服务来获取的财富。本程序主要就是开发一款适合人们休闲娱乐的一款单机游戏,让人们在工作之余休息时感受游戏给他们带来的愉悦。1.2 设计总体思路精彩内容,尽在百度攻略:坦克大战游戏实验环境硬件要求能运行Windows操作系统的PC微机。坦克大战开发过程中使用Java程序设计语言及相应的集成开发环境,用到了JDK1.6和MyEclipse开发工具。游戏开发预备知识要求我们熟悉Java语言以及MyEclipse开发工具功能。坦克大战游戏是在MyEclipse环境下编写的一款休闲娱乐游戏,游戏中要包含坦克的初始位置设置、坦克的移动方向控制、坦克的速度设定、坦克的子弹速度设定、设置游戏难度、子弹的编写、敌军坦克的编写、地图选择、障碍物的设置等等。通过W、A、S、D键进行对坦克的移动,通过空格(Space)发射子弹,其他坦克可以随机移动。游戏运行时首先要构造主窗口中所需要的类,并将坦克加到窗口中,实现坦克的四个方向的移动并创建炮弹类,并让屏幕中的坦克能独立发射炮弹,让坦克可以朝对方开火,并将对方击毙。坦克大战游戏需要实现坦克的游戏过程包含快门存取、声音控制、游戏难度设置、键盘设置等功能。游戏开始:进入游戏后,需要在点击一下屏幕,方能开始游戏进行对战。坦克控制:接下来你可以按键盘的W、S、A、D键来控制自己的坦克上、下、左、右移动。精彩内容,尽在百度攻略:坦克发子弹:玩家坦克按空格键(Space)可以发射子弹,敌方坦克随机发射子弹。坦克移动主要规则:如果到了主界面边缘,碰到障碍,或者碰到对方的坦克,都不能继续往前移动,这是你可以改变方向来移动自己的坦克。游戏障碍物设置:当坦克移动到碰到障碍物时,坦克便不能够再继续往前行,有障碍物的可以打烂,有的不能,有的障碍物可以穿过。精彩内容,尽在百度攻略:敌方坦克:敌人会随机的上、下、左、右移动,以及发射子弹,敌人坦克移动也遵循坦克移动规则。游戏声音:坦克发射子弹,坦克爆炸都会有相应的声音,声音让游戏变得更有乐趣,也可以选择自己喜欢的音乐作为背景音乐。游戏暂停与继续:当你有事的时候,需要暂停游戏,点击右边的暂停按钮,游戏便暂停了,再点击游戏继续。精彩内容,尽在百度攻略:声音控制:在游戏设置中可以选择设置来实现游戏声音的开关。游戏暂停:当你有事或者遇到什么情况不能继续玩游戏你可以点击菜单项目的暂停来实现保存当前的游戏状况,当你回来的时候可以点击继续游戏接着原来的进度继续进行游戏。 下一关:当把全部敌人都消灭则进入下一关,或者玩家直接点击右下方的下一关图形按钮进入下一关进行游戏。游戏结束:当自己坦克的生命数为0游戏会提示“GAME
OVER”,或者自己不想继续玩了强行关闭游戏。精彩内容,尽在百度攻略:1.3 预期成果以及理论意义 坦克大战游戏设计需要有图形游戏界面,让玩家能看到游戏给出的反馈信息,具有人机交互功能,使游戏玩家能操作特定的游戏元素。敌我双方的坦克,要有不同外观展示,能让自己分清分辨敌我,坦克能够发射子弹,攻击对方,但不能攻击自己的队友,游戏中要设置有不可被子弹穿透的钢墙,且墙有可摧毁和不可摧毁两种。双方坦克都要有生命值,并非被击中一次就会发生爆炸,坦克爆炸后将产生道具,拾到道具的坦克可加满生命值。游戏结束后可重新开始以及选择下一关,游戏的操作、进度等须提供相应说明,以告知游戏玩家方便玩家进行快速游戏。精彩内容,尽在百度攻略:该游戏定位在小型休闲益智冒险游戏,是一款免费地、绿色地、开源地一款游戏软件。本游戏是使用JAVA开发的对战单机游戏,它不仅实现了游戏基本的功能需求,而且具有设计灵活、拓展方便、界面生动,较多的使用了各种设计编写模式,使程序的编写效率具有更高的效率,运行效率更高,更快。基于程序中较多面向父类或者面向接口的编程,如果以后要更换某些模块、元素的功能会非常方便,以及添加某些新功能,都将变得非常容易的。本人开发的此款游戏致力于免费向人们提供,让忙碌的人们可以在休闲之余感受电子游戏给他们带来的愉悦和快感,同时通过游戏的开发与设计可以让我更好掌握JAVA语言以及编程开发游戏的办法和设计理念,设计思想等,为以后走入社会工作做了一个铺垫。第二章
开发与设计2.1游戏的背景与发展现状精彩内容,尽在百度攻略:2.1.1游戏开发背景世界上第一台真正的电子游戏机于1972年问世。1971年麻省理工学院的学生Nolan Bushnell设计了世界上第一个商业游戏机(俗名被称为街机),起名为《电脑游戏空间》(Computer Game Space)。该游戏《电脑游戏空间》的主题主要是两个玩家各自控制一艘太空战舰围绕这艘太空战舰向对方发射导弹进行攻击对对方的战舰。两艘战舰在战斗的同时还必须注意克服星球引力,无论是被对方的导弹击中或者没有成功摆脱星球引力,都会致使飞船坠毁,飞船坠毁的一方失败,另一方获得游戏的胜利。他们这台游戏机最初用一台黑白电视作为显示屏,用一个控制柄作为操作器,又被成为经典黑白机游戏时代,不过最终因为市场因素没有很好的市场前景而宣告这款游戏以失败告终。精彩内容,尽在百度攻略:Nolan Bushnell虽然初次尝试以失败告终,但是他和朋友仍然坚信电子游戏具有很好市场发展前景。他在《电脑游戏空间》推出的第二年,和朋友Ted用5000美金注册成立了自己的第一个公司Atari(雅达利)。他们获得了很大成功,世界上第一台被人们接受在业务用机就是Nolan Bushnell的Atari公司推出的游戏机。雅达利(Atari)是电子游戏制作以及开发的开山鼻祖,虽然现在只能在古老历史的档案中找到该公司的留下足迹。但是Nolan Bushnell雅达利留下了许多游戏程序的开发技术以及游戏的开发思想至今还在应用,甚至影响了当代计算机图形学中的某些具体分支。在上世纪早期的游戏不能被人们广泛接受最主要的原因就是该游戏引擎不具备广泛的硬件支持,而且不能够自上而下充分发挥游戏各等级对硬件的运算资源共享。目前PC游戏销量萎靡(相对于游戏机)市场前景不光明的主要原因之一就是PC机器平台不同等级的硬件性能相差巨大,而当前绝大部分PC游戏对不同级别的硬件支持范围又不够广泛,所以往往要么是硬件配置需求过高,会出现要么就是游戏画质跟不上硬件时代,被市场和游戏玩家所遗弃,导致玩家接受面不断缩小而严重影响游戏销量情况。像过去一款有名“暴雪”的游戏之所以能够赢得如此庞大的玩家追捧和市场的需求,除了开发人员不断更新游戏保证作品本身的优秀质量除外,游戏具有相对较广的硬件支持特点同样居功至伟。该款游戏能够很好兼顾当时高配置下的优秀画质以及低端配置下同样能够提供流畅的游戏体验,所以得到了市场和广大游戏玩家追捧。目前像我们国内大多数游戏玩家接触的游戏《坦克大战》,大多数都是经过中国最早出现的FC游戏开发人员傅瓒改造后的版本,经典坦克游戏的编程:原版游戏《坦克大战》一共45关,玩家的任务是保住自己这方司令部,并消灭敌方40辆坦克。福州市数字青少年宫创始人傅瓒对原版游戏里的元素地图和参数进行小幅度修改,并增加了一系列新关卡和选项,这就是我国国内最著名最早的“烟山版”经典游戏制作《坦克大战》——《坦克7》。精彩内容,尽在百度攻略:最终凭借“坦克”系列游戏的火爆市场,烟山软件获得了巨大经济效益营业额再次翻番,1989年突破200万元,接着烟山软件又推出了新一款游戏《导弹坦克》。新游戏的制作《导弹坦克》已不再满足于对地图和参数的简单编辑小幅度的修改,还对游戏主程序做了大幅度修改,增加了坦克能够发射导弹功能、玩家司令部加固工事功能等许多新玩法。新的游戏里玩家坦克发射的导弹可以越过游戏地图上的所有障碍不受阻挡,甚至导弹可以转弯;导弹用完后,游戏玩家可以使用用SPACE键加固工事或设置新的路障,或者将坦克开到砖或石头前,按SPACE键举起砖石,把砖石搬运到需要加固或设置路障的地方,再按SPACE键放下。游戏《导弹坦克》连同被烟山软件汉化的《围棋》、《麻将》和《中国象棋》等游戏与另外三款游戏,被烟山公司制作成四合一卡带光盘,这盘卡带光盘母片后来被烟山软件卖给了一家台湾公司,这个小插曲也使烟山软件无意间却成为了中国国内第一家“进军海外”的游戏公司。2.1.2国内外游戏发展的现状相信绝大多数喜欢玩游戏的朋友一开始都是玩简单的 “小霸王”、“超级玛丽”、“坦克大战”等等一系列经典的益智冒险类小游戏开始,然后就是三国志之类的大型一点的游戏,接着随着电脑的普及到现在的电脑游戏,大型PC单机游戏,大型网络游戏,这么一个过程,有意无意的游戏其实已经不知不觉间的进入了我们的生活,成为我们生活休闲娱乐的一种休闲方式之一。电脑游戏在当代,已经十分普遍和普及了,市场前景比较美好以及游戏玩家也比较多。尤其是是网络游戏,网络游戏具有先天的优势因为其剧情的有趣性,在游戏画面的美观方面,丰富招式的华丽方面,等一系列特点,吸引了无数游戏玩家来体验游戏带来的乐趣,接着特别是3D网络游戏的推出,使得网络游戏发展进入了一个空前绝后新时期。精彩内容,尽在百度攻略:FC(Family Computer)主机在全球游戏业界造成的巨大冲击波众所周知被广泛流传,至今仍然被许多游戏玩家津津乐道。这款FC(Family Computer)主机在据说当时事实上几乎占领了世界各地多个国家的整个游戏市场被各个国家的游戏玩家追捧,并使得逐渐没落的北美游戏市场再度复苏崛起重新走上了世界游戏的霸主地位。这款主机的硬件配置性能比当时的绝大多数主机都要强大一些,但是它的价格上却便宜得多。这款FC(Family Computer)主机所采用得芯片处理器为CMOS 6502,是一款已经淘汰的大约70年代中期产品。由于其价格便宜且极易主机使用,后来经过欧洲任天堂公司的加工改造后又焕发了它全新活力和激情。Battle City坦克大战是烟山软件发售卡带中的一款力作,游戏中主要设置了50个关卡,可以进行单人、双人操纵,游戏画面设置了许多若干种类的建筑物和阻挡物作为游戏的障碍物,坦克大战游戏主要以以消灭所有敌人为通关为主要条件,游戏中还要有各种各种宝物等以此增加良好游戏效果的设置,塑造精美游戏画面,美妙游戏背景音效,当时用于PC机的80386芯片处理器还没有面世,能在PC机硬件上运行这样的大型2D游戏程序不得不令人感到惊叹不以,所以常有人说游戏程序是能最大限度发挥PC机硬件水平的载体的最佳体现。早期的游戏制作和开发难免具有粗陋和简单的缺点,但是现在飞速发展的游戏行业正缺少了那些让我们初次就喜欢上的游戏。还有接着要进行游戏的技术性封闭测试主要是以测试版本稳定性目标,测试期间难免出现这样或那样技术问题和BUG。像“暴雪”这种精益求精的公司对待游戏制作追求完美开发,实际上他们的游戏开发人员的第一个内部开发版本就因为画风有点像魔兽世界的画面而被彻底推翻重新进行制作和开发,现在面对这个十年磨一剑的经过许多游戏开发人员呕心沥血的游戏作品,不禁让我们猜想暴雪对其开发和制作重视程度已经达到欲痴欲狂的程度!这款继承经典坦克大战的益智冒险的休闲游戏,向国人提供了重铸的游戏玩家带来良好网络游戏制作和开发的一片新天地。因此游戏玩家全神贯注置身于这款游戏中去体验游戏的乐趣,“暴雪”官网急速启动项目制作,同时研发部门夜以继日奋斗,只为一个共同的目标:那就是在第一时间开发制作出坦克大战这款世纪经典休闲小游戏的网络游戏增强版。其中新的游戏中坦克与技能都能得到升级改造的机会具有更加丰富的游戏体验,经过不断地强化与改造游戏体验,能让一辆普通坦克产生翻天覆地的变化。纵观IT产业的不断发展的历史,可以发现计算机游戏已经成为新技术创新背后的主要动力和源泉。计算机游戏玩家渴望获得更加强大的PC机的硬件计算能力来提升游戏体验;游戏玩家渴望不受不同的软件的限制与约束——不管是将游戏图形画面强制在人工智能上,还是将游戏图形画面强制网络安全性上。优秀的游戏开发者和玩家往往经常是前沿计算机技术的最早的体验者。基于他们的天生游戏创新和制作天性,至此游戏不再是像过去由某些大型采购公司控制的简单的计算机技术产品——游戏领域和良好的市场前景总是有充足的制作空间给那些在游戏方面有天分的单个游戏开发创新者。进入新的21世纪,随着社会和市场竞争日趋激烈,同时人们的生活压力和焦虑也与日俱增,为了缓解人们在紧张的社会环境给人们带来休闲的娱乐,各大游戏公司相继源源不断开发种种其乐无穷的有趣的经典游戏,其中坦克大战就是其中的经典益智冒险休闲娱乐中一款。坦克大战最早是在上世纪是由日本的任天堂的开发和制作的,后来流传到中国福建省,在福建省的一所著名高校中,由一位著名物理老师傅瓒经过修改后流行于整个大陆地区,现在我们所玩的坦克大战游戏大部分都是在傅瓒老师的基础上修改和重新制作的,出于对游戏开发的浓厚兴趣与强烈好奇心,便尝试开发了此款经典游戏让游戏在次展现属于它的经典历史画面 。精彩内容,尽在百度攻略:2.2游戏的设计2.2.1游戏概要设计(一般循环过程)游戏虽然有很多五花八门种类,开发和制作的方式也不尽相同,但是游戏一般都遵循一精彩内容,尽在百度攻略:个相同循环过程。下面就是主要介绍下坦克大战游戏的循环过程:第一步:游戏初始化在这一步中,游戏主程序进行标准初始化操作,例如:内存分配问题、进行资源采集、从磁盘载入各种游戏数据等等。精彩内容,尽在百度攻略:第二步:要进入游戏主要循环方式在这一步中,游戏的后台代码运行到设计好的游戏主循环体内部。这时候各种游戏操作开始运行,直至持续到游戏玩家退出游戏主循环才停止。第三步:人工智能和游戏逻辑精彩内容,尽在百度攻略:这一部分主要包括游戏后台数据代码的主体部分,诸如要进行执行人工智能、物理系统和一般游戏逻辑,来进一步用于渲染下一帧游戏图像。第四步:渲染下一帧游戏图像在这一步中,玩家要接着进行第三步中游戏人工智能和游戏逻辑执行的结果,将用来游戏的下一帧游戏动画产生。这个游戏图像通常放在游戏玩家不可见的缓存区(offscreen buffer area)内,所以玩家不会看到它逐渐被渲染的一般过程。紧接着该图像就被迅速拷贝到显示存储器中并在显示屏幕上显示出来。精彩内容,尽在百度攻略:第五步:游戏画面同步显示通常因为游戏设计和制作复杂程度的不同,游戏在计算机上运行的速度会编的时快时慢。例如:如果显示器屏幕上有10000个物体在动作,电脑芯片CPU 的负载就比只有100 个对象时重得多。从而造成游戏的画面刷新率(帧速率,frame rate)也变的会时高时低,但是这是让游戏玩家难以接受的。因此必须把游戏设计按照某个最大帧速率进行同步,并使用定时功能或等待函数来维持游戏画面同步。一般来讲能达到60帧/秒的帧速率就非常完美。 第六步:游戏再次循环这一步非常简单,只需返回到游戏循环的入口并重新执行上述的游戏的全部步骤。 第七步:游戏关闭精彩内容,尽在百度攻略:这一步是游戏的结束标志,表示游戏玩家将退出主程序或游戏循环,并返回到PC机操作系统。但是,在用户进行游戏结束之前,游戏玩家必须释放所有的资源并清理系统,这些释放操作对任何其他软件也是同样要做的。2.2.2游戏的一般架构在这里我们将讨论坦克大战游戏平台相关性、游戏相关立性、游戏元素对象组合、游戏元素类继承、游戏画面基于帧的编码、游戏基于函数的编码、游戏玩法操作顺序、游戏主角对象生命期,游戏任务的集成等等。精彩内容,尽在百度攻略:游戏平台独立性与平台相关性: 游戏制作与开发常常不由自主会使用很多独立于PC机操作系统和平台技术的相关概念。这些具体概念决定了游戏玩家在游戏中获得和体验到更深刻的愉悦感。从另一个角度来说,游戏设计一般也会它用特定PC机硬件特性来增强游戏的体现力。像这种体现力会尽可能使游戏玩家拥有—种令人沉浸于其中的而不知疲倦的感觉。一般来讲游戏架构设计是不应该依赖于PC机操作系统和PC机技术的,我们可以为游戏的架构设计一套独立于PC机平台的系统接口,而不是过分依赖于平台现有的系统接口,虽然接口本身具有平台独立特点,但是我们可以使用PC机安装的系统来创建特定平台来得到具体实现。因此,我们需要自主创建一个独立游戏架构的部分,主要目标就是要在任何可能的时候把下面的游戏操作事情变得更容易、更清楚一点,那就是需要我们把游戏的设计高层次概念在PC机装有操作系统还有平台技术给分别独立开来。游戏独立性和游戏相关性:优秀的游戏开发者如果想让一种架构在多个游戏里面都能使精彩内容,尽在百度攻略:用,那就需要让这种游戏架构拥有游戏独立性的特性。然而,如果游戏开发者只需要在一个游戏的几个平台上面使用相同一种架构的话,那也可以使用游戏的 部分架构和游戏的一些相关性。举个例子:如果游戏玩家控制了一个特定类型的游戏角色,玩家可以根据不同时间或不同地点角色状态的不同,它都将表现出很多不同类型动态的视觉效果,游戏开发者渲染的代码可能会根据是否需要访问游戏的相关状态,然后直接决定此游戏角色是否需要进行渲染。这种做法可以大大减少PC机系统接口的调用,从而达到大大简化代码并使游戏的运行速度大幅度得到提高。游戏元素对象组合与对象继承:要想使游戏架构结构完美无缺,方法之一就是要有选择使用模板方法这个独特设计模式,然后要为游戏设计创建一个应用类来派生类实例。如果这样做,游戏开发者就是要把游戏元素类的初始化和游戏元素销毁代码设计成其派生类可以重载的算法。这种独特设计模式被成为居于类的设计模式,所以它使用了特定元素类继承的方法来得到不同的方法的行为,另外游戏开发者会把游戏元素设计应用程序初始化和销毁步骤的方法是将其步骤分成一系列任务来处理完成。另外一个特殊任务系统类可以让游戏开发者用来调整任务的执行,一个特殊资源系统类可以让游戏开发者用来定位和管理任务列表和任务对象。现在游戏玩家使用大多数是基于对象游戏设计模式,因此游戏开发者使用了对象重新排列组合的方法,而其中我们的游戏元素资源系统则成了这些对象的中介者。如果我们使用这样的游戏开发者处理过任务系统意味着我们可以使用对象排列组合而不是集成的方法特殊性来创建一个新的游戏架构。我们的游戏设计的任务系统通过任务的接口控制任务的元素对象,而我们的游戏元素任务则通过调用游戏元素对象接口来进行工作。这同时也暗示着我们的游戏设计开发的架构不会有一个倒置的控制结构,而这往往是游戏开发者使用模板方法所固有的特性决定的。或许这个架构可说成是一个游戏元素对象架构,而不是一个游戏元素类架构,但是不可否认的是它是一个游戏的架构。2.2.3游戏的需求分析精彩内容,尽在百度攻略:坦克大战游戏需要设计一个用户的图形界面,将所有游戏的元素都能在这个界面上表现出来,界面能够显示用户的操作和控制,以实现人机交互功能。游戏玩家可以自由选择重新开始游戏,退出游戏,游戏设置,游戏帮助等功能。游戏界面中主要包含元素有坦克,树,阻挡墙和游戏用户所要保护的“基地”。游戏主角坦克:坦克分为两种,敌方坦克和我方坦克。我方和敌方坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。坦克之间不能穿越,碰撞到后自动调换方向。精彩内容,尽在百度攻略:障碍物树:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的元素,使得游戏更加贴切人性化。树的数目要适中,以游戏整体界面清晰美观来决定数目。障碍物墙:墙体分为两种,普通的墙和钢墙,普通的墙在受到子弹袭击时会损坏,而钢墙可以阻碍子弹的穿越。敌我双方的坦克均不能穿越两种墙体,但都可以摧毁普通墙体。普通墙体的数目配合其他元素合理安排,钢墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越钢铁墙而使得游戏无法进行下去。“基地”:用户方除了有一辆自己的坦克外还有一个要保护的基地,基地由普通墙体和树包围,基地受到子弹攻击后游戏立即结束,游戏玩家则输了本局游戏。精彩内容,尽在百度攻略:子弹:子弹可以由敌方和游戏玩家发射,且发射出去的子弹要以直线移动,不能以曲线移动,直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦克受到子弹攻击会减少血液当血液减少完时敌方死亡,死亡后坦克消失敌方坦克有三条生命。游戏玩家坦克受到子弹攻击后会减少血液,且坦克血液减少至完时则玩家坦克死亡一次,玩家有四条生命,此时如还有敌方坦克存在,则玩家方输掉本次游戏。草丛:界面中要包括草丛,草丛作用与树林不同,草丛坦克可以穿过。同样草丛的数目不限,以游戏界面整体美观来决定草丛的数目精彩内容,尽在百度攻略:方向:坦克和子弹都有方向,都能选择上下左右四个方向,且子弹的方向从属于坦克。第三章
游戏的开发简介3.1
Java语言的介绍精彩内容,尽在百度攻略:Java语言是美国的Sun公司于1995年推出的面向对象的程序设计语言,它具有支持网络编程、健壮、和安全、可移植性、支持多线程等许多优良特点。Java主要用于Internet应用程序的开发,Java从诞生就以高速发展已经从单纯的程序设计语言发展成为Internet的重要支撑的广泛的技术体系,被无数的优秀程序员使用作为主要的程序设计语言。Java语言开发的最初目的是为了方便在消费电子产品上开发应用程序,试图找到一种能广泛应用于各种电子设备的语言。消费类的电子产品种类繁多,包括平板电脑、机顶盒、手机等,但是尽管同一类电子产品也会因为所采用的处理器芯片和操作系统的不同,基本上都存在着跨平台的问题。Java语言具有的跨平台性很好的解决了这些缺点,所以得到了空前的快速发展。Java语言采用的是程序运行既要经过编译又要进行介绍解释,它根据自身的需求需要将解释型和编译型相结合的方式,采用一种“半编译半解释”的程序执行机制,Java程序最终执行要经过编译和解释两个重要的步骤。第一步,它使用Java编译器把Java程序编译成与操作系统无关的二进制代码;第二步,二进制代码要通过Java解释器来执行。Java程序的优点在于,无论什么机器,无论安装什么类型的操作系统,只要机器安装有Java解释器,就可以来执行二进制代码。Java字节码不能在操作系统上直接执行,需要在一个Java虚拟机的操作系统上执行程序的运行。3.2
游戏的开发环境精彩内容,尽在百度攻略:坦克大战游戏是在JDK的开发环境下,来设计实现游戏的基本的功能。首先要在SUN公司的网站上下载JDK安装包,本系统安装的的是JDK6.0版本,下载完成后然后双击安装。 安装好JDK后需要配置jdk1.6的环境,以便开发Java程序。配置方法如下:(1)在电脑的桌面上鼠标右键单击“计算机”,在弹出的的菜单中选择“属性”该选项,接着会显示“系统属性”的对话框。在接着选择“高级”选项卡中选择“环境变量”。在弹出的环境变量对话框中,选择“系统变量”点击“新建”按钮。在弹出的“新建系统变量”对话框中,输入变量名JAVA_HOME和它的变量值C:\ProgramFiles\Java\jdk1.6.0_43,单击“确定” 精彩内容,尽在百度攻略:(2)再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。其值为:“C:\Program Files\Java\jdk1.6.0_43\C:\Program Files\Java\jdk1.6.0_43\lib\tools.jar ”(要加.表示当前路径);双击Path,Path变量的含义就是系统在任何路径下都可以识别java命令,变量值为C:\Program Files\Java\jdk1.6.0_43\ 精彩内容,尽在百度攻略:(3)在安装和配置好环境变量后,要对JDK进行测试打开运行,输入CMD,分别输入java、javac若出现两命令的用法说明,则可以验证你的你环境配置成功,否则要按照上述方法重新进行配置。 精彩内容,尽在百度攻略:3.3
游戏的开发工具MyEclipse软件MyEclipse软件是在Eclipse的基础上通过添加自己的插件,来丰富其功能使其成为强大的开发工具。MyEclipse是企业工作平台(MyEclipse Enterprise Workbench ,简称 MyEclipse)是对Eclipse的功能扩展,我们可以利用它进行数据库和JavaEE的程序开发与设计以及应用程序服务器方面进行整合能极大提高我们的工作效率和学习效率。MyEclipse是功能丰富的JavaEE集成开发环境的集合,主要包括了完备的编码、调试、测试和发布功能,完整支持HTML、Struts、JSP、CSS、Javascript、Spring、SQL、Hibernate [1]。MyEclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合体,MyEclipse的功能非常强大,支持也十分广泛,特别是对各种开源产品的支持非常完美。MyEclipse目前支持Java Servlet、AJAX、 JSP、 JSF、Struts、Spring、Hibernate、EJB3、JDBC数据库链接工具等多项功能和方式。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属Eclipse开发工具的所有功能。在结构体现上,MyEclipse的主要特征可以被化分为7大类:精彩内容,尽在百度攻略:1.具有JavaEE模型结构。2.可以作为WEB开发工具来使用。3.可以作为EJB开发工具来开发程序。精彩内容,尽在百度攻略:4.能提供应用程序与服务器的连接,从而实现通信来实现程序运行。5.可以提供JavaEE项目部署服务功能。6.可以提供数据库服务,并提供数据支持。精彩内容,尽在百度攻略:7.MyEclipse整合帮助,来帮助开发者更好使用MyEclipse从事软件开发工作。对于以上MyEclipse每一种功能上的类别,在Eclipse中都有相应的功能部件与之对应,并通过一系列的插件来实现它们功能。MyEclipse在具体结构上的这种模块化方案,可以让我们在都可以不影响其他模块的前提下,对其中任一模块进行单独的扩展和升级。开发软件的画面截图如下图所示:精彩内容,尽在百度攻略: 第四章 坦克大战总体设计4.1游戏的具体设计精彩内容,尽在百度攻略:4.1.1坦克大战游戏运行的编写坦克大战游戏运行的编写com.game.run:run.java精彩内容,尽在百度攻略:package com.game.import com.game.frame.MainF//启动精彩内容,尽在百度攻略:public class run {public static void main(String[] args){精彩内容,尽在百度攻略:new MainFrame();}}精彩内容,尽在百度攻略:游戏运行后,游戏运行主界面将在屏幕上显示出来,如下图所示: 精彩内容,尽在百度攻略:4.1.2坦克大战小游戏主界面架构的编写坦克大战小游戏主界面架构的编写com.game.frame:主界面算法: import java.awt.BorderL精彩内容,尽在百度攻略:import java.awt.event.ActionEimport java.awt.event.ActionLimport javax.swing.ImageI精彩内容,尽在百度攻略:import javax.swing.JBimport javax.swing.JLimport javax.swing.JP精彩内容,尽在百度攻略:@SuppressWarnings("serial")public class GamePanel extends JPanel implements ActionListener{精彩内容,尽在百度攻略:JPanel cdpl=new JPanel();//菜单面板JLabel cdlb=new JLabel();//放置菜单图片JButton menubt=new JButton(new ImageIcon("images/mbtn.jpg"));//菜单按钮
JButton stopbt=new JButton(new ImageIcon("images/stop.jpg"));//暂停
JButton startbt=new JButton(new ImageIcon("images/start.jpg"));//开始精彩内容,尽在百度攻略:JButton replaybtn=new JButton(new ImageIcon("images/replay.png"));//重新开始
JButton nextmap=new JButton(new ImageIcon("images/xiayiguan.png"));//下一关
Gameframe gameframe=new Gameframe();MainFpublic GamePanel(MainFrame mainpanl)精彩内容,尽在百度攻略:{init();this.mainpanl=精彩内容,尽在百度攻略:this.setLayout(new BorderLayout());cdlb.setIcon(new ImageIcon("images/gnimg.jpg"));// // // // // // //精彩内容,尽在百度攻略:cdpl.setLayout(new BorderLayout());
cdpl.add(cdlb, BorderLayout.CENTER);
this.add(gameframe, BorderLayout.CENTER);
cdlb.setLayout(null);
menubt.setBounds(63, 645, 82, 36);
menubt.addActionListener(this);
cdlb.add(menubt);
stopbt.setBounds(66, 325, 50, 43);
stopbt.setBorder(null);
stopbt.addActionListener(this);
cdlb.add(stopbt);
startbt.setBounds(30,210, 72, 69);
startbt.addActionListener(this);
startbt.setBorder(null);
cdlb.add(startbt);
replaybtn.setBounds(25, 120, 90, 28);
replaybtn.addActionListener(this);
cdlb.add(replaybtn);
nextmap.setBounds(10, 420, 141, 40);
nextmap.addActionListener(this);
cdlb.add(nextmap);
this.add(cdpl, BorderLayout.EAST); } public void init() {
this.requestFocus(); } public void paint(Graphics g) {
g.setColor(Color.yellow);
Font myFont=new Font("黑体",Font.BOLD,24);
g.setFont(myFont);
g.drawString(mainpanl.gamepanel.gameframe.mapid+"2", 70, 119); } public void actionPerformed(ActionEvent e)//按钮监听方法 {
if(e.getSource()==this.menubt)
gameframe.Mainthread=
mainpanl.Mycard.show(mainpanl.panl, "setpanl");
else if(e.getSource()==this.stopbt)
gameframe.Mainthread=}
else if(e.getSource()==this.startbt)
gameframe.Mainthread=
else if(e.getSource()==this.replaybtn)
switch(gameframe.thismapid)
mainpanl.setpanl.ChioceMap(1);
mainpanl.setpanl.ChioceMap(2);
mainpanl.setpanl.ChioceMap(3);
mainpanl.setpanl.ChioceMap(4);
mainpanl.setpanl.ChioceMap(5);
else if(e.getSource()==this.nextmap)
switch(gameframe.thismapid)
mainpanl.setpanl.ChioceMap(2);
mainpanl.setpanl.ChioceMap(3);
mainpanl.setpanl.ChioceMap(4);
mainpanl.setpanl.ChioceMap(5);
} }游戏开始后,在主菜单中选择单人模式,则进入单人游戏模式,游戏画面如图所示:精彩内容,尽在百度攻略: 4.1.3游戏帮助算法设计精彩内容,尽在百度攻略:坦克大战游戏帮助实现算法HelpFrame.java import java.awt.BorderL import javax.swing.*;@SuppressWarnings("serial")public class HelpFrame extends JPanel {
public HelpFrame()
this.setToolTipText("游戏帮助");
this.setLayout(new BorderLayout());
lb=new JLabel(new ImageIcon("images/help.jpg"));
backbtn=new JButton(new ImageIcon("images/return.jpg"));
lb.setLayout(null);
backbtn.setBounds(450, 580, 110, 43);
lb.add(backbtn);
this.add(lb,BorderLayout.CENTER);
} }精彩内容,尽在百度攻略:4.2游戏的功能图坦克游戏大战系统主要分为三个主要功能模块,它们分别是子弹功能模块、面板模块、坦克功能模块,其中在子弹模块中,给出了子弹打中一系列物体是发生的反应,在坦克模块中,坦克通过吃取一系列的超级武器而获得多种不同的功能,因为坦克模块功能的加入,使游戏更加新颖,有趣,而在面板模块中,给与了游戏的一个场景,并在此场景中添加了一系列的组件。具体的功能结构图如图所示。精彩内容,尽在百度攻略: 4.3游戏的逻辑流程图点击运行后,游戏可以进行游戏设置、查看游戏帮助、选择游戏退出、开始游戏,点击开始游戏,进入游戏主面板可以选择单人模式或双人模式,进行游戏难度调节,返回主菜单,选择不同地图进行游戏,进入单人模式后可以选择重新开始,或者下一关。游戏界面有游戏提示: "欢迎进入坦克大战!当进入游戏界面时,先用鼠标点击一下游戏界面,再按W,D,S,A键分别向上,向右,向下,向左控制坦克移动,按空格键键发射子弹!游戏中会生成一些道具,兔子表示增加生命次数,心表示增加生命值!当我方坦克把敌方坦克全部消灭或者把敌方“基地”打掉,胜利!当我方坦克被全部打掉或我方的“基地”被打掉,游戏结束!游戏界面旁边的”开始“和“暂停”来控制游戏!预祝你玩得开心!";精彩内容,尽在百度攻略: 第五章
游戏详细设计 5.1游戏客户端和服务器设计精彩内容,尽在百度攻略:点击运行游戏要实现游戏客户端与服务器端通信才能是游戏正常运行,具体算法实现服务器端:TankSever.java public class TankServer {private static int ID = 100; //用于做客户端标识,把该标识传给客户端
public static final int TCP_PORT = 8888; // 端口
public static final int UDP_PORT = 6666; //UDP端口号
List&client& clients = new ArrayList&client&(); // 保存客户端连接
public void start() {
new Thread(new UDPThread()).start();
ServerSocket ser =
ser = new ServerSocket(TCP_PORT);
catch (IOException e)
e.printStackTrace();
while (true) {
Socket s =
s = ser.accept();
System.out.println("有一个客户端联接:" + s.getInetAddress() + ":"
+ s.getPort());
DataInputStream dis = new DataInputStream(s.getInputStream());
int udpPort = dis.readInt();
String ip = s.getInetAddress().getHostAddress();
Client cl = new Client(ip, udpPort);
clients.add(cl);
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeInt(ID++);
} catch (IOException e) {
e.printStackTrace();
if(s!=null){
s.close();
} catch (IOException e) {
e.printStackTrace();精彩内容,尽在百度攻略: }
} } } public static void main(String[] args) {
new TankServer().start(); } private class Client {
public Client(String ip, int udpPort) {
this.udpPort = udpP
private class UDPThread implements Runnable{
byte[] buf = new byte[1024];
// 不断监听接收客户端发送过来的数据,然后转发给其他客户端 public void run() {
DatagramSocket ds =
ds = new DatagramSocket(UDP_PORT);
}catch (Exception e) {
e.printStackTrace();
while(ds!=null){
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
System.out.println("收到一个Packet");
//把接收到的数据转发给其他客户端
for(int i=0;i&clients.size();i++){
Client cl = clients.get(i);
dp.setSocketAddress(new InetSocketAddress(cl.ip, cl.udpPort));
ds.send(dp);
} 精彩内容,尽在百度攻略:} catch (IOException e) {e.printStackTrace();}精彩内容,尽在百度攻略:}} 精彩内容,尽在百度攻略:}}客户端接收服务器的消息,客户端:TankClient.java精彩内容,尽在百度攻略:import java.io.ByteArrayInputSimport java.io.DataInputSimport java.io.DataOutputS精彩内容,尽在百度攻略:import java.io.IOEimport java.net.DatagramPimport java.net.DatagramS精彩内容,尽在百度攻略:import java.net.Simport java.net.SocketEimport java.net.UnknownHostE精彩内容,尽在百度攻略: import com.game.frame.G 精彩内容,尽在百度攻略:public class TankClient {//UDP端口号private int udpPort = 8057;精彩内容,尽在百度攻略:DatagramSocket ds =Gpublic TankClient(Gameframe gf){精彩内容,尽在百度攻略:this.gframe =try{精彩内容,尽在百度攻略:ds = new DatagramSocket(udpPort);}catch (SocketException e)精彩内容,尽在百度攻略:{e.printStackTrace();}精彩内容,尽在百度攻略:}//TCP连接public void connect(String ip,int port)精彩内容,尽在百度攻略:{Socket s =try {精彩内容,尽在百度攻略:s = new Socket(ip,port); //通过TCP连接到服务器端:把UDP端口发给服务器端;接收服务器端分配的ID号System.out.println("连接到服务器");精彩内容,尽在百度攻略:DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeInt(udpPort);DataInputStream dis = new DataInputStream(s.getInputStream());int id = dis.readInt();精彩内容,尽在百度攻略:System.out.println("服务器给的ID号:"+id);for(int i=0;i&gframe.Mytank.size();i++){精彩内容,尽在百度攻略:gframe.Mytank.get(i).id = //把ID号赋值给tank类的id属性
}}catch (UnknownHostException e)精彩内容,尽在百度攻略:{e.printStackTrace();}精彩内容,尽在百度攻略:catch (IOException e){e.printStackTrace();精彩内容,尽在百度攻略:}finally{精彩内容,尽在百度攻略:if(s!=null){try精彩内容,尽在百度攻略:{s.close();s =精彩内容,尽在百度攻略:}catch (IOException e){精彩内容,尽在百度攻略:e.printStackTrace();}}精彩内容,尽在百度攻略: } 精彩内容,尽在百度攻略:// for(int i=0;i&gframe.Mytank.size();i++)// {TankMsg msg =
new TankMsg(gframe.Mytank.get(0));精彩内容,尽在百度攻略:send(msg);// } 精彩内容,尽在百度攻略:new Thread(new UDPRecThread()).start();}//发送数据精彩内容,尽在百度攻略:public void send(Messege msg){msg.send(ds, "127.0.0.1", TankServer.UDP_PORT);}精彩内容,尽在百度攻略: //UDP接收线程private class UDPRecThread implements Runnable{精彩内容,尽在百度攻略:byte[] buf = new byte[1024]; public void run() {精彩内容,尽在百度攻略:while(ds!=null){DatagramPacket dp = new DatagramPacket(buf,buf.length);try {精彩内容,尽在百度攻略:ds.receive(dp);System.out.println("收到一个服务器端发送来的Packet");//解析消息精彩内容,尽在百度攻略:parse(dp);} catch (IOException e) {e.printStackTrace();精彩内容,尽在百度攻略:}}}精彩内容,尽在百度攻略: //解析接收到的DatagramPacket数据包private void parse(DatagramPacket dp) {精彩内容,尽在百度攻略:ByteArrayInputStream bais = new ByteArrayInputStream(buf, 0, dp.getLength());
DataInputStream dis = new DataInputStream(bais);int msgType = 0;try {精彩内容,尽在百度攻略:msgType = dis.readInt();} catch (IOException e) {e.printStackTrace();精彩内容,尽在百度攻略:}Messege msg =switch (msgType) {精彩内容,尽在百度攻略:case Messege.TANK_MSG:msg = new TankMsg(gframe);msg.parse(dis);精彩内容,尽在百度攻略:case Messege.TANK_MOVE_MSG:msg = new TankMoveMsg(gframe);精彩内容,尽在百度攻略:msg.parse(dis);}精彩内容,尽在百度攻略:}}}精彩内容,尽在百度攻略:客户端通过接受服务器端的数据包,并解析数据包来完成与服务器端通信,从而实现游戏正常运行。5.2游戏主要属性的设计子弹(Ball)的算法设计: public Ball(int x,int y,int Drict,Boolean bl,Gameframe gf)//炮弹构造函数精彩内容,尽在百度攻略:{this.x=x;this.y=y;精彩内容,尽在百度攻略:drict=Dthis.bl=gframe=精彩内容,尽在百度攻略:this.g=gframe.getGraphics();} 精彩内容,尽在百度攻略:public void paint(Graphics g)//画炮弹的方法{switch(drict)精彩内容,尽在百度攻略:{case 0:{精彩内容,尽在百度攻略:g.drawImage(blupimg, x, y, null);ballmove();}精彩内容,尽在百度攻略:case 1:{g.drawImage(bldownimg, x, y, null);精彩内容,尽在百度攻略:ballmove();}case 2:精彩内容,尽在百度攻略:{g.drawImage(blleftimg, x, y, null);ballmove();精彩内容,尽在百度攻略:}case 3:{精彩内容,尽在百度攻略:g.drawImage(blrightimg, x, y, null);ballmove();}精彩内容,尽在百度攻略:}}}精彩内容,尽在百度攻略:障碍物树(Tree)的算法设计:public TreeBar(){}public TreeBar(int x,int y,Gameframe gf)精彩内容,尽在百度攻略:{this.x=x;this.y=y;精彩内容,尽在百度攻略:gframe=}public void paint(Graphics g)精彩内容,尽在百度攻略:{g.drawImage(Tbarimg, x, y, null);}精彩内容,尽在百度攻略:障碍物草丛(Lawn)的算法设计: public class LawnBar extends AllBar{GToolkit tool=Toolkit.getDefaultToolkit();精彩内容,尽在百度攻略:ImageS2barimg=tool.createImage(LawnBar.class.getClassLoader().getResource("images/cc.gif"));//草丛背景图public LawnBar()精彩内容,尽在百度攻略:{}public LawnBar(int x,int y,Gameframe gf){精彩内容,尽在百度攻略:this.x=x;this.y=y;gframe=精彩内容,尽在百度攻略:}public void paint(Graphics g){精彩内容,尽在百度攻略:g.drawImage(S2barimg, x, y, null);}public Rectangle getRe(){精彩内容,尽在百度攻略:Rectangle re = new Rectangle(x,y,45,63);}精彩内容,尽在百度攻略:}障碍物普通墙和钢墙的算法设计:普通墙:WallBar精彩内容,尽在百度攻略:public WallBar(int x,int y,int life,Gameframe gf){this.x=x;精彩内容,尽在百度攻略:this.y=y;this.lifevalue=gframe=精彩内容,尽在百度攻略:}public void paint(Graphics g){精彩内容,尽在百度攻略:g.drawImage(Zbarimg, x, y, null);}钢墙:IronBar精彩内容,尽在百度攻略:public IronBar(int x,int y,Gameframe gf){this.x=x;精彩内容,尽在百度攻略:this.y=y;gframe=}精彩内容,尽在百度攻略:public void paint(Graphics g){g.drawImage(S1barimg, x, y, null);精彩内容,尽在百度攻略:}坦克的算法设计包括玩家坦克和敌方坦克:1.玩家的坦克设计:精彩内容,尽在百度攻略:public int x,y;//坦克坐标 //坦克ID号public int x0,y0;//保存坦克初始位置精彩内容,尽在百度攻略:public int live=40;//坦克生命值GBall bal1,bal2;精彩内容,尽在百度攻略:Cpublic int D//坦克移动的方向(0:向上;1:向下;2:向左;3:向右)int x1,y1;精彩内容,尽在百度攻略:public B//判断我方坦克是否升级为双炮坦克public boolean isGood =public Tank(int x,int y,int dri,int live,Gameframe gf)//构造函数精彩内容,尽在百度攻略:{this.x=x;this.y=y;精彩内容,尽在百度攻略:gframe=this.live=this.Drict=精彩内容,尽在百度攻略:x0=x;y0=y;}public Boolean f=精彩内容,尽在百度攻略:public void Ifintersects()//判断我方坦克是否与障碍物,敌方坦克,游戏边界相遇,相遇则回退{ 精彩内容,尽在百度攻略:if(this.getTR().intersects(gframe.above)||this.getTR().intersects(gframe.below)||this.getTR().intersects(gframe.left)||this.getTR().intersects(gframe.right))//判断是否到达游戏边界
{x=x1;y=y1;精彩内容,尽在百度攻略:}for(int i=0;i&gframe.bar.size();i++){精彩内容,尽在百度攻略:if(this.getTR().intersects(gframe.bar.get(i).getRe())&&!(gframe.bar.get(i) instanceof LawnBar))//判断是否装上障碍物,且能通过草丛障碍物{x=x1;精彩内容,尽在百度攻略:y=y1;}}精彩内容,尽在百度攻略:for(int i=0;i&gframe.enemy.size();i++)//判断是否和地方坦克相遇{if(this.getTR().intersects(gframe.enemy.get(i).getTR()))精彩内容,尽在百度攻略:{x=x1;y=y1;精彩内容,尽在百度攻略:}}for(int i=0;i&gframe.Mybase.size();i++)//与我方基地相撞后回退精彩内容,尽在百度攻略:{if(this.getTR().intersects(gframe.Mybase.get(i).getRe())){精彩内容,尽在百度攻略:x=x1;y=y1;}精彩内容,尽在百度攻略:}for(int i=0;i&gframe.Enemybase.size();i++)//与敌方基地相撞后回退{精彩内容,尽在百度攻略:if(this.getTR().intersects(gframe.Enemybase.get(i).getRe())){x=x1;精彩内容,尽在百度攻略:y=y1;}}精彩内容,尽在百度攻略:}public void move() //坦克移动{精彩内容,尽在百度攻略:x1=x;y1=y;if(f){精彩内容,尽在百度攻略:switch(Drict){case 0:精彩内容,尽在百度攻略:{y-=12;Ifintersects();精彩内容,尽在百度攻略:}case 1:{精彩内容,尽在百度攻略:y+=12;Ifintersects();}精彩内容,尽在百度攻略:case 2:{x-=12;精彩内容,尽在百度攻略:Ifintersects();}case 3:精彩内容,尽在百度攻略:{x+=12;Ifintersects();精彩内容,尽在百度攻略:}}}精彩内容,尽在百度攻略: }2.敌方坦克设计算法:精彩内容,尽在百度攻略:public EnemyTank(int x, int y, int dri, int live, Gameframe gf){super(x, y, dri, live, gf);精彩内容,尽在百度攻略:}public int time,n;public void Ifintersects()//判断敌方坦克是否与障碍物,我方坦克,游戏边界相遇,相遇则回退精彩内容,尽在百度攻略:{ if(this.getTR().intersects(gframe.above)||this.getTR().intersects(gframe.below)||this.getTR().intersects(gframe.left)||this.getTR().intersects(gframe.right))//判断是否到达游戏边界,与我方坦克相遇精彩内容,尽在百度攻略:{if(this.getTR().intersects(gframe.above))Drict=1;精彩内容,尽在百度攻略:else if(this.getTR().intersects(gframe.below))Drict=0;else if(this.getTR().intersects(gframe.left))精彩内容,尽在百度攻略:Drict=3;else if(this.getTR().intersects(gframe.right))Drict=2;精彩内容,尽在百度攻略:x=x1;y=y1;}精彩内容,尽在百度攻略:for(int i=0;i&gframe.Mytank.size();i++){if(this.getTR().intersects(gframe.Mytank.get(i).getTR()))精彩内容,尽在百度攻略:{x=x1;y=y1;精彩内容,尽在百度攻略:}}for(int i=0;i&gframe.bar.size();i++)精彩内容,尽在百度攻略:{if(this.getTR().intersects(gframe.bar.get(i).getRe())&&!(gframe.bar.get(i) instanceof LawnBar))//判断是否装上障碍物,且能通过草丛障碍物{精彩内容,尽在百度攻略:x=x1;y=y1;}精彩内容,尽在百度攻略:}for(int i=0;i&gframe.enemy.size();i++){精彩内容,尽在百度攻略: if(this.getTR().intersects(gframe.enemy.get(i).getTR())&&gframe.enemy.get(i)!=this)//判断敌方是否相互相遇{精彩内容,尽在百度攻略:x=x1;y=y1;}精彩内容,尽在百度攻略:}for(int i=0;i&gframe.Mybase.size();i++)//与我方基地相撞后回退{精彩内容,尽在百度攻略:if(this.getTR().intersects(gframe.Mybase.get(i).getRe())){x=x1;精彩内容,尽在百度攻略:y=y1;}}精彩内容,尽在百度攻略: } for(int i=0;i&gframe.Enemybase.size();i++)//与敌方基地相撞后回退 {
if(this.getTR().intersects(gframe.Enemybase.get(i).getRe()))
} }第六章 游戏系统的功能测试精彩内容,尽在百度攻略:6.1游戏菜单测试1.在MyEclipse开发软件中点击run,可以运行游戏,游戏主界面如下图:精彩内容,尽在百度攻略: 2.点击游戏帮助菜单:精彩内容,尽在百度攻略: 3.游戏设置菜单测试:精彩内容,尽在百度攻略: 4.游戏退出主菜单测试精彩内容,尽在百度攻略: 5.开始游戏菜单测试:精彩内容,尽在百度攻略: 6.2游戏的进程测试1.在游戏主界面选择单人模式进入游戏:精彩内容,尽在百度攻略: 2.消灭全部敌方坦克玩家获得胜利:精彩内容,尽在百度攻略: 3.进入下一关界面如图所示:精彩内容,尽在百度攻略: 4.进行游戏时可以选择返回主界面,点击MENU。精彩内容,尽在百度攻略: 5.进行游戏时,选择关闭游戏:精彩内容,尽在百度攻略: 5.当玩家坦克被完全消灭或基地被攻破。显示精彩内容,尽在百度攻略:GAMEOVER: 精彩内容,尽在百度攻略:6.3测试分析与小结通过前面的游戏主要测试,证明了该游戏设计和开发的系统数据处理具有安全性及稳定性,特别是在游戏系统数据出错情况下能够给出正确提示,当游戏系统出现异常时,能够即及时正确捕获并进行相应的处理或给予提示,从而能坦克大战各项游戏的功能都能实现,保障游戏系统的正常稳定安全运行。 精彩内容,尽在百度攻略:第七章
总结该游戏是基于C/S架构开发一款单机版坦克大战游戏, 该网络游戏包括游戏 地图的处理、双方作战元素(坦克和子弹) 的生成、消减和控制, 以及敌方坦克和子弹运行的控制, 双方在游戏中的对话,超级武器的生成,实现了特定场景中的敌我双方坦克的对战, 敌方坦克由系统控制, 自动的发射子弹; 我方坦克由玩家控制, 系统为玩家提供控制坦克运行和子弹发射攻击的方法。该游戏软件具有一定的复杂性和可玩性。在该游戏的设计与实现过程中,不可避免的遇到一些技术方面的问题,比如对游戏地图加载技术、坦克间的检测碰撞技术、地图中障碍物的加载等,这些问题的解决是本游戏的关键。当然,该游戏有待于进一步的提高,比如更大程度的提高敌方坦克智能化、游戏中添加宝物(物品),增强可玩性等等。精彩内容,尽在百度攻略:但几乎每一个计算机程序都会有这样会那样的不足,尤其是未经过精心维护的非商业软件。即使是作为操作系统的各种版本的Windows也时常会发生许多类型的错误和漏洞。本游戏程序对于初涉领域的毕业设计课题来说,尤其是开始初期,感觉逻辑复杂,难以控制,因此至今还有一些未能解决的bug。目前发现的bug和未完善的功能如下:敌人的人工自能变化较少,不够理想。精彩内容,尽在百度攻略:有时会发生敌我双方坦克,交差在一起,双方不能移动。已经解决的重要bug:1.当发出子弹到达边界并同时还在草丛中时会抛出数组边界异常。精彩内容,尽在百度攻略:2.有时会莫名其妙的死机。3.当坦克在草丛中时,对方坦克发出的子弹不能将其击毁。致谢精彩内容,尽在百度攻略:经过一个多月努力,终于开发出了这款坦克大战游戏,在此要感谢王硕导师耐心指导,以及他在我系统开发过程中给出的指导性的方案和一般架构。王硕导师向我推荐与克大战游戏开发的相关书籍和材料,让我更快的学习到重要的知识以便很好帮助我完成这个毕业论文的设计。要感谢我的同学在坦克大战游戏的开发过程中,给出的宝贵性的建议,比如:游戏的音乐选取,背景设置等。在老师和同学耐心帮助下,我通过努力完成了这个游戏的开发与实现,在我的脑海里有同学和老师帮助我调试程序、写该错误背影,他们很好解决我的游戏不足之处,感谢你们!参考文献精彩内容,尽在百度攻略:[1] 姜志强 《Java语言程序设计》,电子工业出版社,2007-04[2] 孙更新, 宾晟, 吕婕.《Java毕业设计指南与项目实践》,北京科技出版社,2007-08[3] 殷兆麟《Java语言程序设计》, 高等教育出版社, 2002-09精彩内容,尽在百度攻略:[4] 侯俊杰《 Java语言应用开发基础》,科学出版社,2009-03[5]徐立,孙计安.《Java应用与开发案例教程》,清华大学出版社,2005-07[6] 王克宏,郝建文《Java技术教程》清华大学出版社,2002-09精彩内容,尽在百度攻略:[7] 赵强, 陈洪译《 Java程序设计高级主题》
北京大学出版社,2004-06[8]张基温,朱嘉钢,张景莉.《 Java程序开发教程》清华大学出版社,2002-12[9]Bruce Eckel《Java编程思想》机械工业出版社,2007-06精彩内容,尽在百度攻略:[10] 阎宏《Java与模式》电子工业出版社,2002-11附录
用户手册游戏的运行环境:精彩内容,尽在百度攻略:坦克大战游戏使用Java语言开发的一款游戏,运行需要有Java虚拟机。也可以在Java模拟器中配置好虚拟机也能运行此游戏。游戏操作:当进入游戏界面时,先用鼠标点击一下游戏界面,再按W,D,S,A键分别向上,向右,向下,向左控制坦克移动,按空格键键发射子弹!游戏中会生成一些道具,兔子表示增加生命次数,心表示增加生命值!当我方坦克把敌方坦克全部消灭或者把敌方基地打掉,胜利!当我方坦克被全部打掉或我防坦克被打掉,游戏结束!游戏界面旁边的”开始“和“暂停”来控制游戏!游戏的硬件要求:精彩内容,尽在百度攻略:硬件:要有512M内存以上CPU:intel奔腾4以上处理器操作系统:window xp、window 7精彩内容,尽在百度攻略:4.游戏的规则:游戏开始后玩家要消灭系统给的所有敌人并保证基地不被破坏即可进入下一关,表示此关已挑战成功,在途中,可通过各种超级武器是大本营编程钢墙而无法被敌人攻破,增加生命数,获得短暂的隐身,增强子弹的力量,吃到INT图标则可将敌人全部杀死。若在规定的时间内无法将敌人全部消灭或者大本营被敌人攻破,则判定为输。另外,玩家可以通过帮助来获取游戏的规则,可以通过暂停键停止游戏,也可以在游戏中互通消息。 精彩内容,尽在百度攻略:
相关攻略推荐

我要回帖

更多关于 坦克大战游戏 的文章

 

随机推荐