当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

Robocode高手的诀窍 - 圆周对准[Java编程]

赞助商链接



  本文“Robocode高手的诀窍 - 圆周对准[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

这篇小本领会让您深化理解圆周对准的工作原理.我们会从谈论基本本领的工作原理开始,接着阐释一个简单的迭代,它能明显提高精确性.我还供应 源 代码,它很简单适应在您自己的机械人中工作.

工作原理

计算做圆周运动的机械人的 change in x(x 方向上的改变)和 change in y(y 方向上的改变)的伪码相当简单,假定您以弧度为单位举行计算:

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

式中 initialheading是敌方机械人在初始位置的方向,子弹飞翔期间的方向 改变成 changeinheading,我们假定它以 radius为圆周半径运动.

计算必要的数据

图 1 阐明了我们需求的大部份数据: r是机械人运动所绕的圆周半径,方向 改变成 a,而 v则是敌方机械人运动的当即速度.

图 1. 沿圆周移动

为了要精确对准仇人,我们需求某些特定的数据:机械人当前的方向,每转 的方向改变,当前的速度,我们的子弹到达的时刻.我们可以利用这些数据计算 出仇人转圈的圆半径,以及它最后的方向(即,我们的子弹到达仇人的刹时仇人 的方向).我们计算子弹击中位置的办法以下:

每转的方向改变:我们用 headingchangeperturn = (heading2 - heading1)/time 得到这个值,此中 time是两次丈量的隔断时间.您还必须使结 果尺度化,以下面代码中所示.

子弹时间:我们利用简单的 time = getTime()+(range/(20- (3*firepower))) 便可以满意需求了.此中 range是发射时我们和仇人之间的距 离,而 firepower是我们筹划利用的射击火力.假定子弹击中时,目标到我方的 距离不变,这个假定并不符合,但是我们在本文背面的内容中开辟出迭代之前, 有它就充足了.

半径:我们用 radius = velocity/headingchangeperturn 得出这个值.


  以上是“Robocode高手的诀窍 - 圆周对准[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>世界robocode机械人的四大运动办法解析</b>
  • Robocode高手的诀窍 - 圆周对准
  • Robocode高手的诀窍 - 因数避墙法(factored wall avoidance)
  • 在Robocode中操纵Vector实现仇人列表
  • Robocode基本原理之方向解析
  • Robocode基本原理之坐标锁定
  • Robocode高手的诀窍 - 躲避子弹
  • Java.awt.Robot类掌握鼠标和键盘
  • <b>Java的Robot类实现抓屏</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .