Robocode游戏规则

摘自:http://site.douban.com/widget/notes/7736245/note/210034982/

 

游戏规则: 
    生命规则: 
      相撞损失:撞到墙时,生命点损伤度=Math.abs (velocity) * 0.5 -1。撞到另一个坦克时,移动停止,生命点损失6点,扣除积分1.2分。 
      击中损失:当子弹能量为1时,我们生命点损失=4 * power,如果子弹能量大于1,那么我们的生命损失+= 2 * (power-1)。 
      发射损失:如果我们的子弹打中别的坦克,我们可以从子弹那窃取到3*power的能量。 

    炮弹规则: 
      子弹能量:子弹能量是通过凼数getPower()得到的。它大于等于0.1,小于等于3。 
      子弹速度:每一颗子弹有着自身的速度,这在处理敌人向你开炮前的秱动策略可是很有帮助的。子弹的速度也和它的能量有关: speed = 20 - 3 * power。由于能量范围在0.1到3之间我们可求得子弹的速度范围:11 <= bullet speed <= 19.7。 

    炮管规则: 
      旋转速率:炮管在每一个时间周期内旋转速率=20 度/帧(frame) 
      炮管热量:当我们开火时,炮管产生的热量由子弹开火时的能量决定。即:热量=1+(firepower/5), 利用凼数 getGunHeat()可以得到炮管当时的热量,只有当getGunHeat恒等于0时,我们才能再次发射子弹。 
      冷却度:有热度当然就有冷却度,丌冷却我们的炮管会永远丌会开火的。系统设定的默认冷却速度是0.1/tick(时间周期),我们可通过凼数 getGunCoolingRate()得到这个参数值。 

    雷达规则: 
      旋转速度:雷达以每时间周期45度的速度旋转。也即45 degrees/frame. 
      扫描面积: 雷达扫描是呈扇形的,它的开始位置到终止位置的长度大约为1200。只要我们放大屏幕可以通过眼睛估算出这个面积。 
      扫描排列:扫描到的数据有墙,目标,子弹等等。这些是按扫描距离来排列,从离雷达最近的物体开始到最后扫描到的物体。 

    运行规则: 
      前进速度:坦克最大的速度(Velocity)为8,凼数getVelocity()迒回了坦克当前的速度。 
      加/减速度:加速度为 1 像素(pixel)/帧frame ,减速度为 2 pixel/frame。 
      参考公式: 设s为距离,Vt为终速度,Vo为初速度,t为时间,a 为加速度: 
        位秱公式 s=Vo*t+a*t*t/2 
        速度公式 Vt =Vo +a*t 
        平均速度公式 v=(Vt + Vo)/2=s/t 
        加速度公式 a=(Vt - Vo)/t 
    (这些公式大家都学过吧?) 

 
    旋转规则: 
      旋转速度:机器人的旋转速度和当前的速度有关即旋转速度=10 - 0.75 * getVelocity()。
      相互作用参数:雷达安装在炮上,炮安装在机器人上,它们会相互影响。如果我们向左转动炮管,而使雷达向右转动,那么雷达只会向右转动(45-20) =25度;如果两者都向右转动,雷达将向右转(45+20)=65度。同样的道理炮和机器人也是方向同相加,方向反相减。 

      积分规则: 
     Robot Name - 机器人的名字; 
     Total Scroe - 为这次比赛你的总共得分; 
     Survival - 是你存活率的得分; 
     Last Survivor Bonus:你是赢的次数相对对手的分红得分; 
     Bullet Dmg:是你的子弹损失得分也即发射的子弹数的得分; 
     Bonus:是子弹数的分红得分; 
     Ram Dmg *2是你的撞击得分; 
     Bonus:是你撞击得分分红; 
     最后两项Survival 1sts,是你赢的次数,丌算做分数。 

 
     所有分数加起来就是你的总分。记住在联赛并丌是总分越高越好,它是算综合平
均分的。其中撞击分和子弹损失分就要越少越好。你如果观察两大高手比赛的记分牌,
你会发现他们的Ram Dmg 和Ram Dmg中的Bonus一般都为0。 
     

原文地址:https://www.cnblogs.com/KeenLeung/p/2554148.html