Robocode坦克大战源码
机器人程序系列文档有山东师创提供,机器人源码的书写要求编程人员有良好的逻辑思维能力,数学运算能力,基本的算法思想,熟练的变成能力,应变能力,针对能力。有效提高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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




