ROBOCODE游戏规则

发布 2023-05-03 15:53:28 阅读 4879

游戏规则:生命规则:

相撞损失:撞到墙时,生命点损伤度= (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。

部分重要的接口函数介绍(全部函数参考安装文件夹下的j**adoc文件夹):坦克属性:

double getbattlefieldheight()战场高度double getbattlefieldwidth()战场宽度double getheight()坦克高度string getname()坦克名称double getwidth()坦克宽度double getgunheading()炮管角度double getheading()坦克角度。

double getradarheading()雷达角度double getx()坐标xdouble gety()坐标ydouble getgunheat()炮管热量double getenergy()能量数值。

double getguncoolingrate()炮管冷却比例double getvelocity()坦克速度。

运行控制:void ahead(double distance)前进void back(double distance)后退void donothing()空。

void fire(double power)**。

void setadjustgunforrobotturn(boolean independent)炮\车同向void setadjustradarforgunturn(boolean independent)炮\雷达同向。

void setadjustradarforrobotturn(boolean independent)雷达\车同向void turnradarleft(double degrees)雷达左转角度void turnradarright(double degrees)雷达右转角度void turngunleft(double degrees)炮左转角度void turngunright(double degrees)炮右转角度void turnleft(double degrees)车左转角度void turnright(double degrees)车右转角度。

战斗事件:void onbullethit(bullethitevent event)子弹击中坦克。

void onbullethitbullet(bullethitbulletevent event)子弹击中子弹void onbulletmissed(bulletmissedevent event)子弹没有击中目标void ondeath(deathevent event)坦克被消灭的时候void onhitbybullet(hitbybulletevent event)被子弹击中void onhitrobot(hitrobotevent event)被坦克撞击void onhitwall(hitwallevent event)撞墙。

void onrobotdeath(robotdeathevent event)坦克死亡void onscannedrobot(scannedrobotevent event)扫描到坦克void onwin(winevent event)胜利void run()运行voidscan()扫描。

scannedrobotevent–雷达扫描:

double getbearing()获得相对自己坦克方向的角度double getbearingradians()获得相对自己坦克方向的弧度double getdistance()获得距离double getenergy()获得运行能量double getheading()获得方向角度double getheadingradians()获得方向弧度string getname()获得坦克名称double getvelocity()获得运行速度。

构造坦克的方式:

robot–支持较为全面的简单控制逻辑;teamrobot–支持团队作战模式;advancedrobot–支持高级机器人控制。

斗牛游戏规则

游戏规则。基本规则。游戏用牌为一副牌除大小王以外,共计52张。玩家人数为2人至6人,每人随机发5张牌。选择庄家与倍数。游戏开始时,玩家可选择 抢庄 不抢 决定自己是否愿意当庄,在 抢庄 玩家中随机选择庄家。庄家确定后,闲家可以进行倍数选择,选择的倍数将影响输赢结果的大小。发牌。所有的大小比较中过程均...

拱猪游戏规则

b 一家得双羊 两只没明的话是200分 只明了一只就是400分 都明了就是800分。c 一家得双猪 和双羊一样,只是分数正负的区别。d 一家得双 变压器 两只没明是4倍 明了一只是8倍 都明了是16倍。e 红桃a不存在同时得的问题,如果明了一只,那么所有红桃分变2倍 都明了红桃分变4倍。编辑本段特殊...

大学游戏规则

写在前面的话 即将大三,回头看看已经走过的1 2的大学生活,颇多的感悟和感慨。写下这段话,用以祭奠我逝去的大学生活。也希望可以和即将进入大学围城的你们一起分享。我对大学的理解,大学是一场游戏,所有的游戏规则是需要自己去碰触去总结的,没有固定的游戏规则,只有适合自己的。当找到了适合自己的游戏规则后,我...