I have to make a 1v1 robot

Jump to navigation Jump to search
Revision as of 21 May 2014 at 19:11.
The highlighted comment was edited in this revision. [diff]

I have to make a 1v1 robot

Hello everyone,

I have to make a good 1v1 robot with robotclass .robot

The problem is: I can't even get better then the sample robot 'Walls'. Is there anyone who can help me to build a better, but not to difficult 1v1 robot?

I'd like to make a robot just like walls, but with a better radar. Which radar should I use? Also, almost every single shot i fire misses the opponent... How am I able to improbe that?

Gertjan

    Gertjan1996 (talk)19:35, 21 May 2014

    Its for school by the way

      Gertjan1996 (talk)19:36, 21 May 2014

      http://robowiki.net/wiki/One_on_One_Radar

      /*******************************************************************************
       * Copyright (c) 2001-2014 Mathew A. Nelson and Robocode contributors
       * All rights reserved. This program and the accompanying materials
       * are made available under the terms of the Eclipse Public License v1.0
       * which accompanies this distribution, and is available at
       * http://robocode.sourceforge.net/license/epl-v10.html
       *******************************************************************************/
      package sample;
      
      
      import robocode.HitRobotEvent;
      import robocode.Robot;
      import robocode.ScannedRobotEvent;
      
      import java.awt.*;
      
      
      /**
       * Walls - a sample robot by Mathew Nelson, and maintained by Flemming N. Larsen
       * <p/>
       * Moves around the outer edge with the gun facing in.
       *
       * @author Mathew A. Nelson (original)
       * @author Flemming N. Larsen (contributor)
       */
      public class Walls extends Robot {
      
      	boolean peek; // Don't turn if there's a robot there
      	double moveAmount; // How much to move
      
      	/**
      	 * run: Move around the walls
      	 */
      	public void run() {
      		// Set colors
      		setBodyColor(Color.black);
      		setGunColor(Color.black);
      		setRadarColor(Color.orange);
      		setBulletColor(Color.cyan);
      		setScanColor(Color.cyan);
      
      		// Initialize moveAmount to the maximum possible for this battlefield.
      		moveAmount = Math.max(getBattleFieldWidth(), getBattleFieldHeight());
      		// Initialize peek to false
      		peek = false;
      
      		// turnLeft to face a wall.
      		// getHeading() % 90 means the remainder of
      		// getHeading() divided by 90.
      		turnLeft(getHeading() % 90);
      		ahead(moveAmount);
      		// Turn the gun to turn right 90 degrees.
      		peek = true;
      		turnGunRight(90);
      		turnRight(90);
      
      		while (true) {
      			// Look before we turn when ahead() completes.
      			peek = true;
      			// Move up the wall
      			ahead(moveAmount);
      			// Don't look now
      			peek = false;
      			// Turn to the next wall
      			turnRight(90);
      		}
      	}
      
      	/**
      	 * onHitRobot:  Move away a bit.
      	 */
      	public void onHitRobot(HitRobotEvent e) {
      		// If he's in front of us, set back up a bit.
      		if (e.getBearing() > -90 && e.getBearing() < 90) {
      			back(100);
      		} // else he's in back of us, so set ahead a bit.
      		else {
      			ahead(100);
      		}
      	}
      
      	/**
      	 * onScannedRobot:  Fire!
      	 */
      	public void onScannedRobot(ScannedRobotEvent e) {
      		fire(2);
      		// Note that scan is called automatically when the robot is moving.
      		// By calling it manually here, we make sure we generate another scan event if there's a robot on the next
      		// wall, so that we do not start moving up it until it's gone.
      		if (peek) {
      			scan();
      		}
      	}
      }
      /*******************************************************************************
       * Copyright (c) 2001-2014 Mathew A. Nelson and Robocode contributors
       * All rights reserved. This program and the accompanying materials
       * are made available under the terms of the Eclipse Public License v1.0
       * which accompanies this distribution, and is available at
       * http://robocode.sourceforge.net/license/epl-v10.html
       *******************************************************************************/
      package sample;
      
      
      import robocode.HitRobotEvent;
      import robocode.Robot;
      import robocode.ScannedRobotEvent;
      
      import java.awt.*;
      
      
      /**
       * Walls - a sample robot by Mathew Nelson, and maintained by Flemming N. Larsen
       * <p/>
       * Moves around the outer edge with the gun facing in.
       *
       * @author Mathew A. Nelson (original)
       * @author Flemming N. Larsen (contributor)
       */
      public class Walls extends Robot {
      
      	boolean peek; // Don't turn if there's a robot there
      	double moveAmount; // How much to move
      
      	/**
      	 * run: Move around the walls
      	 */
      	public void run() {
      		// Set colors
      		setBodyColor(Color.black);
      		setGunColor(Color.black);
      		setRadarColor(Color.orange);
      		setBulletColor(Color.cyan);
      		setScanColor(Color.cyan);
      
      		// Initialize moveAmount to the maximum possible for this battlefield.
      		moveAmount = Math.max(getBattleFieldWidth(), getBattleFieldHeight());
      		// Initialize peek to false
      		peek = false;
      
      		// turnLeft to face a wall.
      		// getHeading() % 90 means the remainder of
      		// getHeading() divided by 90.
      		turnLeft(getHeading() % 90);
      		ahead(moveAmount);
      		// Turn the gun to turn right 90 degrees.
      		peek = true;
      		import robocode.util.Utils;
       
      public void run() {
          // ...
       
          turnRadarRightRadians(Double.POSITIVE_INFINITY);
          do {
              // Check for new targets.
              // Only necessary for Narrow Lock because sometimes our radar is already
              // pointed at the enemy and our onScannedRobot code doesn't end up telling
              // it to turn, so the system doesn't automatically call scan() for us
              // [see the javadocs for scan()].
              scan();
          } while (true);
      }
       
      public void onScannedRobot(ScannedRobotEvent e) {
          double radarTurn =
              // Absolute bearing to target
              getHeadingRadians() + e.getBearingRadians()
              // Subtract current radar heading to get turn required
              - getRadarHeadingRadians();
       
          setTurnRadarRightRadians(Utils.normalRelativeAngle(radarTurn));
       
          // ...
      }
      		turnRight(90);
      
      		while (true) {
      			// Look before we turn when ahead() completes.
      			peek = true;
      			// Move up the wall
      			ahead(moveAmount);
      			// Don't look now
      			peek = false;
      			// Turn to the next wall
      			turnRight(90);
      		}
      	}
      
      	/**
      	 * onHitRobot:  Move away a bit.
      	 */
      	public void onHitRobot(HitRobotEvent e) {
      		// If he's in front of us, set back up a bit.
      		if (e.getBearing() > -90 && e.getBearing() < 90) {
      			back(100);
      		} // else he's in back of us, so set ahead a bit.
      		else {
      			ahead(100);
      		}
      	}
      
      	/**
      	 * onScannedRobot:  Fire!
      	 */
      	public void onScannedRobot(ScannedRobotEvent e) {
      		fire(2);
      		// Note that scan is called automatically when the robot is moving.
      		// By calling it manually here, we make sure we generate another scan event if there's a robot on the next
      		// wall, so that we do not start moving up it until it's gone.
      		if (peek) {
      			scan();
      		}
      	}
      }
        Tmservo (talk)19:51, 21 May 2014