教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

Robocode坦克大战源码

来源:网络收集 时间:2026-09-08
导读: 机器人程序系列文档有山东师创提供,机器人源码的书写要求编程人员有良好的逻辑思维能力,数学运算能力,基本的算法思想,熟练的变成能力,应变能力,针对能力。有效提高java的编程能力。 山东师创实训文件: 软件详细设计说明书 一、TankWar类: TankWar继承Frame

机器人程序系列文档有山东师创提供,机器人源码的书写要求编程人员有良好的逻辑思维能力,数学运算能力,基本的算法思想,熟练的变成能力,应变能力,针对能力。有效提高java的编程能力。

山东师创实训文件:

软件详细设计说明书

一、TankWar类:

TankWar继承Frame类。

1、paint( )方法

paint( ) 方法主要实现对坦克类和子弹类,障碍物类和爆炸类等画到窗口上。坦克类又分为MyTank和EnwmyTank 两类。对这两类用不同的颜色画到窗口上。画子弹时通过传递坦克的颜色画出相应的子弹颜色。

子弹画坦克死亡则不再对其进行重画。

2、update( )方法。

update( ) 方法主要是为了解决,重画频率太快,paint( ) 方法还没有完成,重画坦克时出现的闪烁现象。

通过双缓冲技术将所有东西画在虚拟图片上,一次性显示出来解决闪烁现象。

3、 内部类KeyMon键盘监听

KeyMon继承KeyAdapter类。通过KeyMon类的监听,用户可以通过键盘控制自己的坦克。

4、内部类MyTankWarThread

MyTankWarThread实现Runnable接口,通过MyTankWarThread实现对坦克的重画,实现坦克的移动。

5、showFrame( )方法

showFrame( )方法主要是设置一个窗口及其各种参数。

二、Tank类

Tank类是实现Runnable接口的一个抽象类

1、 Tank类的主要属性有:

int x; //坦克的位置

int y; //

int oldx; //坦克上一步的坐标

int oldy; //

Dir dir; // Tank方向的成员变量

int speed = 5;

boolean isLive = true;

2、 Tank类提供各种的构造方法

Tank(int x, int y)

Tank(int x, int y, Dir dir)

Tank(int x, int y, Dir dir, TankWar tw)

根据不同的需要使用不同的构造方法。

3、 drawTank ()方法

drawTank()方法根据坦克的类型不同可以画出不同类型的坦克和不同方

机器人程序系列文档有山东师创提供,机器人源码的书写要求编程人员有良好的逻辑思维能力,数学运算能力,基本的算法思想,熟练的变成能力,应变能力,针对能力。有效提高java的编程能力。

向的坦克。敌人的坦克用BLUE画出来,自己的坦克用RED颜色画出来,以区分敌我。

4、 fire()方法

fire()方法的功能是实现打出一颗子弹,fire()方法调用了画坦克的颜色变量 c ,画出与坦克一样颜色的子弹,以区别子弹是那一方发出来的。

5、 isHitWall()方法

该方法是用来判断Tank是否与障碍物发生碰撞

public boolean isHitWall() {

Wall w = null;

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

w = tw.walls.get(i);

if (w.isHits(this.getRectangle())) {

return true;

}

}

return false;

}

6、 getRectangle()方法

该方法主要是用来检测是否发生了碰撞。

public Rectangle getRectangle() {

return new Rectangle(x, y, TANK_WIDTH, TANK_HEIGHT);

}

7、 add(int count, TankWar tw)方法

该方法是用来添加敌人坦克的,当敌人坦克数量减少时,而此时敌人的count又未小于0时添加相应数量的敌人坦克来增加游戏的可玩性。

三、MyTank类

MyTank类继承Tank类

1、locDir(KeyEvent e)方法

通过键盘监听,对按键进行监听来实现用户可以通过W D S A四个方向键对坦克的控制

2、keyReleased(KeyEvent e)方法

该方法主要是为了防止连续发子弹的问题,只有放开SPACE按键才可以发弹,这样就增加了游戏的可玩性。

3、stay()方法

该方法主要实现暂停的功能,这个是本游戏代码中的一个的亮点,通过线程来实现的

public void stay() {

int tc = Thread.activeCount();

Thread[] threads = new Thread[tc];

Thread.enumerate(threads);

if (tw.flag) {

for (int i = 0; i < threads.length; i++) {

机器人程序系列文档有山东师创提供,机器人源码的书写要求编程人员有良好的逻辑思维能力,数学运算能力,基本的算法思想,熟练的变成能力,应变能力,针对能力。有效提高java的编程能力。

System.out.println(tc + ":suspend " + threads[i].getName()); if (threads[i].getName().matches("^Thread-.*")) { threads[i].suspend(); tw.flag = false; } } } else if (! tw.flag) { for (int i = 0; i < threads.length; i++) { System.out.println(tc + ":resume " + threads[i].getName()); if (threads[i].getName().matches("^Thread-.*")) { threads[i].resume(); tw.flag = true; } } } }

4、move()方法

该方法是实现坦克的移动,如果遇到障碍物或出界,则返回上一次的位置,通过(oldX , oldY)坐标记录坦克每一次移动的位置。

public void move() {

if (dir == Dir.U) {

oldy = y;

y = y - speed;

if (isHitWall()) {

y = oldy;

}

} else if (dir == Dir.R) {

oldx = x;

x = x + speed;

if (isHitWall()) {

x = oldx;

}

} else if (dir == Dir.D) {

oldy = y;

y = y + speed;

if (isHitWall()) {

y = oldy;

}

} else if (dir == Dir.L) {

oldx = x;

x = x - speed;

if (isHitWall()) {

x = oldx;

}

机器人程序系列文档有山东师创提供,机器人源码的书写要求编程人员有良好的逻辑思维能力,数学运算能力,基本的算法思想,熟练的变成能力,应变能力,针对能力。有效提高java的编程能力。

}

//判断坦克出界

if (x > TankWar.GAME_WIDTH - TANK_WIDTH - 5) {

x = TankWar.GAME_WIDTH - TANK_WIDTH - 5;

}

if (x < 5) {

x = 5;

}

if (y > TankWar.GAME_HEIGHT - TANK_HEIGHT - 5) {

y = TankWar.GAME_HEIGHT - TANK_HEIGHT - 5;

}

if (y < TANK_HEIGHT) {

y = TANK_HEIGHT;

}

}

5、drawTank()方法

这个方法是实现坦克自动移动,玩家可以通过方向键改版方向,移动过程中可以发射子弹。

public void drawTank(Graphics g) {

super.drawTank(g);

if (isStay) {

move();

}

}

四、EneyTank类

EnemyTank类继承Tank类

1、moveTrace()方法

该方法实现的是敌人坦克伪智能功能,这个是本坦克大战的一个亮点。敌人坦克出来后会根据当前位置和hero的位置比较,进而对hero进行追击。

public void moveTrace(){

if(step>0){

move();

step--;

return;

}

int dx = this.x- tw.hero.x ;

int dy = this.y- tw.hero.y ;

if (tw.hero.isLive) {

int next = (int) (Math.random() * 2);

if (next == 1) {

if (dx > 0) {

this.dir = Dir.L;

机器人程序系列文档有山东师创提供,机器人源码 …… 此处隐藏:2936字,全部文档内容请下载后查看。喜欢就下载吧 ……

Robocode坦克大战源码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1802329.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)