• 坦克大战系列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吧!

  • 相关阅读:
    MSMQ实现自定义序列化存储
    流程部署的查询、删除、流程
    使用trello管理你的项目
    CentOS 6.4 编译安装 gcc 4.8.1
    jquery实现无限滚动瀑布流实现原理
    系统分析员备考之经济管理篇(二)
    架构、架构师和架构设计
    ASP.net Web API综合示例
    c中函数参数传递
    准备抽象NHibernate和EntityFramework
  • 原文地址:https://www.cnblogs.com/qfchen/p/11245914.html
Copyright © 2020-2023  润新知