有移动规则2
import org.robochina.airobot.tank.*; import org.robochina.math.*; import java.awt.geom.*; import java.util.*;/*** 這個類對應(yīng)一個機器人,根據(jù)需要實現(xiàn)相應(yīng)的Action處理函數(shù),* 就可以訂制自己的機器人。*/ public class Text extends SimpleRobot {//首先需要定義兩個速度一個是移動的速度,和轉(zhuǎn)動的速度private static final double TURN_VELOCITY = Math.toRadians(3);private static final double GO_VELOCITY = 5;//根據(jù)這兩個變量可以計算出來弧半徑private static final double R = GO_VELOCITY/TURN_VELOCITY;/*** 每個單位時間都會觸發(fā)*/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);}/** * 當(dāng)開始一輪新的比賽時觸發(fā)*/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();}}/*** 當(dāng)一輪比賽結(jié)束時觸發(fā)*/public void onRoundFinish(RoundFinishAction action){}/** * 當(dāng)開始一場新的比賽時觸發(fā)*/public void onMatchBegin(MatchBeginAction action){}/*** 當(dāng)整場比賽結(jié)束時觸發(fā)*/public void onMatchFinish(MatchFinishAction action){}/*** 當(dāng)有隊友向自己發(fā)送消息時觸發(fā)*/public void onMessageReceived(MessageReceivedAction action){}/*** 當(dāng)撞到其它機器人時觸發(fā)*/public void onHitRobot(HitRobotAction action){}/*** 當(dāng)撞到墻時觸發(fā)*/public void onHitWall(HitWallAction action){}/*** 當(dāng)任意一個機器人開火時觸發(fā)*/public void onFire(FireAction action){}/*** 當(dāng)有機器人死亡時觸發(fā)*/public void onRobotDeath(RobotDeathAction action){}/*** 當(dāng)自己的子彈擊中敵人時觸發(fā)*/public void onBulletHit(BulletHitAction action){}/*** 當(dāng)被別人的子彈擊中時觸發(fā)*/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.*;/*** 這個類對應(yīng)一個機器人,根據(jù)需要實現(xiàn)相應(yīng)的Action處理函數(shù),* 就可以訂制自己的機器人。*/ public class Firgure extends SimpleRobot {//首先需要定義兩個速度一個是移動的速度,和轉(zhuǎn)動的速度private static final double TURN_VELOCITY = Math.toRadians(3);private static final double GO_VELOCITY = 5;//根據(jù)這兩個變量可以計算出來弧半徑private static final double R = GO_VELOCITY/TURN_VELOCITY;/*** 每個單位時間都會觸發(fā)*/public void onTick(TickAction action){}/** * 當(dāng)開始一輪新的比賽時觸發(fā)*/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();}}/*** 當(dāng)一輪比賽結(jié)束時觸發(fā)*/public void onRoundFinish(RoundFinishAction action){}/** * 當(dāng)開始一場新的比賽時觸發(fā)*/public void onMatchBegin(MatchBeginAction action){}/*** 當(dāng)整場比賽結(jié)束時觸發(fā)*/public void onMatchFinish(MatchFinishAction action){}/*** 當(dāng)有隊友向自己發(fā)送消息時觸發(fā)*/public void onMessageReceived(MessageReceivedAction action){}/*** 當(dāng)撞到其它機器人時觸發(fā)*/public void onHitRobot(HitRobotAction action){}/*** 當(dāng)撞到墻時觸發(fā)*/public void onHitWall(HitWallAction action){}/*** 當(dāng)任意一個機器人開火時觸發(fā)*/public void onFire(FireAction action){}/*** 當(dāng)有機器人死亡時觸發(fā)*/public void onRobotDeath(RobotDeathAction action){}/*** 當(dāng)自己的子彈擊中敵人時觸發(fā)*/public void onBulletHit(BulletHitAction action){}/*** 當(dāng)被別人的子彈擊中時觸發(fā)*/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.*;/*** 這個類對應(yīng)一個機器人,根據(jù)需要實現(xiàn)相應(yīng)的Action處理函數(shù),* 就可以訂制自己的機器人。*/ public class Firgure extends SimpleRobot {//首先需要定義兩個速度一個是移動的速度,和轉(zhuǎn)動的速度private static final double TURN_VELOCITY = Math.toRadians(3);private static final double GO_VELOCITY = 5;//根據(jù)這兩個變量可以計算出來弧半徑private static final double R = GO_VELOCITY/TURN_VELOCITY;/*** 每個單位時間都會觸發(fā)*/public void onTick(TickAction action){}/** * 當(dāng)開始一輪新的比賽時觸發(fā)*/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();}}/*** 當(dāng)一輪比賽結(jié)束時觸發(fā)*/public void onRoundFinish(RoundFinishAction action){}/** * 當(dāng)開始一場新的比賽時觸發(fā)*/public void onMatchBegin(MatchBeginAction action){}/*** 當(dāng)整場比賽結(jié)束時觸發(fā)*/public void onMatchFinish(MatchFinishAction action){}/*** 當(dāng)有隊友向自己發(fā)送消息時觸發(fā)*/public void onMessageReceived(MessageReceivedAction action){}/*** 當(dāng)撞到其它機器人時觸發(fā)*/public void onHitRobot(HitRobotAction action){}/*** 當(dāng)撞到墻時觸發(fā)*/public void onHitWall(HitWallAction action){}/*** 當(dāng)任意一個機器人開火時觸發(fā)*/public void onFire(FireAction action){}/*** 當(dāng)有機器人死亡時觸發(fā)*/public void onRobotDeath(RobotDeathAction action){}/*** 當(dāng)自己的子彈擊中敵人時觸發(fā)*/public void onBulletHit(BulletHitAction action){}/*** 當(dāng)被別人的子彈擊中時觸發(fā)*/public void onHitedByBullet(HitedByBulletAction action){}/*** 機器人程序入口* @param args*/public static void main(String[] args){startup(args, new Firgure());} }這個代碼是走一個圓走一條直線,一直重復(fù)下去
?
轉(zhuǎn)載于:https://www.cnblogs.com/airycode/p/4828565.html
總結(jié)
- 上一篇: (算法)Trapping Rain Wa
- 下一篇: HDU 2842 Chinese Rin