Robocode 超级机器人 “波”统计瞄准算法

本文探讨了Robocode中'波'统计瞄准算法在与直线瞄准和圆周瞄准算法对抗时的优势。通过实际运行比较,表明全匹配的直线和圆周瞄准策略无法战胜采用统计瞄准算法的超级机器人'波'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取当前帧的敌人的位置和自己的位置以及射击的角度,子弹的速度
每一帧获取一次
当有足够多的数据后,根据当前的位置和角度,获取之前最有可能打中地方的攻击方式。

Robocode    模式匹配和随机移动
波保存敌人的起始点、自己的起始点、与敌人的绝对夹角、敌人的距离、发现敌人的时间、射击角度、速度的水平分量、速度的垂直分量

“波”统计瞄准算法进行模式匹配

直线瞄准以及圆周瞄准算法都是全匹配算法

我们将拥有超级机器人“波”统计瞄准算法与直线瞄准和圆周瞄准算法的机器人进行比拼

//传播波的算法
package com.xalead.superrobot;
import java.awt.geom.Point2D;
import robocode.AdvancedRobot ;
import robocode.Condition;
import robocode.Rules;
import robocode.util.Utils;
import com.xalead.superrobot.model.Battle;
public class Wave extends Condition{
        //自己的起始点坐标
        private Point2D.Double myStartPos = null ;
        //创建这个波时敌人的绝对夹角
        private double absBearing = 0;
        //发现敌人的时间
        private double startTime ;
        //敌人的距离
        private double dist ;
        //速度垂直分量
        private double adSeg ;
        //速度的水平分量
        private double velSeg ;
        //这个值只有当波碰到敌人时才能产生
        private double angle ;
        //战场模型的引用
        private Battle battle = null ;
        //执有机器人的引用
        private WaveSurfing robot = null ;
        public Wave(){}
        public Wave(Battle battle){
              this . battle = battle;
              robot = (WaveSurfing)battle.getRobot();
       }
        public Point2D.Double getMyStartPos() {
              return myStartPos ;
       }
        public void setMyStartPos(Point2D.Double myStartPos) {
              this . myStartPos = myStartPos;
       }
        public double getAbsBearing() {
              return absBearing ;
       }
        public void setAbsBearing( double absBearing) {
              this . absBearing = absBearing;
       }
        public double getStartTime() {
              return startTime ;
       }
        public void setStartTime( double startTime) {
              this . startTime = startTime;
       }
        public double getDist() {
              return dist ;
       }
        public void setDist( double dist) {
              this . dist = dist;
       }
        public double getAdSeg() {
              return adSeg ;
       }
        public void setAdSeg( double adSeg) {
              this . adSeg = adSeg;
       }
        public double getVelSeg() {
              return velSeg ;
       }
        public void
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值