//周期开始,则移动 if(getTime()%period == 0){ move = (Math.random()*2-1)*(period*8 - 25); setAhead(move + ((move >= 0) ? 25: -25)); } //避免撞墙 double heading = getHeadingRadians(); //取得bot方向的弧度数 double x = getX() + move*Math.sin(heading); //移动move后将要达到的x坐标 double y = getY() + move*Math.cos(heading); //移动move后将要达到的y坐标 double dWidth = getBattleFieldWidth(); //战场的宽度 double dHeight = getBattleFieldHeight(); //战场的长度 //当(x,y)超过指定的范围,则反向移动move if(x < 30 || x > dWidth-30 || y < 30 || y > dHeight-30){ setBack(move); } turnRadarLeft(radarMove); //转动雷达 } }//end run()
/** 首先,为了迷惑对方,不让对方容易的得到Bot的移动规律,Bot就要在一定的时间内做出随机的运动,这个很容易办到。并且,我给Bot的运动改变时间规定了周期。这个周期随离对方的距离改变,敌人越接近,周期越短,移动越频繁。
double period = 4*((int)(eDist/80)); 其次,Bot的运动不是呈直线的。而是以对方为圆心的圆周运动。
setTurnGunRightRadians(robocode.util.Utils.normalRelativeAngle( (责任编辑:laiquliu) |