little help

Jump to navigation Jump to search
Revision as of 19 June 2012 at 19:49.
The highlighted comment was created in this revision.

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