little help

Jump to navigation Jump to search

little help

Hi mate. You can change the color with:

  public void run() {
      // all the same color
       setAllColors(Color.RED);

      // or different for body , gun , radar
      setRadarColor(Color.GREEN);
      setGunColor(Color.BLUE);
      setBodyColor(Color.BLACK);
       ...
   }

You can make a bookmark to the robocode api Robocode API and there you find all the functions you can use. It looks a bit complicated if you are not familiar whit this kind of documentation but with a little help you get used to it very quickly.

For example if you look for the color. Hit the "AdvancedRobot" in the left frame "All Classes" and search just for "Color" in the right frame. Every function has a short description so just poke around a little.

And don't be shy just ask whatever you wan't to know.

take care

Wompi12:17, 9 June 2012

The API is your best friend. I also suggest you bookmark the Java API. The API documentation is a very useful set of documents.

For your purposes, java.lang.Math which has math methods, java.awt.geom which has geometry, and java.util which holds most generic data structures (maps, lists, sets, etc) are the packages you will likely use the most.


Within the robocode API, AdvancedRobot is a big bit of useful reference.

Chase-san17:44, 9 June 2012
 

Whenever I try to change the colour it comes up with this error message

Compiling... BOSSSSS.java:15: cannot find symbol symbol : variable Colour location: class b.BOSSSSS

      setallcolours(Colour.RED);
                    ^

1 error Compile Failed (1)

Im a complete newby so I don't know what to do. Anyone Help?

Rigged17:35, 13 June 2012
 

Two things:

  • The caps and (non-British) spelling matter: setAllColors(Color.RED);
  • You might need to import the Color class at the top of your file: import java.awt.Color;
Voidious17:42, 13 June 2012
 

Thanks it's working now :). I want the tank to fire more than 1 bullet a turn. Is it possible?

Rigged19:46, 13 June 2012
 

Nope, you can only fire one bullet at a time, and you have to wait 11-16 ticks before firing another one, depending on the bullet power you use. A lot information about the basic rules / physics of Robocode can be found at Robocode/FAQ.

Voidious20:48, 13 June 2012
 

Is is possible to fire a bullet per turn?

Rigged20:57, 13 June 2012
 

You can adjust the gun cooling rate if you want to do it just for fun, but under the normal rules everyone else (and the RoboRumble) uses, no you can't. I think the gun cooling rate can be adjusted in settings, but it might be something directly in robocode.properties, I'm not sure...

Voidious20:59, 13 June 2012
 
Edited by another user.
Last edit: 18:00, 18 June 2012

hi i've tried radial targeting but I kepp getting a error message. Could you guys just check my code.

package argeaer;
import robocode.*;
//import java.awt.Color;

/**
 * Arg - a robot by (your name here)
 */
public class Arg extends Robot
{
	/**
	 * run: Arg's default behavior
	 */
	public void run() {
		// After trying out your robot, try uncommenting the import at the top,
		// and the next line:
		//setColors(Color.red,Color.blue,Color.green);
		while(true) {
			// Replace the next 4 lines with any behavior you would like
			ahead(100);
			turnGunRight(360);
			back(100);
			turnGunRight(360);
		}
	}

	/**
	 * onScannedRobot: What to do when you see another robot
	 */
/**This function predicts the time of the intersection between the 
bullet and the target based on a simple iteration.  It then moves 
the gun to the correct angle to fire on the target.**/
void doGun() {
    long time;
    long nextTime;
    Point2D.Double p;
    p = new Point2D.Double(target.x, target.y);
    for (int i = 0; i < 10; i++){
        nextTime = 
    (intMath.round((getRange(getX(),getY(),p.x,p.y)/(20-(3*firePower))));
        time = getTime() + nextTime;
        p = target.guessPosition(time);
    }
    /**Turn the gun to the correct angle**/
    double gunOffset = getGunHeadingRadians() - 
                  (Math.PI/2 - Math.atan2(p.y - getY(), p.x - getX()));
    setTurnGunLeftRadians(normaliseBearing(gunOffset));
}

double normaliseBearing(double ang) {
    if (ang > Math.PI)
        ang -= 2*PI;
    if (ang < -Math.PI)
        ang += 2*Math.PI;
    return ang;
}

public double getrange(double x1,double y1, double x2,double y2) {
    double x = x2-x1;
    double y = y2-y1;
    double h = Math.sqrt( x*x + y*y );
    return h;	
}


	/**
	 * onHitByBullet: What to do when you're hit by a bullet
	 */
	public void onHitByBullet(HitByBulletEvent e) {
		turnLeft(90 - e.getBearing());
	}
	
}
Rigged17:49, 18 June 2012

Please, format yours code and in future use tag <syntaxhighlight>. What kind of error message you get?

Jdev18:01, 18 June 2012
 

Can you post the error message? Looks like you missed the onScannedRobot(ScannedRobotEvent e) Method.

Wompi18:03, 18 June 2012
 

<syntaxhighlight>Compiling... Arg.java:32: package Point2D does not exist public Point2D.Double guessPosition(long when) {

             ^

Arg.java:36: cannot find symbol symbol : variable time location: class argeaer.Arg

   double diff = when - time;
                        ^

Arg.java:40: cannot find symbol symbol : variable changehead location: class argeaer.Arg

   if (Math.abs(changehead) > 0.00001) {
                ^

Arg.java:41: cannot find symbol symbol : variable speed location: class argeaer.Arg

       double radius = speed/changehead;
                       ^

Arg.java:41: cannot find symbol symbol : variable changehead location: class argeaer.Arg

       double radius = speed/changehead;
                             ^

Arg.java:42: cannot find symbol symbol : variable changehead location: class argeaer.Arg

       double tothead = diff * changehead;
                               ^

Arg.java:43: cannot find symbol symbol : variable y location: class argeaer.Arg

       newY = y + (Math.sin(heading + tothead) * radius) - 
              ^

Arg.java:43: cannot find symbol symbol : variable heading location: class argeaer.Arg

       newY = y + (Math.sin(heading + tothead) * radius) - 
                            ^

Arg.java:43: sin(double) in java.lang.Math cannot be applied to (<nulltype>)

       newY = y + (Math.sin(heading + tothead) * radius) - 
                       ^

Arg.java:44: cannot find symbol symbol : variable heading location: class argeaer.Arg

                     (Math.sin(heading) * radius);
                               ^

Arg.java:43: operator - cannot be applied to <nulltype>,double

       newY = y + (Math.sin(heading + tothead) * radius) - 
                                                         ^

Arg.java:45: cannot find symbol symbol : variable x location: class argeaer.Arg

       newX = x + (Math.cos(heading) * radius) - 
              ^

Arg.java:45: cannot find symbol symbol : variable heading location: class argeaer.Arg

       newX = x + (Math.cos(heading) * radius) - 
                            ^

Arg.java:46: cannot find symbol symbol : variable heading location: class argeaer.Arg

                     (Math.cos(heading + tothead) * radius);
                               ^

Arg.java:46: cos(double) in java.lang.Math cannot be applied to (<nulltype>)

                     (Math.cos(heading + tothead) * radius);
                          ^

Arg.java:45: operator - cannot be applied to <nulltype>,double

       newX = x + (Math.cos(heading) * radius) - 
                                               ^

Arg.java:51: cannot find symbol symbol : variable y location: class argeaer.Arg

       newY = y + Math.cos(heading) * speed * diff;
              ^

Arg.java:51: cannot find symbol symbol : variable heading location: class argeaer.Arg

       newY = y + Math.cos(heading) * speed * diff;
                           ^

Arg.java:51: cannot find symbol symbol : variable speed location: class argeaer.Arg

       newY = y + Math.cos(heading) * speed * diff;
                                      ^

Arg.java:51: incompatible types found : <nulltype> required: double

       newY = y + Math.cos(heading) * speed * diff;
                                            ^

Arg.java:52: cannot find symbol symbol : variable x location: class argeaer.Arg

       newX = x + Math.sin(heading) * speed * diff;
              ^

Arg.java:52: cannot find symbol symbol : variable heading location: class argeaer.Arg

       newX = x + Math.sin(heading) * speed * diff;
                           ^

Arg.java:52: cannot find symbol symbol : variable speed location: class argeaer.Arg

       newX = x + Math.sin(heading) * speed * diff;
                                      ^

Arg.java:52: incompatible types found : <nulltype> required: double

       newX = x + Math.sin(heading) * speed * diff;
                                            ^

Arg.java:54: package Point2D does not exist

   return new Point2D.Double(newX, newY);
                     ^

25 errors Compile Failed (1)

Rigged17:56, 19 June 2012

This errors does not match to code. But i may guess, that you need to read about java "package" and "import" keywords and in common some basic book about java

Jdev18:46, 19 June 2012
 

Java Tutorial is a good place to learn Java.

And after getting used to the language, I recommend using some advanced IDE like Eclipse. All the errors above would be automatically corrected by pressing Ctrl-Shift-O.

MN20:49, 19 June 2012