摘自: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。