4.1 项目开发技术背景

20世纪以来,信息技术发生了翻天覆地的变化,似乎到处都有炫彩缤纷的游戏画面,市面上出现了各种各样的游戏,如网页游戏、网络游戏、单机游戏,无形中也产生了各种各样的网络游戏公司。不仅如此,它还促使大量的公司开始向游戏开发方面发展。可想而知,游戏已经成为我们生活的一部分。《坦克大战》游戏是我们童年经常玩的游戏,也是最经典的一款小霸王单机游戏之一。起初,《坦克大战》(Battle City)游戏是1985年日本南梦宫Namco游戏公司推出的一款多方位平面射击游戏。该游戏以坦克战斗及保卫基地为主题,属于策略型联机类。同时,它也是FC平台上少有的内置关卡编辑器的几款游戏之一,玩家可以自己创建独特的关卡,并通过获取一些道具使坦克和基地得到强化。随着信息技术的快速发展,各种版本的坦克大战游戏相继出现。

该版本的《坦克大战》游戏是基于Java语言设计开发的,具有比较好的经典游戏界面和人工智能特征,与传统的小霸王单机坦克大战游戏有异曲同工之处,而支持无限复活又可以让玩家更好地体会游戏的乐趣。

完成这个项目的主要目的是让开发者尽可能全面地掌握Java的基础知识。在整个坦克大战游戏的开发过程中将涉及Java基础知识的大部分内容,这对Java知识巩固有很好的帮助作用。

4.1.1 开发目的和意义

坦克大战游戏是一款非常经典的单机游戏,因为它比较简单、有趣,无论老少都比较适合操控。坦克大战游戏的设计对每一个Java语言学习者来说,在语言提高和进阶方面都是很好的锻炼机会。

坦克大战游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在游戏的开发中,还要应用类的继承机制及一些设计模式。因此,设计和开发好坦克大战游戏,对提高Java开发者的开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间方法的调用,还要处理各个类相应的封装,并且要协调好各个模块之间的逻辑依赖关系。

正是因为如此,本次项目开发的目的在于学习Java程序设计基本技术,学习用Eclipse开发Java程序的相关技术,熟悉坦克大战游戏的需求,熟悉项目开发的完整过程。例如,学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,培养初步的项目分析能力和程序设计能力。

4.1.2 系统可行性分析

本游戏是通过将Java及相关函数之间的逻辑关系、数据结构等知识综合起来设计而成的一款初具规模的坦克大战游戏。在对游戏特效的原理内容进行充分调研基础上,我们来介绍本款小型游戏的设计过程,其中涉及常量和枚举在小型游戏设计中的作用、复杂条件语句在小型游戏中的作用、随机函数在小型游戏中的应用、游戏中状态的概念和切换方法、游戏中速度的实现方法、覆盖和碰撞问题的实现方法、使用API函数实现简单的游戏图像显示和输入的处理、弹药爆炸的过程等。

可行性分析研究的目的就是以最小的代价,在尽可能短的时间内确定问题是否能解决。我们具体从以下3个方面考虑本游戏的可行性。

1.技术可行性

Java是一种可开发跨平台应用软件、面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即Java EE、Java ME、Java SE)的总称。Java自面世后就非常流行,并发展迅速,对C++语言形成了有力冲击。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它先将源代码编译成二进制字节码,然后依赖各种平台上的虚拟机解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。Java技术具有卓越的通用性、高效性、平台移植性和安全性,被广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。同时,在拥有全球最大的开发者专业社群、在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

Java语言经历了诞生、成长、成熟、壮大这几个阶段,逐渐发展成为IT领域里的主流计算模式。使用Java开发工具方便,容易实现。Java对开发跨平台性质的产品有着其独特的优势,游戏也是其开发产品之一。

本系统开发过程是通过将Java编程语言与Eclipse集成开发环境配合使用来实现的。在该项目中主要引用的类包有AWT、IO、Swing、Util、Applet等。

2.经济可行性

本游戏的开发是基于JDK 7.0和Eclipse,因为它们都是免费且开源的软件,所以实现本设计的成本就有所降低。随着计算机、网络通信和信息技术的迅猛发展及人们精神生活品质的提高,国际、国内各种各样的大型综合游戏网站如雨后春笋般地发展起来。一款好的游戏带来的经济效益可以说是不可估量的,例如网上流行的英雄联盟、坦克世界等真人型网络版游戏。对于游戏的编写来说,更多的人倾向于采用Java语言来实现,这是因为Java具有卓越的通用性、高效性、平台移植性和安全性。更重要的是Java的跨平台性,决定了游戏开发者只需要少量的时间就可以开发出一款可在不同平台上运行的游戏,而不是像其他编程语言那样受限。如果想让游戏在不同的系统中运行,开发者必须在不同的系统上进行编码和开发,这样会使开发时间和开发该游戏所需资金的消耗量更多。因此,对于游戏开发者来说,Java的可操作性和性价比更高。

3.操作可行性

本Java版坦克大战游戏是一个单机版的游戏程序,它只是模拟实现了网络上一些单机坦克大战游戏的基础功能,如坦克的移动、坦克的射击、坦克的复活,以及每个关卡地图的设计。本版本坦克大战游戏和传统坦克大战游戏的操作相类似,所以对于玩家来说,它的操作简易,更容易让玩家上手,玩家不需要了解内部流程,只需执行与一般其他的单机游戏一样的操作即可开始游戏。数据的存放采用集合技术,所以本设计无须数据库的连接。整个系统形成主要由JDK 7.0虚拟环境和Eclipse共同完成,无须更多复杂的工具和服务器支持。

4.1.3 需求和技术分析

如今的游戏已经成为世界上最大的娱乐、休闲项目之一,游戏市场规模持续增长、潜力巨大。我国政府一直以来都特别鼓励游戏产业的发展,特别是我国本土的游戏产业,扶持力度连年加大。由此可见,我国对游戏产业的重视程度。该坦克大战游戏是对红白机经典90坦克大战游戏的延续。对于80后和90后来说,它们都是童年里最宝贵的回忆。80后和90后占据着当今游戏人群的主体地位,对于他们来说,该坦克大战游戏不仅可以减轻人们的社会压力、放松身心,还可以回味小时候玩红白机游戏的疯狂时光,又不会沉迷于游戏,甚至可以更好地体验游戏的乐趣。

该程序代码有着很高的运用率,因此设计时必须要有相当缜密的逻辑条理思维,还要考虑一些无法操控的因素和所有可能出现的突发事件。

(1)玩家能够通过敲击游戏按键来操纵玩家坦克的动作,但对于敌方坦克来说,就要有一定的自主性和智能型,因为其是自动运行的。同时,需要为屏幕上的敌方坦克开创一个线程,让其自主运行来应对数量过多而导致的混乱。要精密设置敌方坦克的操作运行算法,不要使游戏太过单一。

(2)要对所有坦克打出的弹药进行实时监测并判断它打到了什么物体对象,因此需要开辟一个独立的线程来处理弹药,还需要控制好所有的物体对象。同一时刻,在JVM虚拟机上保持运行这么多的线程,可能会造成程序的迟钝,甚至瘫痪。

(3)游戏界面中物体对象繁多,为了避免重叠运行,玩家坦克在前进时需要时刻地扫描周围环境。

(4)游戏的动态界面是一款优秀程序不可缺少的组成成分,精美的用户界面是引起玩家兴趣的关键,相关的构图美化技术也需要有所考虑。

(5)在游戏地图中会有许多物体对象,这不是绘图方法能够解决的,而且过多的大型图片会束缚程序的大小,所以要准确掌握Graphcis()方法的使用。同时使用读取外部文件的方法来加载游戏关卡,因为内存有限,不适合用于存储地图关卡。

(6)游戏要对玩家的分数进行记录,这就需要对其功能和属性进行妥善的策划,还需要制作良好的解决方案来处理其存储方式。

(7)为了确保游戏程序的运行顺畅,我们需要对结构进行严格把控,将算法完善得更精准,还可以运用混淆器对打包后的软件程序进行优化。

4.1.4 功能分析

该坦克大战游戏选择使用以往的游戏规则。在服务器端创建并设置一个主机,客户端申请连接加入,若其IP输入判断无误,载入地图关卡并开始游戏。在游戏界面中,会实时显示敌方坦克数量和玩家坦克的生命数量及分数。敌方坦克自行移动和打出弹药,玩家通过敲击键盘来操控自己坦克的动作并打出弹药,弹药无法打中相同阵营的坦克,当两方阵营的弹药相交时会相互抵消,打中对方坦克时会产生爆炸效果,中途可以暂停、发送信息,玩家坦克销毁掉超级武器后会赋予其特殊的功能,在游戏地图界面中还同时包含通信功能。如果取得了胜利,会显示“你过关了!”的消息提示;如果失败了,系统则给出“GAME OEVR!还想再玩一次吗?(y/n)”的提示,若玩家双方都选择可继续游戏,则游戏重新加载并开始,否则结束并退出游戏界面。