会员登录 | 注册

来去留技术信息资源

来去留技术信息资源
来去留网 > 来学技术 > 用游戏来学习java技术(robocode攻略)(3)

用游戏来学习java技术(robocode攻略)(3)

2012-02-08 14:10来源:来去留知道网发布者:laiquliu 查看:

/**
* 当检测到对方bot,触发事件
* @param e
*/
public void onscannedrobot(scannedrobotevent e) {
edist = e.getdistance(); //取得对方距离
radarmove = -radarmove; //设置雷达
double ebearing = e.getbearingradians(); //取得和对方相对角度的弧度数
//将bot转动相对的角度,以后bot的运动将是以对方为圆心的圆周运动
setturnleftradians(math.pi/2 - ebearing);
//转动炮管指向对方
setturngunrightradians(robocode.util.utils.normalrelativeangle(
getheadingradians() + ebearing - getgunheadingradians()));
//根据对方距离射击
dfirepower = 400/edist;
if (dfirepower > 3){
dfirepower = 3;
}
fire(dfirepower);
}
}

  首先,为了迷惑对方,不让对方容易的得到bot的移动规律,bot就要在一定的时间内做出随机的运动,这个很容易办到。并且,我给bot的运动改变时间规定了周期。这个周期随离对方的距离改变,敌人越接近,周期越短,移动越频繁。

double period = 4*((int)(edist/80));
if(gettime()%period == 0){
move = (math.random()*2-1)*(period*8 - 25);
setahead(move + ((move >= 0) ? 25: -25));
}

  其次,bot的运动不是呈直线的。而是以对方为圆心的圆周运动。

setturngunrightradians(robocode.util.utils.normalrelativeangle(
getheadingradians() + ebearing - getgunheadingradians()));

  最后是如何避免撞墙。这里要用到点三角函数-_-!! 原理就是,计算bot一次运动后将要达到的坐标是不是位于规定的危险区域。如果是,则立即反方向运动。

double heading = getheadingradians();
double x = getx() + move*math.sin(heading);
double y = gety() + move*math.cos(heading);
double dwidth = getbattlefieldwidth();
double dheight = getbattlefieldheight();
if(x < 30 || x > dwidth-30 || y < 30 || y > dheight-30){
setback(move);
}

这个bot的威力如何?呵呵,我去测试一下先~

好了,就说到这里了,欢迎各大高手来踩……

关于其它的一些"编程游戏"
有许多软件是基于这种思想的,robocode它自己就是来源于机器人大战robot battle()这款软件。其它的编程游戏还包括:
· ai fleet commander
· ai wars
· at-robots
· bolo
· botwarz
· c-robots
· cadaver
· codedwombat
· colobot
· corewars
· cybwar
· grobots
· droidbattles
· karel the robot
· mindrover
· intellibots
· omega
· realtimebattle
· robot wars
· robowar
· srobots
· vbrobots
就我所看过的"编程游戏",robocode是最简单上手的。

· 它非常容易上手,是特别为教学而设计的
· 它具有平滑且吸引人的图形
· 它完全地将编辑器,编译器和运行环境集成在了一起。
· 它是由java编写的,且java非常适合当作初学语言

(责任编辑:laiquliu)

关注技术,信息,资源,扫描来去留网微信二维码交流。

来去留我李俊

搜索

------分隔线----------------------------
相关栏目

热点推荐
来去留技术信息资源
来去留网为您提供平台咨询交流学习方法及各类热门技术;电器,服装,保健,行业快讯等二十几个类别的资讯