当前位置:文档之家› JAVA语言写的坦克大战详细说明书

JAVA语言写的坦克大战详细说明书

JAVA语言写的坦克大战详细说明书
JAVA语言写的坦克大战详细说明书

陕西国防学院《Java语言》课程期末实训

题目坦克大战

学院电子信息学院

专业软件技术

班别软件3132班

学号3531323X

姓名小智

2015年3月6日

一、课程题目

坦克大战(Java版本)

实现一个java版本的坦克大战游戏

【功能提示】

1.游戏要有图形用户界面,界面能够反映游戏所有的细节。

2.界面中要有坦克,墙,树林,河流。

3.界面中要有一个“家”,“家”被攻击中则输了游戏。

4.坦克分两种,敌方和我方。

5.墙也分为两种,可以穿透的普通墙,不可以穿透的铁墙。

6.树和河流均只有一种,树林坦克可以通过。

7.坦克可以发射子弹,敌我方的子弹属性一样。

8.我方子弹可以杀死敌方坦克,敌方子弹也可以杀死我方坦克,但需要多枪子

弹才可以杀死。

9.敌方之间不可以杀死对方。

10.子弹击中坦克要有爆炸,但击中墙不能爆炸。

11.我方可以吃血包增加生命。

12.游戏可以暂停,重新开始,游戏帮助等功能。具体如下图:

13.

二、题目分析与设计

需求分析

1.设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表

现出来,界面能够接受用户的操作,具有人机交互功能。用户可以

选择重新开始游戏,退出游戏,暂停游戏和查找游戏帮助。

2.界面中包含坦克,树,河流,阻挡墙和游戏用户所要保护的“家”。

3.坦克:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方

坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到

墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。

坦克之间不能穿越,碰撞到后自动调换方向。

4.树:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的

元素,使得游戏更加贴切人性化。树的数目不限,以游戏整体界面

清晰美观来决定数目。

5.河流:界面中要包括河流,河流作用与树林相同,同样河流的数目

不限,以游戏界面整体美观度来决定数目。

6.墙:墙体分为两种,普通的墙和铁墙,普通的墙在受到子弹袭击时

会损坏,而铁墙可以阻碍子弹的穿越。两方的坦克均不能穿越两种

墙体,但都可以摧毁普通墙体。普通墙体的数目配合其他元素合理

安排,铁墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越

铁墙而使得游戏无法进行下去。

7.“家”:用户方除了有一辆自己的坦克外还有一个要保护的家,家由

普通墙体包围,家受到子弹攻击后游戏立即结束,用户方则输了本

局游戏。

8.子弹:子弹可以由敌方和用户方发射,且发射出去的子弹可以直线

移动,直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦

克受到一颗子弹攻击会爆炸从而导致死亡,死亡后坦克消失。用户

方受到子弹攻击后会减少寿命,且受到四次攻击则死亡,此时如还

有敌方坦克存在,则用户方输掉本次游戏。

9.爆炸:当子弹射击到坦克身上时,要产生爆炸效果。

10.方向:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹

的方向从属于坦克的方向。

具体设计

以下的论述均根据上面需求分析的顺序来安排:

1.图形用户界面

图形用户界面要用到Java课程里的第六章的知识,需要用到抽象窗口工具集即AWT和Swing来设计实现,由于游戏需要有功能按键来控制游戏的重新开始,退出,暂停,帮助等,所以在实现过程中,设计菜单项。

坦克,河流,树,家,墙等都是调用各自类里面的draw函数来画出来,最后new一个图形面板出来,把所有的元素都add进面板就可以了。界面的构造在程序中由TankClient类的构造方法来完成,即没构造一个用户类都会产生这样一个包含各种游戏元素在内的界面。由于画面是静止的,而我们游戏的画面要求是动态的,游戏中的坦克和子弹都是在不断的动,可穿透的普通墙体也在“动”,所以对于画面,必须要不断的更新,重画才能产生动态的效果。

在程序中,此部分功能也是由TankClient类里的update函数和framPaint函数共同实现,将“动”的元素进行重画,而不动的元素如菜单项就不用重画,所以这也是为什么把菜单项设计进TankClient类的构造方法中。当然,图形用户界面中也包括对各种界面元素的大小,位置和颜色等设计,细节问题这里就不赘述。

2.界面中的元素

界面中的元素都是在构造界面的时候用界面实例对象的add方法加入进去的,且“动”的元素要不断更新重画。

3.坦克

坦克主要由Tank类来实现。坦克的属性:速度(有X轴和Y轴速度之分),坦克大小,坦克所在新的位置(X坐标和Y坐标),坦克是否还活着,行动方向等。所有的这些属性都有一个初始化值,从而在游戏一开始就可以运行。

在设计过程中,坦克出现的位置由坐标而定。用户方之后的位置由键盘监听方向,按指定方向以恒定的速度前进——此速度为全局静态变量,当没有接受到键盘的控制时,则保持静止。敌方的坦克则是根据随机数来控制随机的方向和路径的,当敌方坦克撞到阻碍物时,会转回到前一步的位置,从而解决了坦克撞到阻碍物不回头的问题,这个功能由Tank类里的changToOldDir()方法实现。

坦克的方向和子弹发射以及游戏的重新开始都是由键盘来控制的,所以在Tank类里面必须要实现这些功能。

Tank类的keyPressed()方法用于接受键盘的按键监听,接收到相应的键盘信息后,如接收到F,则表示发射子弹,所以此时要调用Tank类里的fire()方法,fire()方法不带传递参数,因为子弹的方向总是从属于坦克的方向和位置。

由于坦克在碰到墙,界面边界和“家”等阻碍物时要改变方向,所以在Tank里面必须对于每一种阻碍物要设计一个方法来作为应对策略,当然解决方法是把下一步的位置调整到上一步的位置。

用户方Tank还可以吃红心来增加自己的生命值,得到一个红心,增加100生命值。所以在程序中坦克必须要有一个方法来判断当坦克接触到红心时,生命值增加的方法。程序中用eat()方法来实现“吃”红心并且增加生命值,当然,这其中要使得坦克的生命值不会超过自己生命的极限值200,所以判断的时候,当生命小于等于100时,直接加100生命值,但是当生命值大于100时,就只能使生命值加满到极限值200.当然,说到生命值,一定要在图形用户界面中显示出来,所以在Tank类里面一定要设计一个方法,来画出生命的增减过程,在Tank类里面是用DrawBloodbBar()来刻画。

4.树林

树林主要是用来做修饰物体的,具有不透明性。由一个Tree类来描述,Tree有两个属性,位置和长宽。树的类里有一个自己的构造方法,当然还有一个必不可少的draw()方法。

5.河流

河流的作用与树林类似,这里不再赘述。

6.墙体

墙体分为普通墙和铁墙。普通墙可以被子弹损坏,而铁墙则不会。

?普通墙

普通墙有以下几个属性:墙的固定长度和宽度,墙的位置坐标,墙体是由图片加入到图形用户界面来表示的。程序中用

CommonWall类来描述普通墙,此类里有一个构造方法,用于传

递参数,还有一个draw()方法,来画指定位置的墙,另外还有个

getRect()方法来构造长方形实例。

?金属墙

金属墙的参数和普通墙完全类似,只不过金属墙不能被子弹穿破,但这个属性在接下来讨论的子弹的属性里面,由于上面已

经给出里普通墙的属性,所以这里将不再赘述金属墙的属性了。

7.家:

家是由Home类来抽象的,具体的属性有:家的大小,家的位置,家的存活状态,与树林和河流一样,家还有draw()和自己的构造方

法,作用也和前面的一样,但是家还有一些新的方法,因为可以在游

戏中重新开始游戏,所以要有设置方法让家重新“活”起来,当然,

有时候要判断家现在的存活状态,所以就必须要isLive()和setLive()两

个方法了。除此之外,还要有一个游戏结束界面的清理工作和提示工

作,gameover()方法就是解决这个问题的。

8.子弹:

子弹的属性:子弹前进的X轴和Y轴的速度——初始速度都为10,子弹的长度和宽度——初始的长宽都为10,子弹的位置,子弹的方向,

子弹是否live等。由于不同方向的子弹其实是图片,所以这里要考虑

不同图片的选择用对应的方向来指定,所以要建立Map键值对,用

String属性的方向来指定不同的图片。如:imgs.put("L",

bulletImages[0]);

类里面惯例有个构造方法,用来默认传递位置和方向,当然这里用到了同构,另外一个构造函数来取得子弹的状态和界面。darw()方

法和move()方法来控制画子弹和移动子弹

接下来就是要考虑到子弹打到个=各元素上的反应,敌方的子弹打到敌方时,不会杀死自己人,所以这里只要直接return true就可以

了,不用移除子弹碰到的坦克,更不用调用爆炸来显示爆炸效果。

具体代码:

public boolean hitTanks(List tanks) {//当子弹打到坦克时

for (int i = 0; i < tanks.size(); i++) {

if (hitTank(tanks.get(i))) { //对每一个坦克,调用hitTank

return true;

}

}

return false;

}

子弹打到其他坦克上时用hitTank(Tank t) 方法,子弹打到墙上

时用hitWall(CommonWall w)方法,打到金属墙上

hitWall(MetalWall w),打到家hitHome(),当然在这些方法

里,都要作相应的操作来表示接受到子弹的后果,普通墙要移除对应

的位置,所以在方法里面又要调用remove()方法来移除,如打到家

上,就要吧home的生命设置为false,从而结束游戏。实现如下:public boolean hitHome() { //当子弹打到家时

if(this.live&& this.getRect().intersects(tc.home.getRect())) { this.live = false;

this.tc.home.setLive(false); //当家接受一枪时就死亡

return true;

}

return false;

}

还有,当子弹射击到对方(用户方对敌方)时,当敌方射击到用户方,

用户方要减少生命值,没接受一枪,就执行

t.setLife(t.getLife() - 50); // 受一粒子弹寿命减少50,

接受4枪就死,总生命值200,当然方法里面还要做其他很多的判断,

如生命值是否小于0,如果是的话就执行t.setLive(false);从而

结束游戏。

9.爆炸:

坦克的爆炸效果独立出来用一个类来描述,爆炸的属性:位置和存活

状态,另外,画爆炸效果的时候要取得用户界面控制,所以要定义

private static Toolkit tk= Toolkit.getDefaultToolkit();其他的方法只能的

大同小异。

10.菜单功能

菜单功能包括游戏的重新开始,暂停,退出等。这些功能的用户界面

放在了TankClient的构造方法里,用到的是面板类和相应的监听功能,

实现出来很简单。

类的介绍

a)Direction是一个枚举类有L, U, R, D, STOP表示左,上,右,

下和静止五个状态

b)River 描述河流的类

属性:

c)Home 表示用户方的家的类属性:

d) Tree

描述树林的类

属性:

e)Bullets 描述子弹的类属性:

f)GetBlood 血包描述类属性:

g)CommonWall 普通墙的类

属性:

h)MetalWall 金属墙的类

属性:

i)BombTank 坦克爆炸类

属性:

j)Tank描述Tank的类属性:

k)TankClient 坦克用户类,继承Frame,实现ActionListener接口实例化各个类的容器:

List theRiver = new ArrayList();

List tanks = new ArrayList();

List bombTanks = new ArrayList();

List bullets = new ArrayList();

List trees = new ArrayList();

List homeWall = new ArrayList(); // 实例化对象容器

List otherWall = new ArrayList();

List metalWall = new ArrayList();

下面列表只列出主要方法和变量

属性:

用户类主要是综合调用各个类来协作完成完成游戏的设计。

程序流程逻辑图

下图是程序运行的逻辑流程图,只是表示逻辑,并没有具体到每一个细节:

流程图:

韩顺平java坦克大战1.0版本_源代码

/**画坦克1.0 */ import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.JPanel; public class MyTankGame extends JFrame { MyPanel mp=null; public static void main(String[] args) { MyTankGame mtk=new MyTankGame(); } public MyTankGame() { mp=new MyPanel(); this.add(mp);//把面板加入窗体 //注册监听 this.addMouseListener(mp); this.addKeyListener(mp); this.addMouseMotionListener(mp); this.addWindowListener(mp); this.setTitle("坦克大战");//窗体标题 this.setSize(600,400);//大小,宽,高(像素) this.setLocation(300,300);//显示位置。左边距,上边距 //禁止用户改变窗口大小 this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);//显示 } } //我的面板 class MyPanel extends JPanel implements

Java语言坦克大战游戏设计(附有代码和图片)

JISHOU UNIVERSITY 本科生毕业设计 题目:基于java语言坦克大战游戏开发作者: 学号: 所属学院:信息科学与工程学院 专业年级: 指导教师:职称: 完成时间: 吉首大学教务处制

目录 基于java语言坦克大战游戏开发 (1) 摘要 (1) Based on the development of Java language Tank Wars Game (2) 第一章游戏简要说明 (3) 第二章开发环境介绍 (4) 2.1 开发环境 (4) 2.2 java语言特点简介 (4) 2.3 Eclipse开发工具的简介 (5) 第三章系统总体设计 (6) 3.1程序功能的总和 (6) 3.2主体模块 (6) 3.3子弹模块 (6) 3.4坦克模块 (7) 3.5 墙模块 (7) 3.6血液模块 (7) 3.7爆炸模块 (8) 第四章游戏详细设计过程 (9) 4.1创建游戏窗口 (9) 4.2改变游戏背景颜色。 (11) 4.3创建坦克 (11) 4.4 让坦克动起来 (12) 4.5改变窗口的大小 (13) 4.6让坦克受控制 (14) 4.7创建一个Tank类 (15) 4.8让坦克向8个方向移动 (16)

4.9修改4.8中所设计的不足 (18) 4.10添加子弹类 (19) 4.11根据己方坦克的位置,打出子弹 (21) 4.12修改坦克停下来不能打出子弹的问题 (21) 4.13让坦克能够打出多发子弹 (23) 4.14解决炮弹不消亡和坦克出界的问题 (23) 4.15增加敌方坦克 (24) 4.16击毙出现的敌方坦克 (25) 4.17加入爆炸效果 (26) 4.18添加多辆敌方坦克 (27) 4.19让敌方坦克智能化 (29) 4.20建立游戏障碍物 (31) 4.21阻止坦克互相穿越 (32) 4.22为我方坦克添加大招和血条 (33) 4.23添加血块 (34) 4.24重新载入敌军或我军坦克 (35) 4.25加入图片 (35) 第五章游戏的可行性测试 (37) 5.1游戏界面介绍 (37) 5.2游戏运行测试 (40) 第六章总结 (43) 参考文献 (44)

坦克大战程序代码

import java.awt.* ; import javax.swing.* ; import java.awt.event.*; import java.util.EventListener; class f extends JFrame { f(String title) { this.setTitle(title) ; this.setSize(608 , 630) ; this.setLocation(300 , 100) ; this.setBackground(Color.BLACK) ; MyTank mp = new MyTank() ; this.add(mp) ; this.addKeyListener(mp) ; new Thread(mp).start() ; } public static void main(String[] args) { f h = new f("坦克大战(版本1.0)") ; h.setVisible(true) ; } } //主战坦克 class MyTank extends JPanel implements KeyListener , Runnable { int x = 280, y = 280 ;//坦克的初始位置 int op = 1 ;//坦克的移动方向 int color = 0 ; int tankspeed = 8 ;//坦克的速度 int tankbullet = 8 ;//坦克的子弹速度 int tankfbullet = 4 ;//敌军的子弹速度 int shengming = 100 ;//生命 int fenshu = 0 ; int nandu = 5 ; //设置游戏难度 //子弹 int dx = 295 , dy = 295 ; int dx1 = 295 , dy1 = -10 ; int dx2 = 600 , dy2 = 295 ;

坦克大战java源代码审批稿

坦克大战j a v a源代码 YKK standardization office【 YKK5AB- YKK08- YKK2C- YKK18】

有些图片路径会出错要注意package ; import 坦克类 class Tank { int x=0; int y=0; int color=0; int speed=1; int direct=0; boolean isLive=true; public Tank(int x,int y) { =x; =y; } public int getX() { return x; } public void setX(int x) { = x; } public int getY() { return y; } public void setY(int y) { = y; } public int getDirect() { return direct; } public void setDirect(int direct) { = direct; }

public int getColor() { return color; } public void setColor(int color) { = color; } } ; import .*; import .*; import .*; public class MyTankGame4 extends JFrame implements ActionListener{ MyPanel mp=null; MyStartPanel msp=null; quals("New Game")) { (msp); mp=new MyPanel(); Thread mt=new Thread(mp); (); (mp); (mp); (true); } } } etImage"/.jpg")); etImage"/")); image2=().getImage"/")); image3=().getImage"/"));

基于java的游戏坦克大战论文

基于j a v a的游戏坦克 大战论文 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

目录 1 2 5 1

第一章绪论 课题研究的背景 如今我们的生活节奏越来越快,每个人的生活压力也在不断变大,长期紧绷着神经容易产生心理和生理上的双重伤害,人们需要在工作和学习之外放松自己,玩玩游戏正是放松自己的方式之一。 坦克大战,一个众所周知的小游戏,曾经在红白机时代风靡一时。其界面简单,耐玩,关卡多,可玩性高,没有局限的年龄层。 Java是现在全球最时髦的开发工具之一,它拥有庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能,拥有一个虚拟机,总之,Java的出现,确实给整个程序界带来了巨大的冲击,也许现在还无法准确评估Java为整个IT业带来的影响,但是有一点毋庸置疑—Java将不可避免的影响一带程序员。 使用Java作为开发工具,来做坦克大战这个小游戏,是一种很理性的选择。Java游戏可以在本地桌面系统下运行,也可以在Web浏览器下运行。 我在大学四年中学到了很多计算机的知识,JAVA语言,软件工程,数据结构,软件工程等课程。如今我将用我所学的知识来完成一个坦克大战游戏,来锻炼自己的动手能力,独立作出一个小程序。 课题研究的任务 本文中所做的主要工作如下: (1)介绍了制作坦克大战游戏的意义和目的。 (2)设计坦克大战游戏各个类,实现各类效果和目标。 (3)分析并解决游戏中的若干技术问题。 (4)完成坦克大战游戏,进行测试并分析结果.

第二章系统分析 课题的可行性分析 1、课题要求 (1)与实践活动和相关的文件和资料由教师提供。 (2)本课题要求学生有熟练的Java开发能力,有较强的自学能力。 (3)具体问题再做详细调查研究并与指导老师面谈。 2、可行性分析 技术可行性:游戏对机器没有多大要求,现在无论什么电脑,只要能安装J2SDK,就能在电脑上开发这款游戏。制作出来的游戏可以在本地桌面运行,也可在WEB上运行,现在JAVA语言非常成熟,完全能够完成这个游戏。 经济可行性:开发这个游戏除了耗费自己的时间和精力以外,不需要其他的资金问题,完成后放到网上开放下载,无需任何费用,有兴趣的人可以自己下载来玩。 需求分析 在游戏中需要实现的功能: (1)能够通过键盘自由控制坦克移动和发射子弹; (2)敌方坦克能够随机移动和随机发射子弹; (3)子弹和不同阵营坦克碰撞后会产生爆炸; (4)消灭敌方坦克后会有个计分板记录玩家得分 (5)游戏进行到一半时可以暂停退出,下次打开游戏时选继续游戏可以继续之前的游戏。 第三章系统总体设计 游戏总体流程设计 开始新游戏时,先进行初始化,然后调用敌方坦克类和我方坦克类,实现键盘监听功能,战场显示所有坦克的移动,发射子弹。判断子弹和敌方坦克的碰撞,调用爆炸类,调用记录类,修改玩家总得分。

java开发坦克大战

j a v a开发坦克大战 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

坦克大战游戏演示为什么选择这个项目 1、好玩 2、涉及到java各个方面的技术 1、java面向对象编程; 2、界面编程; 3、绘图技术; 4、多线程; 5、文件i/o操作; 6、数据库 3、巩固旧知识,学习新知识 java绘图坐标体系 绘图坐标本系--介绍 坐标原点位于左上角,以像素为单位。像素是计算机屏幕上最小的显示单位。在java的坐标系中,第一个是X坐标,表示当前位置为水平方向,距离坐标原点X个像素;第二个是Y坐标,表示当前位置为垂直方向,距离坐标原点Y个像素。 坐标体系--像素 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。 绘图原理(1)[] Component类提供了两个和绘图相关最重要的方法: 1、paint(Graphicsg)绘制组件的外观 2、repaint()刷新组件的外观

当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件 .*; .*; publicclassWindow013extendsJFrame{ ; 7、画字符串drawString(Stringstr,intx,inty); 8、设置画笔的字体setFont(Fontfont); 9、设置画笔的颜色setColor(Colorc); ; .*; publicclassWindow014extendsJFrame{ ; .*; publicclassWindow015extendsJFrame{ ; .*; import publicclassWindow016extendsJFrameimplementsActionListener{ quals("黑色")){ 点击了黑色按钮"); ; }elseif().equals("红色")){ 点击了红色按钮"); ; }else{ 不知道"); } } } classCatimplementsActionListener{ publicvoidactionPerformed(ActionEventarg0){ if().equals("黑色")){ 也知道你按下了黑色按钮");

马士兵坦克大战经典源代码

package com.bjsxt.tank; import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.ArrayList; /** * 这个类的作用是坦克游戏的主窗口 * @author mashibing * */ public class TankClient extends Frame { /** * 整个坦克游戏的宽度 */ public static final int GAME_WIDTH = 800; public static final int GAME_HEIGHT = 600; Tank myTank = new Tank(50, 50, true, Tank.Direction.STOP, this); Wall w1 = new Wall(100, 200, 20, 150, this), w2 = new Wall(300, 100, 300, 20, this); List explodes = new ArrayList(); List missiles = new ArrayList(); List tanks = new ArrayList(); Image offScreenImage = null; Blood b = new Blood(); public void paint(Graphics g) { /* * 指明子弹-爆炸-坦克的数量 * 以及坦克的生命值 */ g.drawString("missiles count:" + missiles.size(), 10, 50); g.drawString("explodes count:" + explodes.size(), 10, 70); g.drawString("tanks count:" + tanks.size(), 10, 90); g.drawString("tanks life:" + myTank.getLife(), 10, 110); if(tanks.size() <= 0) { for(int i=0; i<5; i++) { tanks.add(new Tank(50 + 40*(i+1), 50, false, Tank.Direction.D, this)); }

java开发坦克大战

坦克大战游戏演示 为什么选择这个项目 1、好玩 2、涉及到java各个方面的技术 1、java面向对象编程; 2、界面编程; 3、绘图技术; 4、多线程; 5、文件i/o操作; 6、数据库 3、巩固旧知识,学习新知识 java绘图坐标体系 绘图坐标本系--介绍 坐标原点位于左上角,以像素为单位。像素是计算机屏幕上最小的显示单位。在java 的坐标系中,第一个是X坐标,表示当前位置为水平方向,距离坐标原点X个像素;第二个是Y坐标,表示当前位置为垂直方向,距离坐标原点Y个像素。 坐标体系--像素 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。 绘图原理(1)[Window013.java] Component类提供了两个和绘图相关最重要的方法: 1、paint(Graphics g)绘制组件的外观 2、repaint()刷新组件的外观 当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件 import java.awt.*; import javax.swing.*; public class Window013 extends JFrame{ //定义组件 MyPanel mp=null; public static void main(String[] args) { Window013 th=new Window013();

坦克大战程序源代码

import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.*; public class TankClient extends Frame { private static final long serialVersionUID = 1L; public static final int GAME_WIDTH=800; public static final int GAME_HIGH=600; Tank myTank=new Tank(50,50,this,true); List tanks=new ArrayList(); List missles=new ArrayList(); private static Random r=new Random(); Wall w1=new Wall(300,100,300,40,this),w2=new Wall(100,150,40,300,this); AddBlood Addb=new AddBlood(); List explodes = new ArrayList(); Image offScreenImage=null; public void paint(Graphics g) { g.drawString("missles count:"+missles.size(), 10,50); g.drawString("tanks count:" + tanks.size(), 10, 70); g.drawString("exlpode count:" +explodes.size(), 10, 90); g.drawString("mytank life:" + myTank.getLife(), 10, 110); for(int i=0;i

java坦克大战毕业设计论文

基于J2SE的网络版坦克大战游戏设计 摘要 [摘要]:J2SE (Java 2 Standard Edition)就是Java2的标准版,主要用于桌面应用软件的编程,是伴随着计算机技术的飞速发展而诞生的一项新的开发技术。随着个人电脑的日益普及、Java 功能在个人电脑上的实现,Java应用程序产生的单机增值服务逐渐体现出其影响力,对丰富人们的生活内容、愉悦身心、开发智力等起着不可忽视的作用。该论文通过总结和分析JA V A 游戏的开发流程和代码框架的设计,开发了一款基于J2SE架构的游戏——坦克大战。本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单。在开始游戏后,启动服务器和客户端,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克绘制在地图的上层。本设计主要实现的功能是让坦克能向八个方向移动,并且打出炮弹,子弹击中敌人坦克,子弹和敌人坦克同时消失,产生爆炸,CPU坦克能智能的移动并且打出炮弹。能够支持网络对战和单机对战两种模式。 Java良好的跨平台特性在软件的开发中显示出了巨大的威力,“一次编写,随处运行”,java 系统可以运行在不同的操作系统和硬件上。随着linux的持续增长以及MacOSX完全支持java 技术,跨平台的特性变得越来越有分量。 由于免费、跨平台、java语言本身技术先进,在高校中,java已经成为许多学科研究、课程和计算的首选语言,用java做上机作业,一般都是鼓励的。据我所知,北大、清华许多院系的研究生入学考试都可以用java语言答题。实际上,用java来完成这些工作,大多数情况下要比用C或其他语言简洁得多,你可以把注意力集中在算法等核心部分,从而获得更高分数。 [关键词] 面向对象坦克大战游戏J2SE Socket

坦克大战java源代码

有些图片路径会出错要注意package com.tankgame; import java.util.Vector; //坦克类 class Tank { int x=0; int y=0; int color=0; int speed=1; int direct=0; boolean isLive=true; public Tank(int x,int y) { this.x=x; this.y=y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public int getDirect() { return direct; } public void setDirect(int direct) { this.direct = direct;

} public int getColor() { return color; } public void setColor(int color) { this.color = color; } } //我的坦克 class Hero extends Tank { Shot shot=null; Vector shotm=new V ector(); public Hero(int x,int y) { super(x,y); this.color=5; } //坦克具有一个打击敌人的方法 public void shotenemy(int x,int y,int direct) { switch(direct) { case 0: shot=new Shot(this.x+10,this.y,0); shotm.add(shot); break; case 1: shot=new Shot(this.x+30,this.y+10,1); shotm.add(shot); break; case 2: shot=new Shot(this.x+10,this.y+30,2); shotm.add(shot); break; case 3: shot=new Shot(this.x,this.y+10,3); shotm.add(shot);

毕业设计论文 基于J2ME的Java游戏--坦克大战的开发

目录 摘要 ................................................................................................................... - I - Abstract .................................................................................................................... - I - 引言 ...................................................................................................................... II 第一章绪论 .................................................................................................... - 1 - 1.1 手机软件现状.......................................................................................... - 1 - 1.2 游戏业务及J2ME概况............................................................................ - 1 - 1.3 任天堂(Nintendo)的8位FC机器和Battle City背景介绍............ - 3 - 1.4 本章小结.................................................................................................. - 3 - 第二章开发环境及相关技术的介绍 ................................................................ - 5 - 2.1 开发环境.................................................................................................. - 5 - 2.2 Java语言的特点..................................................................................... - 5 - 2.3 关于JBuilder9....................................................................................... - 5 - 2.4 关于Wireless Tool Kit....................................................................... - 6 - 2.5 Java Appication Manager.................................................................... - 6 - 2.6 本章小结.................................................................................................. - 6 - 第三章程序结构、思想和相关技术 ................................................................ - 7 - 3.1 本程序需解决的有关技术问题.............................................................. - 7 - 3.2 程序流程.................................................................................................. - 8 - 3.3 绘图与MIDP2.0新增的GameCanvas包.............................................. - 10 - 3.3.1 提供低级绘制的Canvas类....................................................... - 10 - 3.3.2 Graphics类................................................................................ - 10 - 3.3.3 PNG格式...................................................................................... - 10 - 3.3.4 Game包中的新功能.................................................................... - 11 - 3.3.5 有关绘图的一些技术................................................................. - 12 - 3.4 坦克的控制和敌方的智能运行............................................................ - 12 - 3.5 子弹的运行和控制................................................................................ - 13 - 3.6 RMS数据库系统..................................................................................... - 14 - 3.7 内存使用的最佳化................................................................................ - 15 - 3.8 混淆器(Obfuscator)的使用................................................................ - 16 - 3.9 模拟器的相关调试................................................................................ - 16 - 3.10 本章小结.............................................................................................. - 17 - 第四章程序分析和具体实现 .............................................................................. - 18 - 4.1 游戏进入前的选择................................................................................ - 18 - 4.2 主游戏逻辑及其涉及到的若干类........................................................ - 19 - 4.3 坦克的共同行为.................................................................................... - 21 - 4.4 玩家坦克的功能属性............................................................................ - 22 - 4.5 敌人坦克的功能属性............................................................................ - 22 - 4.6 子弹的运行和控制................................................................................ - 24 - 4.7 记分系统................................................................................................ - 25 -

java写的坦克大战简易版

MyTankGame2.java package test; import javax.swing.*; import java.awt.*; import java.awt.event.*; //import java.io.*; import java.util.*; class MyTankGame2 extends JFrame implements ActionListener { MyPanel mp=null; //定义一个开始的面板 MyStartPanel msp=null; //做出我需要的菜单 JMenuBar jmb=null; //开始游戏 JMenu jm1=null; JMenuItem jmi1=null; //退出系统 JMenuItem jmi2=null; //存盘退出 JMenuItem jmi3=null; JMenuItem jmi4=null; public static void main(String[] args) { //System.out.println("Hello World!"); MyTankGame2 mtg=new MyTankGame2(); } //构造方法 public MyTankGame2() { //创建菜单及菜单选项 jmb=new JMenuBar(); jm1=new JMenu("游戏(G)"); //设置助记符 jm1.setMnemonic('G'); jmi1=new JMenuItem("开始新游戏(N)"); jmi2=new JMenuItem("退出游戏(E)"); jmi3=new JMenuItem("存盘退出游戏"); jmi4=new JMenuItem("继续上局游戏"); jmi4.addActionListener(this);

坦克大战系统《Java程序开发实训》综合实训报告

《Java程序开发实训》综合实训报告 题目:坦克大战系统 姓名:方庆 学号:2010203206 班级:10软件(2)班

一、系统实现的主要功能及运行结果截图 选择的语言的原因 游戏本身是一种娱乐方式,带给人无尽的乐趣,而且游戏行业的发展也将是带动周边行业的发展。同样对做出游戏的人的要求也会越来越高一满足游戏爱好者的要求。本次期末设计就是设计一种娱乐性较强的小游戏坦克大战,说到大战其实是不敢当的。但游戏基本拥有可玩性。java语言是一种跨平台,适合与分布计算环境的面向对象编程语言,java主要用在web开发,手机游戏及一些平台游戏的开发,他有很好的跨平台性。所以本次的设计坦克游戏选择的是java。 系统软件的软件环境 1.网络服务器操作系统:Window是 XP以上 2.开发工具:Eclipse 3运行环境:J2sdk 4.编程语言:java语言。 人机对战模式功能 1.能够发射子弹打击敌人 2.敌人能够移动 3.能够模拟爆炸 4.能够产生障碍 5能够增长生命6.能够使用超级子弹 坦克可以发射子弹

玩家坦克被击中血量减少。 被击中的坦克发生爆炸并且吃血块可以加血量。

玩家坦克可以从把方向发射超级子弹 自己的TankHealth为<=0时,。说明玩家坦克已死亡。游戏结束

本系统的坦克大战是基于java语言设计的开发,具有较高的人工智能和相对的图形处理。游戏可一人作战每次电脑方有10辆坦克, 此一举消灭全部的敌方坦克为目的。在这过程中坦克有机会得到血块来添加自己的生命值。从而变得强大。也利用wall来形成阻击敌人。 游戏拥有开挂的功能。可以穿过墙体来攻击敌方坦克。还给玩家坦克 置了超级炮弹。从八个方向同时射出炮弹来摧毁敌方坦克。主要功能 简单罗列如下: 1.屏幕左上方显示游戏的状态,当玩家方坦克全数为0是游戏结束 2.敌方坦克只在空地上行走,不可通过Wall 3.游戏打坏敌方坦克后,可随机位置随机出现血块奖励。坦克经过该 位置可获得相应的生命值加成。 4.玩家坦克的游戏资格和电脑坦克不同。 TankClient类设计流程 游戏系统类关联图

基于Java的网络版坦克大战游戏设计_毕业设计

伊犁师范学院 本科生毕业论文(设计) 论文题目:基于Java的网络版坦克大战游戏设计

基于Java的网络版坦克大战游戏设计 (伊犁师范学院计算机科学系06-2班,新疆伊宁市 835000) 摘要:本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单。在开始游戏后,启动服务器和客户端,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克绘制在地图的上层。本设计主要实现的功能是让坦克移动并能够智能的打出炮弹,躲避子弹,炸毁对方坦克。能够支持网络对战和单机对战两种模式。 关键词:面向对象;坦克大战;网络游戏;Java;Socket 类 中图分类号:TP311.1 目录

摘要 ......................................................................... 第1章前言.. (1) 1.1游戏设计的需求分析 (1) 1.1.1国内外电子网络游戏的现状 (1) 1.1.2本系统的现实意义 (1) 1.1.3本系统和其他开发游戏区别 (2) 1.2开发技术概述 (2) 1.2.1J AVA、C语言、C++三种主流编程技术比较 (2) 1.3本章小结 (2) 第2章相关技术理论 (3) 2.1系统运行环境 (3) 2.1.1系统运行的软件环境 (3) 2.1.2系统运行的硬件环境 (3) 2.2相关理论 (3) 2.2.1关于E CLIPSE的介绍 (3) 2.2.2J2SE框架 (3) 2.2.3联机通信机制 (4) 2.2.4J AVA图形编程 (5) 2.3本章小结 (5) 第3章系统设计 (5) 3.1系统可行性分析 (6) 3.1.1技术可行性 (6) 3.1.2经济可行性 (6) 3.1.3操作可行性 (6) 3.2系统需求分析 (6) 3.2.1在人机对战模式下实现的功能 (6) 3.2.2在网络对战模式下实现的功能 (6) 3.3系统功能设计 (6) 3.3.1坦克大战总体功能设计 (7)

坦克大战java源代码

有些图片路径会出错要注意package .tankgame; import java.util.Vector; //坦克类 class Tank { int x=0; int y=0; int color=0; int speed=1; int direct=0; boolean isLive=true; public Tank(int x,int y) { this.x=x; this.y=y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public int getDirect() { return direct; } public void setDirect(int direct) { this.direct = direct;

} public int getColor() { return color; } public void setColor(int color) { this.color = color; } } //我的坦克 class Hero extends Tank { Shot shot=null; Vector shotm=new V ector(); public Hero(int x,int y) { super(x,y); this.color=5; } //坦克具有一个打击敌人的方法 public void shotenemy(int x,int y,int direct) { switch(direct) { case 0: shot=new Shot(this.x+10,this.y,0); shotm.add(shot); break; case 1: shot=new Shot(this.x+30,this.y+10,1); shotm.add(shot); break; case 2: shot=new Shot(this.x+10,this.y+30,2); shotm.add(shot); break; case 3: shot=new Shot(this.x,this.y+10,3); shotm.add(shot);

相关主题
文本预览
相关文档 最新文档