基于JAVA的五人制足球游戏攻防策略.docx
- 文档编号:8726362
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:72
- 大小:1.30MB
基于JAVA的五人制足球游戏攻防策略.docx
《基于JAVA的五人制足球游戏攻防策略.docx》由会员分享,可在线阅读,更多相关《基于JAVA的五人制足球游戏攻防策略.docx(72页珍藏版)》请在冰点文库上搜索。
基于JAVA的五人制足球游戏攻防策略
淮海工学院
毕业设计(论文)说明书
题目:
基于JAVA的五人制足球游戏攻防策略
的研究与实现
作者:
学号:
系(院):
专业班级:
计算机科学与技术专业023班
指导者:
评阅者:
2006年6月连云港
毕业设计(论文)中文摘要
基于Java的五人制足球游戏攻防策略的研究与实现
摘要:
本设计是一款基于Java的五人制足球游戏及对其的研究与开发。
本课题是一款模拟经营和实时对战混合的足球游戏。
它的大体设计内容有:
游戏引擎的设计,游戏的客户端的设计,游戏的服务端设计,游戏的数据库的设计。
游戏引擎是游戏的灵魂,它是控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按正确的音量正确的输出声音等等,整个游戏的引擎可分为如下几个部分:
系统、控制台、支持系统和渲染系统。
本文从游戏的背景研究和发展现状开始,详细描述了整个游戏的制作过程。
系统设计中划分出了游戏大致的功能模块,包括:
图象系统、声音系统、渲染系统、物理系统和人工智能系统。
详细设计阶段,将功能模块进行了更深层次的划分,并给出了详细的实现代码,最后对整个设计给出了最终的实现程序。
游戏的亮点在于它加入了仿真系统的设计。
游戏中的模式是按照现实的实际情况作为参考,设计了重力和碰撞模块等等其他方面的内容。
另一重要方面在于游戏的智能设计,让球员具有学习和信息采集等能力。
但是,游戏中仍然存在许多缺点,很多功能都不是很完善。
在这一方面的设计仍需要多多加强。
关键词:
线程;人工智能;图形系统;物理系统等。
毕业设计(论文)外文摘要
ResearchandDevelopmentoftheFootballGamebyFivePlayersbasedonJava
Abstract:
Thisdesignisafootballgamebyfiveplayersbasedonjava,andalso,theresearchandthedevelopmentofthegame.Thistopicisbusinessandreal-timecombatsimulationsectionofthefootballgamemixed.Itsbroaddesignelements:
thegameenginedesign,client-gamedesign,game-designservices,gamesdatabasedesign.Gameengineisthesoulofthegame,whichisthemainprocedurestocontrolallgamefunctions,fromthecalculationofthecollision,physicssystemandtherelativepositionofobjectstoacceptplayerinput,andbythecorrectvolumeexportedcorrectvoice,andsoon,theentiregameenginecanbedividedintothefollowingcomponents:
systems,controlandsupportsystemsandreducesystem.
Thistextstartswiththebackgroundofthegameandthepresentdevelopofthegame,itdescribestheparticularprocessofthewholegame.Inthesystemdesign,itdividethemoduleofthefunction,include:
graphicsystem,soundsystem,reducesystemandartificialintelligencesystem.Intheparticulardesign,dividethemoduleofthefunctiontothedemarcationofthedeeperlevelofstructure.Andgiverealizesdetailedcode,finally,givethefinishedprocess.
Thedesignofthetruesystemisthebestdesignofthegame.Themodeinthegameconsultsaccordingtotherealisticactualcircumstanceconductandactions,designedthegravitymoldpieceandhitmoldpieceandanyothers.Anotherimportantaspectistheintelligencedesignofthegameislettheplayershavingtheabilityofstudyingandcollectinginformation.But,thegamestillhavealotofweakness,somefunctionisnotveryperfect.So,thegamestillneedmoredesign.
Keywords:
Threads;Artificialintelligence;Graphicssystem;Physicssystem.
目录
1引言1
1.1课题的研究背景与意义1
1.1.1课题的研究背景1
1.1.2课题的研究意义2
1.1.3课题研究的现状和发展趋势2
1.2Java语言的特点及其与游戏的结合3
1.2.1Java语言的特点3
1.2.2Java与网络的结合4
1.3关于足球仿真系统5
1.3.1引言5
1.3.2多智能体系统5
1.3.3机器人足球系统的典型结构6
1.3.4结论7
1.4可行性分析7
1.4.1经济可行性7
1.4.2技术可行性8
1.4.3操作可行性9
1.4.4社会可行性9
1.5本章节小结10
2需求分析11
2.1系统初步分析11
2.1.1用户需求分析11
2.1.2系统的功能需求分析11
2.1.3系统的可靠性和可用性需求分析13
2.1.4本系统所要实现的功能13
2.2数据流分析14
2.3数据字典15
2.4本章节小结15
3总体设计16
3.1系统开发16
3.1.1系统开发的原则16
3.1.2系统设计阶段16
3.1.3结构设计阶段18
3.2攻防策略的研究19
3.2.1进攻策略研究19
3.2.2防守策略研究22
3.3本章节小结22
4.详细设计23
4.1图形系统的设计23
4.1.1球员和球的图象显示23
4.1.2球场图象显示24
4.2声音系统的设计25
4.2.1球场的音效输出25
4.3渲染系统的设计26
4.3.1球场图象裁减变化26
4.3.2球员动画显示27
4.4物理系统的设计37
4.4.1重力系统37
4.4.2碰撞系统38
4.5人工智能系统的设计39
4.5.1球员数据库信息采集39
4.5.2球员学习系统40
4.5.3环境变量44
4.6游戏有待提高之处44
4.7本章节小结45
5游戏的设计环境和Java游戏系统特点46
5.1游戏的开发环境和运行环境46
5.2Java游戏系统的特点及本作游戏的特点46
5.2.1选择Java游戏系统的原因46
5.2.2本作游戏的特点介绍47
5.3本章节小结48
6用户使用手册49
6.1系统功能及用户简介49
6.1.1系统功能49
6.1.2系统运行环境简介49
6.2系统运行与操作指南49
结论50
致谢51
参考文献52
1引言
游戏,如今俨然已经成为人们生活中不可或缺的元素。
游戏可以简单地理解为调节人们生活节奏和缓解人们生活压力的一种手段。
现在理解的游戏基本意义都是娱乐性质较浓,要有特定的行为模式,遵循一定规则以达到游戏者目的的行动。
游戏的最初目的就是让游戏者(玩家)在游戏中得到放松。
游戏一直存在于人类活动中,如今定义的游戏从早期的猜谜游戏,发展到如今的单机RPG游戏,网络游戏等,已经升华为更高级别意义上的娱乐活动,对人们的感官刺激也越发强烈,得到的乐趣也更多。
足球,是当今世界最受瞩目的运动。
从出现现在实际意义上的游戏开始,运动类的游戏一直是比较受到广大游戏者的瞩目的。
其中的佼佼者便是足球类的游戏,这也是得益于足球运动的流行。
伴随着人类足球的越来越受人喜欢,足球游戏的发展也已经越来越受到人们的关注。
对于足球游戏的研究,也从层面上的图形完善到达高层次的人工智能研究,涉及到的领域也延伸到机器人的足球游戏研究。
对于一个好的足球游戏而言,重要的是如何让其更贴近于真正的足球运动,让游戏者真正能在游戏中体验到足球运动的乐趣。
对于设计者而言,就是要在游戏中设计更多的变量元素以及更多变的算法,使游戏更具真实感。
本作中,考虑教多的就是这点,让游戏更能真实地表现出来。
1.1课题的研究背景与意义
1.1.1课题的研究背景
世界上最早诞生的游戏类型就是球类游戏,而最早的足球游戏可能要上溯到上个世纪的70年代。
由于硬件条件的限制,那时的游戏画面,线条简单,声音单调,在由几个简单线条构成的所谓的球场上,根本看不到球员,只是几根竖条在做着前后左右的机械运动,一个白点-足球,就在这些堆砌的框框中飘来荡去。
当任天堂横空出世的那个年代,足球游戏也确确实实迈出了自己战战兢兢和呀呀学语的第一步。
举一个很简单的例子,当时在红白机上有一款五人制足球游戏,名字就叫《足球》,球员一律都是看不清眉眼高低的大头娃娃,足球做得和腿一般高,球员到了场上就不分你我的来回奔跑,且跑动都是千篇一律,丝毫没有战术可言,球速、球员跑动以及足球运动的轨迹都是那么的莫名其妙。
在当时那个任天堂一统天下的时代,由于8位机的机能所致,在表现平面的动作、射击类或是构图简单的RPG、SLG类型的游戏会稍稍占优,而在表现大场面并需要表现高智能AI上面,则会显得捉襟见肘,在那个游戏机方兴未艾的时候,我们没有见到一款可以让玩家留有印象的足球游戏,在那个随便一款创意新颖即可以大卖特卖的年代里,这不能不说是一种遗憾。
而造成这种情况还有一个更深层次的原因,即当时日本足球的水平位居亚洲中下游,全民上下对足球的认知和理解远不如今,因此对这种现象,我们也就可想而知了。
由于在那个时候,电脑对国人来讲,仍然属于一种奢侈品,因此,我们在电脑上所见到的足球游戏就更是凤毛麟角。
足球游戏此时并未形成体系,犹如散兵游勇。
说来也巧,每当四年一届的世界杯举行的时候,电视游戏主机就会在机能上发生一次质的飞跃。
每一次机能的提升,都会给各种游戏类型带来一次从画面到声音的巨大变革,而电视游戏的发展和电脑硬件的发展是紧密结合在一起的,也可称得上是相辅相成和相得益彰。
这一时期的时间跨度应该是从94年至98年前后这一段时期,随着硬件性能的提升,已经使3D化已经成为可能,足球游戏在这一时期,也有了突飞猛进的改观。
在那个多媒体盛行的年代里,足球游戏依托于硬件的进步,自身也取得了不俗的成绩,在那个群雄并举的时代,造就了像EA、Konami这样的“足球专家”,但与此同时,也有许多游戏厂商退出了足球游戏的制作。
虽然这一时期的足球游戏在品质上和趣味性上有了巨大改观,但不能否认,游戏中仍然存在着致命的硬伤,在合理性上也有着一种难以逾越的瓶颈-即在真实性和游戏性的平衡掌握上,就如EA、Konami这样的大牌足球游戏制作公司都在鱼和熊掌间徘徊,其它的游戏公司发行的足球游戏就更可想而知了。
与此同时,玩家也不再仅仅满足于精美的画面、浮华的CG和动听的音效,他们真正要求的是一种好玩刺激但又不失真实性的足球游戏的出现,足球的黄金时代就要到来了。
1.1.2课题的研究意义
当今世界,足球受到越来越多人的喜爱,每四年一次的足球世界杯,几乎成为了全球人民共同的盛会。
一个国家的足球水平甚至代表了一个国家的名望。
当越来越多人投入到这个足球盛会的时候,也有一部分人在热爱足球的基础上投入到另一个疯狂的事业中,那就是机器人踢足球,要完成的工作是要让自己研究的机器人也能在球场上自如地带球,过人,传球,甚至漂亮绝顶的射门。
这就是本课题需要完成的任务,虽然不能真正实现如此多让人心驰神往的功能,但是这样的研究将是未来几年里在机器人研究领域最尖端的研究。
1.1.3课题研究的现状和发展趋势
机器人足球比赛是一个多智能体系统的典型问题。
涉及到的人工智能问题主要有听觉与视觉、状态机、概率机、攻击与避让模式和进化。
游戏中的人工智能实际上就是使生成的Bot具有一定的行为,行为的感觉很重要。
设计游戏的人工智能时,要自上而下设计。
先考虑Bot要什么样子,然后再实现这个样子。
很多人喜欢自上而下设计人工智能,先设计复杂的模式与基础结构。
例如,也许不同Bot要有不同搜索模式,象游戏者一样在迷宫中散步,但在三维世界中,游戏者可能以为Bot是随机出现的,要来攻击的。
因此要考虑游戏者看到的AI生成应该是什么样子,然后在进行设计。
我们的意图是通过提供引人瞩目但又非常困难的挑战,将机器人足球比赛作为促进人工智能和机器人学研究的工具。
促进研究的有效途径是制定一个长期目标,而不拘泥与某一特定应用。
当这个目标完成时,将产生巨大的社会影响,这就可以称之为重大挑战计划。
建造一个会踢足球的机器人本身并不能产生巨大的社会和经济影响,但是这种成功的确会被认为是这个领域的重大成果。
我们把这种计划称为划时代的计划。
RoboCup既是一个标准问题,也是一个划时代的计划。
现在的游戏制作业已抬起头了,人们的生活要比过去丰富、自由,于是许多人开始寻找自己的价值,游戏圈也是如此----有的人从玩游戏的过程中找到了,有的人从做游戏的过程中找到了。
网络游戏对程序的跨平台性和安全性有很高的要求,所以Java是最佳的实现语言。
1.2Java语言的特点及其与游戏的结合
1.2.1Java语言的特点
Java能够取得如此的成功,是因为它在设计时的目标就定位在要解决当今程序员们所面临的众多问题。
Java的基本目标之一就是要提高生产率。
生产率来源于许多方面,但是Java希望在语言方面相对于它的前辈有明显的提高,从而为程序员提供更大的便利。
1.系统易于表达、易于理解
被设计用来适应问题的“类”,在表达问题的能力上显得更强。
这意味着当你编写代码时,你是在用问题空间的术语,而不是计算机——也就是解空间——的术语,来描述解决方案。
可以用更高层的概念来处理问题,并且只用一行代码就可以做更多的事。
易于表达所带来的另一个好处就是易于维护,维护在程序生命周期中所占的成本比例极大。
如果程序易于理解,那么他必定易于维护。
同时,这也降低了创建和维护文档的费用。
2.类库的巨大影响力
创建程序最快捷的方式就是使用已经编写好的代码:
类库。
Java的主要目标之一就是要使类库更易于使用。
这是通过将类库转型为新的数据类型来实现的,因此,引入类库意味着在语言中添加了新的数据类型。
因为Java编译器会照管类库的使用方式——确保正确地初始化和回收垃圾,并保证其他方法被正确地调用,因此,你只需专注于你想让类库做些什么,而不必关心应如何去做。
3.错误处理
在C语言中,错误处理一直是一个声名狼籍的问题,而且经常被忽视——经常只能靠上帝保佑了。
如果你在构建一个大型的、复杂的程序,那么没有什么比在程序某处暗藏了一个错误,而你却没有任何能够暗示它在何处的线索更糟糕的事情了。
Java异常处理便是一种能够确保错误必须被报告,而且对此必须有所响应的机制。
4.大型程序设计
许多传统语言在程序大小和复杂度方面都有内置的限制。
例如,BASIC可能对某类问题的解决能力非常强,可以快速地创建解决方案,但是如果程序长度超过数页,或者超出该语言正常的题域之外,它就会像“在非常粘稠的液体中游泳”。
它没有明确的界线来表示何时你所使用的语言会导致最终的失败,即使有这样的界线,你也会忽视它。
你总不能说:
“我的BASIC程序太大了,我不得不用C来重写它!
”相反,你会试着将几行代码硬塞进去,以便在程序中增加新功能。
因此,不知不觉中,你就付出了额外的开销。
Java具备编写大型程序的能力——也就是说,它消除了小型程序和大型程序之间的复杂度界线。
在编写“hello,world”风格的小应用程序时,你当然不必使用OOP,但是当你需要用到时,这些功能随手可得。
而且,对小型程序和大型程序,编译器都会一视同仁地、积极地找出因bug而产生的错误。
1.2.2Java与网络的结合
Java不仅是一种功能强大的、安全的、跨平台的、国际化的编程语言,而且它还在不断地被扩展,以提供更多的语言功能和类库,能够优雅地处理在传统编程语言中很难解决的问题,例如线程、数据库访问、网络编程和分部式计算。
Java是通过applet以及使用JavaWebStart来进行客户端编程的。
Applet是只在Web浏览中器运行的小程序,它是作为网页的一部分而自动下载的。
当applet被激活时,它便开始执行一个程序,这正是它优雅之处:
它提供一种分发软件的方法,一旦用户需要客户端软件时,就自动从服务器把客户端软件分发给用户。
用户获取最新版本的客户端软件时不会产生错误,而且也不需要很麻烦的重新安装过程。
Java的这种设计方式,使得程序员只需创建单一的程序,而只要一台计算机有浏览器,且浏览器具有内置的Java解释器,那么这个程序就可以自动在这台计算机上运行。
由于Java是一种成熟的编程语言,所以在提出对服务器的请求之前和之后,可以在客户端尽可能多地多做些事情。
例如,不必跨网络地发送一张请求表单来检查自己是否填写了错误的日期或其他参数,客户端计算机就可以快速地标出错误数据,而不用等待服务器作出标记并给你传回图片。
这不仅立即就获得了高速度和快速的响应能力,而且也降低了网络流量和服务器负载,从而不会使整个Internet的速度都慢下来。
Javaapplet胜过脚本语言程序的优势之一就是,它是以被编译过的形式存在的,因此其源代码对客户端来说是不可见的。
另一方面,虽然反编译Javaapplet并不需要花费多少力气,但是隐藏你的代码通常并不是一个重要的话题。
有另外两个因素很重要。
如果编译过的applet很大的话,那么就需要额外的时间去下载它。
脚本语言程序只是被作为Web页面的一部分文本而集成到了Web页面中。
这对Web网站的响应能力来说很重要。
另一个因素是非常重要的“学习曲线”问题。
如果你是一个VisualBASIC程序员,那么转而学习VBScript可能是最快的解决方案,而且由于它或许能够解决大多数典型的客户/服务器问题,所以你可能很难对学习Java报以公正的态度。
如果你已经对脚本语言很有经验了,那么你在考虑使用Java之前,应该先看看JavaScript是否满足你的要求,这样对你会很有好处,因为它们能够更方便地满足你的要求,而且使你更具生产力。
Java引起人们的注意很大程度上始于applet。
Java确实是一种通用的编程语言,至少在理论上可以解决各种其他语言能够解决的问题。
正像前面指出的那样,可能存在其他更有效的方式去解决客户/服务器问题。
当你离开applet的竞技场时,你便步入了通用应用系统的世界,这里的系统都是独立运行的,不需要浏览器,就像其他普通程序一样。
在这里,Java的威力不仅在于它的可移植性,还包括它的可编程性。
Java已经具备了许多功能,让你创建健壮的程序,而花费的时间比使用Java之前的任何编程语言都更少。
不过,这是好坏参半的事。
为Java带来的改进,所付出的代价是降低了执行速度。
像任何语言一样,Java也具有不适合解决某类问题的天生的限制。
然而,Java是快速进化的语言,而且每当发布一个新版本时,它都会因为能够解决更多的问题而变得越来越具有吸引力。
1.3关于足球仿真系统
1.3.1引言
机器人足球赛是近几年在国际上迅速开展起来的高技术对抗活动,虽然历史不长,但由于它集高新技术、娱乐比赛于一体,所以引起了人们的广泛关注和极大兴趣。
机器人足球是人工智能与机器人领域极富挑战性的高技术密集项目,同时又是人工智能技术的一个理想突破点。
机器人踢足球,看似游戏,其实展示了一个国家信息和自动化技术的综合实力。
足球机器人系统的相关技术在许多领域也有着广泛的应用前景。
因此目前许多国家都参与了机器人足球有关技术领域的研究并推动了这项活动及人工智能技术的发展。
在机器人足球这一领域,目前美国、英国、加拿大等西方国家及日本、韩国等发达国家的技术水平普遍较高,我国与这些国家相比具有一定的差距。
为了加速这方面技术的发展,缩小与世界先进国家的差距,国内许多大学院校也开展了机器人足球技术的研究,例如清华大学、中国科技大学、北京理工大学等院校的研究团队就取得了不错的成绩,并于1999年在哈尔滨工业大学举行了第一届机器人足球锦标赛。
机器人足球为了能完成实际的比赛任务,需要结合多种技术,包括:
多智能体的设计、自主机器人的设计、多智能体的合作与协调、决策调度、实时推理、机器人学和传感器融合技术等。
从历届的比赛情况看,要想取得较好的成绩,参赛队伍必须面对三个方面的研究挑战:
智能体模型的建立、多智能体学习及团队协作。
所有这三方面的工作都是立足于多智能体的交互。
关于学习方面的挑战包括个体和团队的在线与离线的学习。
1.3.2多智能体系统
智能体在人工智能领域有多种定义方法,但没有一种被广泛接受。
Russell和Norvig定义智能体是一个可以通过传感器感知环境并通过执行器的行动影响环境的实体。
所以,一个自主智能体可以自由地与环境交互并且高效地使用其传感器和执行器而达到特定的目标。
Stone定义一个智能体是位于环境中的具有感知、目标、理性、行为和区域知识的实体,它的行动或从感知到行动的映射称为行为,其行为使得它能够与真实的世界进行交互。
当一组智能体具有共同的目标时就形成团队,团队成员通过采用一致的理性处理过程而协调它们的行为,并且通过通讯等手段来直接影响其它成员的感知输入。
分布式人工智能(DAI)是人工智能的一个分支,DAI致力于在一个互不相关的多实体环境中学习行动和知识的协调所必须的技术与技能。
DAI的一个子系统就是多智能体系统(MAS)。
MAS提供了建立包括多个智能体及多个互不相关的智能体行为机制的协调的一个复杂系统的准则。
目前提出了几种不同的方法来区分多智能体系统和分布式人工智能系统。
例如,Deker提出从智能体的间隔距离,智能体知识的不同,分布控制方法及通讯的可能性等四个方面来加以区分;而Parunak则从应用的角度对此进行了区分。
Stone和Veloso认为智能体最重要的属性是异质的程度和可通讯的程度,所以他们据此以同质不通讯智能体、异质不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JAVA 五人制 足球 游戏 攻防 策略