坦克大战系列8-策略分析之瞄准策略

 

前言

本篇主要介绍Robocode中如何对敌方进行扫描并且不断调整自身的雷达移动方式以达到长时间瞄准的效果,如果该效果实现了,是不是就会对我们坦克的后续的战斗增加很重要的砝码呢!

直线瞄准策略

 

官方图

∠AEF= ∠α=敌人与Y轴夹角的绝对角(见前面例子)

子弹的由E到F的运行时间为diff

坦克的运行速度speed=ScannedRobotEvent. getVelocity();

AB=speed*diff

我们可以算出B点的坐标为,A点坐标(x,y)

newX=x+AB*Math.sina(α)

newY=y+EF*Math.cos(α)

炮弹应该转动的角为normalRelativeAngle(α- getGunHeadingRadians())

圆周瞄准策略

其基本原理是:

change in x = cos(initialheading) * radius - cos(initialheading + changeinheading) * radius

change in y = sin(initialheading + changeinheading) * radius - sin(initialheading) * radius

其中initialheading是敌方机器人在初始位置的方向,子弹飞行期间的方向变化为 changeinheading,我们假定它以 radius为圆周半径运动。

 

官方图

每转的方向变化:

headingchangeperturn =

(heading2 - heading1)/time 得到这个值,其中 time是两次测量的间隔时间;

子弹运动时间:

time = getTime()+(range/(20-(3*firepower))) ,其中 range是发射时我们和敌人之间的距离,而 firepower是我们计划使用的射击火力;

半径:radius = velocity/headingchangeperturn

通过以上公式的设定就可以充分调动雷达及炮管的角度,更加明确自身的战术,做到游刃有余,大家自己根据理解试一下吧。

好啦,本期内容就到这里喽,我是不会玩游戏却非得写游戏的陈老师,一起来学习JAVA吧!

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值