有移动规则2
2015-09-22 12:17
232 查看
import org.robochina.airobot.tank.*; import org.robochina.math.*; import java.awt.geom.*; import java.util.*; /** * 这个类对应一个机器人,根据需要实现相应的Action处理函数, * 就可以订制自己的机器人。 */ public class Text extends SimpleRobot { //首先需要定义两个速度一个是移动的速度,和转动的速度 private static final double TURN_VELOCITY = Math.toRadians(3); private static final double GO_VELOCITY = 5; //根据这两个变量可以计算出来弧半径 private static final double R = GO_VELOCITY/TURN_VELOCITY; /** * 每个单位时间都会触发 */ public void onTick(TickAction action){ move(GO_VELOCITY); turn(TURN_VELOCITY); waitJiao(Math.toRadians(270)); turn(0); waitDistance(R*2); turn(-TURN_VELOCITY); waitJiao(Math.toRadians(270)); turn(0); waitDistance(R*2); } /** * 当开始一轮新的比赛时触发 */ public void onRoundBegin(RoundBeginAction action){ } //等待这个机器人走过这条直线的长度 private void waitDistance(double displance){ int time =(int) (displance/GO_VELOCITY); for (int i = 0; i <time; i++) { delay(); } } private void waitJiao(double jiaodu){ int time =(int) (jiaodu/TURN_VELOCITY); for (int i = 0; i <time; i++) { delay(); } } /** * 当一轮比赛结束时触发 */ 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 Text()); } } 2: import org.robochina.airobot.tank.*; import org.robochina.math.*; import java.awt.geom.*; import java.util.*; /** * 这个类对应一个机器人,根据需要实现相应的Action处理函数, * 就可以订制自己的机器人。 */ public class Firgure extends SimpleRobot { //首先需要定义两个速度一个是移动的速度,和转动的速度 private static final double TURN_VELOCITY = Math.toRadians(3); private static final double GO_VELOCITY = 5; //根据这两个变量可以计算出来弧半径 private static final double R = GO_VELOCITY/TURN_VELOCITY; /** * 每个单位时间都会触发 */ public void onTick(TickAction action){} /** * 当开始一轮新的比赛时触发 */ public void onRoundBegin(RoundBeginAction action){ while (true) { move(GO_VELOCITY); turn(TURN_VELOCITY); waitJiao(Math.toRadians(270)); turn(0); waitDistance(R*2); turn(-TURN_VELOCITY); waitJiao(Math.toRadians(270)); turn(0); waitDistance(R*2); } } //等待这个机器人走过这条直线的长度 private void waitDistance(double displance){ int time =(int) (displance/GO_VELOCITY); for (int i = 0; i <time; i++) { delay(); } } private void waitJiao(double jiaodu){ int time =(int) (jiaodu/TURN_VELOCITY); for (int i = 0; i <time; i++) { delay(); } } /** * 当一轮比赛结束时触发 */ 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 Firgure()); } }
import org.robochina.airobot.tank.*; import org.robochina.math.*; import java.awt.geom.*; import java.util.*; /** * 这个类对应一个机器人,根据需要实现相应的Action处理函数, * 就可以订制自己的机器人。 */ public class Firgure extends SimpleRobot { //首先需要定义两个速度一个是移动的速度,和转动的速度 private static final double TURN_VELOCITY = Math.toRadians(3); private static final double GO_VELOCITY = 5; //根据这两个变量可以计算出来弧半径 private static final double R = GO_VELOCITY/TURN_VELOCITY; /** * 每个单位时间都会触发 */ public void onTick(TickAction action){} /** * 当开始一轮新的比赛时触发 */ public void onRoundBegin(RoundBeginAction action){ while (true) { move(GO_VELOCITY); turn(TURN_VELOCITY); waitJiao(Math.toRadians(360)); turn(0); waitDistance(R*2); } } //等待这个机器人走过这条直线的长度 private void waitDistance(double displance){ int time =(int) (displance/GO_VELOCITY); for (int i = 0; i <time; i++) { delay(); } } private void waitJiao(double jiaodu){ int time =(int) (jiaodu/TURN_VELOCITY); for (int i = 0; i <time; i++) { delay(); } } /** * 当一轮比赛结束时触发 */ 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 Firgure()); } }
这个代码是走一个圆走一条直线,一直重复下去
相关文章推荐
- buffer和cache有什么本质区别
- (25)JAVA.IO--使用Java创建指定大小的空文件
- Hadoop与Spark等数据处理系统哪个是最好的?
- 自定义ImageView实现圆角矩形
- 天声人語 20150922
- Android 自定义View 实现垂直滑动页
- Unity图片变灰的方式
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- 关于tomcat startup.bat启动后一闪而过的问题(转)
- struts2 国际化
- 快速排序
- Mac Security工具使用总结
- Swift数组字典基本定义控制流基本应用
- POJ(2186)强连通分量分解
- Android判断服务是否运行及定位问题实例分析
- 【软考】——软考视频总结
- 路由与网关的关系
- FOJ 2020 组合(组合数取素数摸模板:Lucas)
- Minimum Path Sum
- 【经典算法】:ASCII码打印的算法实现