Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx

上传人:b****6 文档编号:21217677 上传时间:2023-01-28 格式:DOCX 页数:41 大小:821.12KB
下载 相关 举报
Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx_第1页
第1页 / 共41页
Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx_第2页
第2页 / 共41页
Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx_第3页
第3页 / 共41页
Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx_第4页
第4页 / 共41页
Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx

《Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。

Java语言坦克大战游戏设计附有代码和图片Word格式文档下载.docx

andotherclassicgameshavebeenmanypeopleknow,ishowmany80oreven90afterthetalk.

BasedonthedesignoftheJavaTankWarsgameusingjavalanguagefortheobjectofthought,intheprocessofdesign,thegameofallobjectsaregiventheconceptoftheobjectandattribute.Thegame'

sdesignisinthegame,theplayers,throughtheupperandlowerkeystocontrolthetank,andhittheshell,todestroyalltheenemiesforthepurposeofthegame.Inthecourseofthegame,theenemy'

stankswillalsobeintelligenttoescapetheplayerstoplayoutthebullet.Throughthegamedesign,isaconvenientandflexibleuseofJavalanguage.

Keywords:

networktechnology,Java,object-oriented,intelligent

第一章游戏简要说明

《坦克大战》作为曾经风靡全球的一款FC游戏,可谓是曾经经典中的经典,其极为出色的游戏性令全球众多玩家为之疯狂,更是多少80后甚至90后津津乐道的游戏之一。

《坦克大战》是一款以红白机为平台操作设计游戏。

玩家通过控制自己的坦克进行射击,以击毁敌方坦克为目的,每个关卡中有着不同的地形和障碍物,玩家可以利用地形中的障碍物进行射击,障碍物可以阻挡敌方的坦克的子弹,同时,也可以阻挡玩家自身打出来的子弹。

因此在游戏中,玩家要利用好地图中的障碍物,来保障自身的安全,以达到消灭敌军的目的。

在游戏中,还设置了有各种各样的补给。

游戏中坦克能向八个方向移动和开炮,并且坦克与坦克之间不可相互穿越。

坦克打出来的炮弹若击中对方,就会产生爆炸现象。

玩家的坦克不仅有生命值,而且还有生命个数,当玩家坦克遭到敌方坦克子弹的击打之后,玩家坦克的生命值就会减少,当玩家坦克的生命值减到0时,玩家的坦克就爆炸,同时也会减少一辆坦克数量,玩家也可以通过地图上随机出现的血块来增加自己的血量。

当玩家消灭所有的敌方坦克的时候,此时游戏结束;

若玩家的坦克被打死,可以按F2键进行开始新的游戏。

其操作简单且娱乐性强,是一款男女老少皆宜的游戏。

游戏附带地图编辑器,玩家可自行编辑地图进行游戏。

游戏中的众多经典关卡至今还让许多玩家记忆犹新,在80年代时曾经在无数家庭中带来了无尽的欢乐。

第二章开发环境介绍

2.1开发环境

操作系统:

win8.1

开发语言:

java

开发工具:

Eclipse

2.2java语言特点简介

(1)简单

java语言的语法很简单,容易掌握,并且它是纯面向对象的语言。

Java语言的简单性可以在下面几点体现出来:

1.1语言的语法与C++很相似,从某种角度上说,java是C和C++转变来的,因此,学过C语言的人员可以很轻松的掌握java的语法。

1.2java对C++语言进行了提高和简化。

如,java取消了指针,并且使用接口取代了多重继承,因指针和多重继承往往使程序变得复杂。

1.3java提供了很多类库,API文档和第三方开发包,此外,还有丰富的基于java的开发项目,JDK已经开放源代码,学者可通过分析这些源代码,从而来提高自己的水平。

(2)面向对象

面向对象是java语言的最重要的部分,同时也是java语言的基础部分,java语言本身就是一种纯面向对象的语言。

在Java语言中,提倡万物皆面向对象,语法中不能在类外面定义单独的数据和函数,简而言之,java语言最外部的函数类型是对象,所有的元素只能通过类和对象来访问。

(3)分布性

Java语言的分布性包括操作分布和数据分布,操作分布是指在多个不同的主机上布置相关操作。

(4)可移植性

Java语言程序具有与体系结构无关的特性,可以很方便的移植到不同型号的计算机中。

此外,java的类库中也实现了多不同平台的接口,使得这些类库可以移植。

(5)解释性

Java语言程序的运行需要解释器。

任何移植了java解释器的计算机或者其他设备都可以用java字节码进行解释执行。

字节码独立于平台,他本身携带了许多编译时的信息,使得连接过程更加简单,开发过程更加迅速,更加具有探索性。

(6)安全性

Java语言没有像C语言中的指针和内存释放等语法,可以有效避免非法操作内存,并且java代码要经过指针校验,代码校验等测试步骤才能运行,因此,可以很好的保护系统平台。

(7)健壮性

java程序是以编写多方面的、可靠性的运用为目标的。

在编译运行时可以检查错误,消除错误。

能更好的帮助用户检测早期出现的错误。

(8)多线程

多线程机制能够让程序在同一个时间点同时运行多个任务,同时相应的同步机制可以保证不同线程能够正确的共享数据。

(9)高性能

java编译后的字节码是在解释器中运行的,因此它的速度比多数交互式运用程序提高了许多,此外,字节码可以在程序运行时被翻译成特定平台的机器指令,从而实现运行速度的提高。

(10)动态

java语言在很多方面比C或C++更能适应发展的环境,可以动态调整库中的方法和增加变量,而客户端却不需要任何更改。

在java中进行动态调整是非常简单和直接的。

2.3Eclipse开发工具的简介

Eclipse是由IBM公司投资4000万美元开发的集成开发工具。

它是基于java语言编写,并且是开放源代码的、可扩展的,也是目前全球最流行、使用最多的java开发工具之一。

另外,IBM公司捐出Eclipse源代码,组建Eclipse联盟,它专门负责这种工具的后续开发。

Eclipse为程序员提供了很好的java程序开发环境,它的平台系统结构是在插件概念的基础上构建起来的,插件是Eclipse平台最具有特色的特征,同时也是区别于其他开发工具的特征之一。

第三章系统总体设计

3.1程序功能的总和

(1)程序表的功能

程序名

程序功能

TankClient.java

游戏的主窗口

Tank.java

坦克的数据和方法

Missile.java

炮弹的数据和方法

Explore.java

爆炸的数据和方法

Wall.java

墙的数据和方法

Blood.java

血块的数据和方法

3.2主体模块

主体是由TankClient.java文件来实现的,主要负责各个类的调用和游戏窗口的创建。

该类中的变量还有:

1.游戏的高度intGAME_HEIGHT

2.游戏的宽度intGAME_WIDTH

此外,lauchFrame()方法、paint()方法和update()方法也包括在该类中,其功能分别为实现显示坦克主窗口、重画时调用和使用双缓冲消除闪烁现象。

3.3子弹模块

子弹模块由Missile.java文件实现,可以实现子弹打坦克和判断子弹是否是活着的功能。

该类的变量有如下:

1.x方向上的速度intXSPEED

2.Y方向上的速度intYSPEED

3.子弹的高度intHEIGHT

除了这几个变量外,hitTank()方法和Islive()方法也包括在该类中,其功能分别为实现子弹撞坦克和判断子弹是否还活着。

3.4坦克模块

在坦克模块中可以实现很多功能,如:

创建坦克,让坦克能打出子弹,处理坦克和墙相互穿越的问题,为玩家坦克加入血条以及让敌人的坦克智能化的问题。

在Tank类中的变量有:

3.坦克的高度intHEIGHT

该类中还包括collidesWithWall()方法和Eat()方法,其功能分别为实现判断坦克和墙相撞的问题和坦克吃到血的问题。

3.5墙模块

该模块由Wall.java文件实现,在游戏添加两堵墙,处理坦克和墙相撞的问题。

Wall类中成员变量有:

1.坦克在x方向上的速度intXSPEED

2.坦克在y方向上的速度intYSPEED

该类中还包括collidesWithWall()方法,其功能为处理坦克和墙相撞的问题。

3.6血液模块

该模块由Blood.java文件实现,添加必要的方法,让血块按照一定轨迹运动,并在一定时间消失。

该类中的变量有:

1.血块在X轴的坐标intX

2.血块在X轴的坐标intY

3.血块的高度intH

该类中还包括Move()方法和islive()方法,其功能分别为处理血块移动的问题和判断血块是否还活着的问题。

3.7爆炸模块

该模块由Explode.java文件实现,击毙一辆坦克后产生爆炸。

1.坦克生死的描述booleanLive

2.主类的变量TankClientTc

该类中还包括GetDefaultToolkit()方法Draw(Graphics)方法,其功能分别为拿到的工具包和画爆炸现象。

第四章游戏详细设计过程

4.1创建游戏窗口

在游戏设计的前期,要先创建游戏的界面,也就是要为所设计的游戏创建一个窗口,可通过如下代码实现:

importjava.awt.*;

publicclassTankClientextendsFrame{

publicvoidlauchFrame(){

this.setLocation(400,300);

this.setSize(800,600);

setVisible(true);

}

publicstaticvoidmain(String[]args){

TankClienttc=newTankClient();

tc.lauchFrame();

}

当运行代码是会发现,这样建立的窗口的大小是可以随意变化的,然而在实际中我们不希望窗口任意改变,这样不仅影响了用户体验,而且还会影响游戏的可行性,因此,我们需要对现有的窗口进行有必要的改进,把窗口的大小固定,改进的代码如下:

importjava.awt.event.*;

this.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

this.setResizable(false);

setVisible(true);

}产生如下不可随意改动窗口:

(1)游戏窗口

4.2改变游戏背景颜色。

(2)改变颜色的游戏窗口

this.setBackground(color.GREEN);

/*改变背景颜色,这里改为绿色,我们还可以改成其他的颜色*/

4.3创建坦克

我们用创建一个实心圆来表示游戏中的坦克,此坦克代表我方的坦克,通过重写paint方法来实现。

图(3)我方坦克的创建

publicvoidpaint(Graphicsg){

Colorc=g.getColor();

g.setColor(Color.RED);

g.fillOval(50,50,30,30);

g.setColor(c);

}

4.4让坦克动起来

上面我们所创建的坦克还不能动,显然不是我们要设计游戏的目的,因此。

我们要给我们所设计的坦克赋予“生命”。

具体实现步骤为:

(1)将位置改变为变量;

(2)启动线程不断重画;

(3)每次重画改变坦克的位置。

需要注意的是x,y值得含义指的是小方块左上角的点。

图(4)单个坦克单个方向移动

privateclassPaintThreadimplementsRunnable{

publicvoidrun(){

while(true){

repaint();

try{

Thread.sleep(100);

}catch(InterruptedExceptione){

e.printStackTrace();

}

4.5改变窗口的大小

很多时候我们需要调节窗口的大小,在程序少的情况下我们可以通过直接改程序中的参数,但是,当我们的程序变得很多的时候,我们会发现当我们要改窗口的大小时,会觉得力不从心,不仅要改的地方很多,既费时又费力,而且还很容易出错,这时,我们可以给窗口的宽度和高度定义一个变量,通过代码重构实现,将以后可能需要多处改变的量定义为常量。

如下:

publicstaticfinalintGAME_WIDTH=800;

publicstaticfinalintGAME_HEIGHT=640;

以后我们需要用到窗口尺寸的地方就可以用GAME_WIDTH、GAME_HEIGHT来代替,这样就可为我们的以后修改提供很多便捷。

注意:

常量一般是publicstaticfinal的。

且常量名一般都用大写。

4.6让坦克受控制

在4.4中我们建立的坦克虽然可以移动,但移动方向为一直向下,且不受控制,因此我们要为TankClient建立一个键盘监听类,让坦克听从我们的控制。

步骤:

(1)添加键盘监听器类KeyMonitor;

(2)TankClient添加键盘监听器;

(3)针对不同的键改变坦克的位置,与重画线程结合产生不同方向运动。

图(5)可向四个方向移动的坦克

privateclassKeyMonitorextendsKeyAdapter{

publicvoidkeyPressed(KeyEvente){

intkey=e.getKeyCode();

switch(key){

caseKeyEvent.VK_LEFT:

x-=5;

break;

caseKeyEvent.VK_UP:

y-=5;

caseKeyEvent.VK_RIGHT:

x+=5;

caseKeyEvent.VK_DOWN:

y+=5;

}

4.7创建一个Tank类

1.将坦克单独包装成类

2.步骤:

(1)建立坦克类;

(2)为Tank类添加成员变量x,y;

(3)添加draw方法,使Tank类独立控制自己的画法;

(4)添加Tank类的处理按键的方法;

(5)根据Tank类修改TankClient类。

publicclassTank{

intx,y;

publicTank(intx,inty){

this.x=x;

this.y=y;

publicvoiddraw(Graphicsg){

Colorc=g.getColor();

g.setColor(Color.RED);

/*坦克是颜色*/

g.fillOval(x,y,30,30);

g.setColor(c);

intkey=e.getKeyCode();

4.8让坦克向8个方向移动

前面所设计的坦克只能朝4个方向走,为了让游戏更加具有可玩性,我们为坦克再添加四个方向,让坦克能够朝8个方向移动。

具体的步骤为:

(1)添加记录按键状态的布尔量;

(2)添加代表方向的量(枚举);

(3)根据按键状态确定Tank的方向;

(4)根据方向进行下一步的移动(move)。

voidmove(){

switch(dir){

caseL:

x-=XSPEED;

break;

caseLU:

y-=YSPEED;

caseU:

caseRU:

x+=XSPEED;

caseR:

caseRD:

y+=YSPEED;

caseD:

caseLD:

caseSTOP:

bL=true;

bU=true;

bR=true;

bD=true;

locateDirection();

}voidlocateDirection(){

if(bL&

&

!

bU&

bR&

!

bD)dir=Direction.L;

elseif(bL&

bU&

bD)dir=Direction.LU;

elseif(!

bL&

bD)dir=Direction.U;

bR&

bD)dir=Direction.RU;

bD)dir=Direction.R;

bD)dir=Direction.RD;

bD)dir=Direction.D;

bD)dir=Direction.LD;

bD)dir=Direction.STOP;

4.9修改4.8中所设计的不足

(1)处理键抬起的消息;

(2)修改TankClient相关代码

4.10添加子弹类

通过前面的的操作,我们所设计的坦克已经能够听从我们的控制。

在这一节中,我们要为坦克设计子弹。

具体的操作为:

1.添加子弹Missile类;

2.添加x,y,dir等属性以及常量;

1)添加构造方法,draw方法等必要方法;

2)根据不同的方向进行不同的运动;

3)在TankClient中模拟一颗子弹(new一颗子弹出来,画出子弹)。

图(6)坦克打出的子弹

publicclassMissile{

publicstaticfinalintXSPEED=10;

publicstaticfinalintYSPEED=10;

Tank.Directiondir;

publicMissile(intx,inty,Tan

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1