⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flockroasterbot.java

📁 用java写的运行在robocode的机器人代码
💻 JAVA
字号:
package dw;
import robocode.*;
import java.awt.Color;
/**********************************************
 * IBM developerWorks Sample Code
 * (c) 2002, All Right Reserved
 */

public class FlockRoasterBot extends AdvancedRobot implements DuckConstants
{

        double curShortest = veryFar;

        boolean targetLocked = false;
        Flock curFlock = new Flock();
        Duck curTarget = null;
        boolean flockGone = false;

	public void run() {


		setColors(Color.red,Color.green,Color.red);

                turnRadarRight(oneRev);

		while(true) {



                  if (curTarget != null) {
                        if (!(curTarget.isAlive()))  {
                           curTarget = curFlock.getNextRoaster(getX(),getY());
                           if (curTarget == null)
                             flockGone = true;
                           }
                        else {  // alive
                          if (!(curTarget.isLocked())) {
                             double tpBear = curTarget.bearingToDuck(getX(), getY());
                             //out.println("bearing to target is " + tpBear);
                             // turnLeft(getHeading());
                             turnRight(minimizeTurning(tpBear - getHeading()));
                             double tpDist = curTarget.distanceToDuck(getX(), getY());
                             if (tpDist > safeDistance)
                               ahead(tpDist - safeDistance);

                              curTarget.setLocked(true);
                              }
                          else  //curTarget.isLocked()
                             fire(3);
                          }  // is Locked
                      } // alive
                    else  // curTarget != null
                     {
                        if (!flockGone)
                           curTarget = curFlock.getNextRoaster(getX(),getY());
                        else {  //  flourish
                           setTurnRight(fullTurn);
                           setTurnGunLeft(halfTurn);
                           setTurnRadarRight(fullTurn);
                           waitFor(new TurnCompleteCondition(this));
                           setTurnLeft(fullTurn);
                           setTurnGunRight(halfTurn);
                           setTurnRadarLeft(fullTurn);
                           waitFor(new TurnCompleteCondition(this));



                        }

                      }


		} //while
	}
      private double minimizeTurning(double in) {
        if (in > halfTurn) {
         return  -1 * (fullTurn - in);
        }
        else
          return in;

      }
       public void onScannedRobot(ScannedRobotEvent evt) {
        Duck nuDuck = new Duck(evt, getTime(), getX(), getY(), getHeading(),
        getVelocity(), true, false);

        if (!curFlock.contains(nuDuck))  {
           curFlock.add(nuDuck);
        //   out.println("added a duck... " + evt.getName());
            }
       }

       public void onRobotDeath(RobotDeathEvent evt) {
         if (evt.getName().equals(curTarget.getName()))
            curTarget.setAlive(false);
       }





}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -