定点瞄准算法

import org.robochina.airobot.tank.*;
import org.robochina.math.*;
import java.awt.geom.*;
import java.util.*;

/**
 * 这个类对应一个机器人,根据需要实现相应的Action处理函数,
 * 就可以订制自己的机器人。
 */
public class FireOrginal extends SimpleRobot
{
	/**
	 * 每个单位时间都会触发
	 */
	public void onTick(TickAction action){
		//得到第一个对手的信息
		Bot opponent = this.getFirstOpponent();
		//如果没有对手就直接返回
		if (opponent == null) {
			return ;
		} else {
			//计算开火的方向
			double heading = MathUtils.heading(getLocation(),opponent.getLocation());
			//想指定的方向开火
			fire(heading,3);

		}

	}

	/**
	 * 当开始一轮新的比赛时触发
	 */
	public void onRoundBegin(RoundBeginAction action){}

	/**
	 * 当一轮比赛结束时触发
	 */
	public void onRoundFinish(RoundFinishAction action){}

	/**
	 * 当开始一场新的比赛时触发
	 */
	public void onMatchBegin(MatchBeginAction action){}

	/**
	 * 当整场比赛结束时触发
	 */
	public void onMatchFinish(MatchFinishAction action){}

	/**
	 * 当有队友向自己发送消息时触发
	 */
	public void onMessageReceived(MessageReceivedAction action){}

	/**
	 * 当撞到其它机器人时触发
	 */
	public void onHitRobot(HitRobotAction action){}

	/**
	 * 当撞到墙时触发
	 */
	public void onHitWall(HitWallAction action){}

	/**
	 * 当任意一个机器人开火时触发
	 */
	public void onFire(FireAction action){}

	/**
	 * 当有机器人死亡时触发
	 */
	public void onRobotDeath(RobotDeathAction action){}

	/**
	 * 当自己的子弹击中敌人时触发
	 */
	public void onBulletHit(BulletHitAction action){}

	/**
	 * 当被别人的子弹击中时触发
	 */
	public void onHitedByBullet(HitedByBulletAction action){}

	/**
	 * 机器人程序入口
	 * @param args
	 */
	public static void main(String[] args)
	{
		startup(args, new FireOrginal());
	}
}

  

时间: 2024-09-15 16:16:44

定点瞄准算法的相关文章

稍微复杂一点的瞄准算法-直线瞄准算法

package jiaqi; import java.awt.geom.Point2D; import robocode.AdvancedRobot; import robocode.Rules; import robocode.ScannedRobotEvent; public class MyDemoRobot extends AdvancedRobot{ /** * 扫描到敌人的时间 */ private double time1 = 0; private Enemy enemy = ne

unity3D引擎:2D游戏自动瞄准算法实现

转:http://blog.csdn.net/naitu/article/details/39555373 在很多飞行射击类游戏里,都有敌人向玩家自动瞄准并开火的功能.在这里本人用unity3D引擎新版本的2D系统来实现这个功能. 首先,让我们了解一下原理的理论知识.我们可以把敌人和玩家放到一个坐标系中,敌人是坐标是的原点((0,0)点),玩家是在这个坐标系中的一点.然后把二者在坐标系中构建成直角三角形来计算坐标系的X轴旋转多少角度指向玩家. 现在假设玩家分别放在坐标系的四个象限中,假设第一象限

6.基本瞄准与函数

之前我们讨论了如何移动,下面我们就研究一下如何瞄准 定点瞄准: 直线瞄准: 曲线瞄准: 相关事件: 知己知彼能够随时了解敌人的动态,是瞄准中第一要素.通过getBot(int id)和getFirstOppoent()这两个函数就是搜集机器人的信息. Bot是一个机器人的接口,里面定义了各种必要的信息.如对手机器人的坐标,生命能量,机器人的方向等有用的信息. Bot double getEnergy()得到机器人的能量 long getFirePrepareTime()返回机器人的开火准备时间

关于模板方法和策略模式的一点思考

该随笔的思想原点,应该算是在两三年前了.当时和一前同事聊天.不知怎得就聊到了Http访问. 一.我记得他和我说过的第一句话,大概是:有没有已经封装好的.比较强大的HttpUtil.也可能是受业务的影响(接口对内).我当时接触到的Http访问,大多比较“规范”,至少有一个接口约束在约定着某些东西,不至于一会传递json,返回json, 一会又要传递xml,返回xml,甚至更奇葩的是,上传个文件.返回0或者1.如果真出现这样的状态,HttpUtil依然能够方便.灵活的适应着各种情况.我想这个Util

浅谈压缩感知(三十一):压缩感知重构算法之定点连续法FPC

主要内容: FPC的算法流程 FPC的MATLAB实现 一维信号的实验与结果 基于凸优化的重构算法 基于凸优化的压缩感知重构算法. 约束的凸优化问题: 去约束的凸优化问题: 在压缩感知中,J函数和H函数的选择: 一.FPC的算法 FPC,全称Fixed-Point Continuation,这里翻译为定点连续. 数学模型: 算法: 该算法在迭代过程中利用了收缩公式shrinkage(也称为软阈值soft thresholding),算法简单.优美. 迭代过程: (梯度) 合并一下,就得到了整个迭

利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转

最近本人一直在学习ZYNQ SOC的使用,目的是应对科研需要,做出通用的算法验证平台.大概思想是:ZYNQ PS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更新硬件算法模块配置寄存器内容,同时可计算分析PL端算法实现性能指标.PL端的FPGA逻辑则负责算法的硬件实现,以探索高效并行硬件架构.为此本人后续会持续编写<利用ZYNQ SOC快速打开算法验证通路>系列专题博文,在各个阶段进行些基础性总结. MATLAB中数据为双精度浮点型,因此打开算法验证通路

浮点转定点算法-加法运算

这里默认用的是32位的float存储,其具体规则可以看个连接http://bbs.chinaunix.net/thread-3746530-1-1.html 将浮点数用32位的定点形式表示. 将两个数通过移位扩大至相同的倍数. 定点加法运算. 将上一步的运算结果还原为浮点表示. #define MIN(X,Y) (X>=Y?Y:X) /** 浮点的加法运算转换为定点的加法运算 * author : zgr 2014-04-03 * 1. 内存中符号位+阶码+尾数的浮点表示法转换为符号位+整数部分

【算法学习笔记】32.计算几何 求含最多给定点的直线 SJTU OJ 1350 穿越沙漠

1350. 穿越沙漠 Description 塞尔达公主又又又又被抓走了.林克为了找到她需要穿过拉纳鲁沙漠,坏消息是林克可能没有足够的体力穿越沙漠,好消息是沙漠中分布着N个力之果实,坏消息是我们的林克只能走直线.为了穿越沙漠,林克希望能够吃到尽可能多的力之果实.现在请你帮他规划一条直线,使他能够获得尽可能多的力之果实. Input Format 输入第一行有一个数N,表示沙漠中果实的数量. 接下来的N行每行两个正整数x,y,表示每个力之果实的坐标. Output Format 输出一个数,表示林

算法导论——lec 13 贪心算法与图上算法

之前我们介绍了用动态规划的方法来解决一些最优化的问题.但对于有些最优化问题来说,用动态规划就是"高射炮打蚊子",采用一些更加简单有效的方法就可以解决.贪心算法就是其中之一.贪心算法是使所做的选择看起来是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解. 一. 活动选择问题 [问题]对几个互相竞争的活动进行调度:活动集合S = {a1, a2, ..., an},它们都要求以独占的方式使用某一公共资源(如教室),每个活动ai有一个开始时间si和结束时间fi ,且0 ≤ si &