Difference between revisions of "NightBird"

From Robowiki
Jump to navigation Jump to search
Line 19: Line 19:
  
 
; What's special about it?
 
; What's special about it?
: Not very much.
+
: Nothing really. My first NanoBot.
  
; Great, I want to try it. Where can I download it?'''
+
; How competitive is it?
: http://www.robocoderepository.com/BotFiles/4248/sheldor.micro.EpeeistMicro_1.8.3.jar
+
: Not so much. Not entered in roborumble due to the 2013 robocode repository crash.
  
; How competitive is it?
+
; [[CodeSize]]
: Second in every category but Survival, as of 05/02/2013.
+
: NightBird 1.2 is 169 bytes without colors, I think it's one of the smallest bots around.
  
 
== Strategy ==
 
== Strategy ==
 
; How does it move?
 
; How does it move?
: It starts with [[Stop And Go]] movement from [[Toorkild]], if it gets hit more than it would like to, it switches to [[Random Movement]] also from [[Toorkild]].
+
: It uses this homemade thingy... random movement that I made up.
  
 
; How does it fire?
 
; How does it fire?
: [[GuessFactor Targeting (traditional)|Guess Factor Targeting]], [[Segmentation|segmented]] on acceleration, time since velocity change (from [[Komarious]]), [[Lateral Velocity]], near-wall, and distance.
+
: Simple [[linear targeting]] from the wiki page.
  
 
; How does it dodge bullets?
 
; How does it dodge bullets?
: Only the [[Stop And Go]] mode involves reacting to enemy fire.
+
: I guess random movement can dodge some bullets...
 
 
; Is this robot melee-capable?
 
: Capable is a very broad word.  Yes, ÉpéeistMicro is "capable" of fighting in [[Melee]] battles just like any other bot.  It is not, however, capable in the sense of not being the first to die, so I didn't enter it in the meleerumble.
 
 
 
; What does it save between rounds and matches?
 
: Between rounds, the array of enemy guess factors and other variables. It doesn't (intentionally) save anything between matches.
 
  
 
== Additional Information ==
 
== Additional Information ==
  
 
; Where did you get the name?  
 
; Where did you get the name?  
: Épée is one of the three forms of modern sport fencing, along with Foil and Sabre. [http://en.wikipedia.org/wiki/Épée]
+
: I thought about NightHawk, but that was taken. So I did NightBird.
  
 
; May I use your code?
 
; May I use your code?
: Yes, but under the terms of the [[RWPCL]].
+
: Yes. It''s below, I don't really care about what you do, as long as you don't make a total copy.
  
 
; What's next for your robot?
 
; What's next for your robot?
: Take the APS throne.
+
: Better targeting.
  
 
; Does it have any [[White Whale]]s?
 
; Does it have any [[White Whale]]s?
 
: [[Acero]] and [[N]] are pretty annoying.
 
: [[Acero]] and [[N]] are pretty annoying.
  
 +
; What other bots is it based on?
 +
: NightBird does not have code from any other bots(maybe accidentally, but I don't know).
 +
 +
==Source Code==
 +
 +
<syntaxhighlight>
 +
package EH.nano;
 +
import robocode.*;
 +
import robocode.util.*;
 +
/**
 +
* NightBird - a robot by (Edward He)
 +
*
 +
* V.1.0:
 +
* -My first NanoBot!
 +
* -random movement/stop and go
 +
* -head on targeting
 +
* -locking radar
 +
* -Codesize 239
 +
*
 +
* V.1.1:
 +
* -linear gun
 +
* -wierd movement
 +
* -same radar
 +
* -not good...
 +
*
 +
* V.1.2:
 +
* -complete rewrite due to messy code and errors
 +
* -random movement
 +
* -infinity lock
 +
* -linear targeting
 +
* -codesize 169
 +
*
 +
*/
 +
public class NightBird extends AdvancedRobot{
 +
 +
int direction=1;
 +
 +
public void run() {
 +
 +
//gun/radar settings
 +
setAdjustGunForRobotTurn(true);
 +
setAdjustRadarForGunTurn(true);
 +
 +
while(true) {
 +
turnRadarRightRadians(Double.POSITIVE_INFINITY);
 +
}
 +
}
 +
public void onScannedRobot(ScannedRobotEvent e) {
 +
//infinity lock
 +
setTurnRadarLeftRadians(getRadarTurnRemainingRadians());
 +
setAhead(10*direction);
 +
setTurnLeft(90-e.getBearing());
 +
if (Math.random()<0.035) {
 +
direction=-direction;
 +
}
 +
                //robowiki Linear targeting
 +
double bulletPower = getEnergy()/18;
 +
    double headOnBearing =
 +
  getHeadingRadians() + e.getBearingRadians();
 +
    double linearBearing =
 +
  headOnBearing + Math.asin(e.getVelocity() / Rules.getBulletSpeed(bulletPower)
 +
* Math.sin(e.getHeadingRadians() - headOnBearing));
 +
setTurnGunRightRadians(Utils.normalRelativeAngle(linearBearing - getGunHeadingRadians()));
 +
if (getEnergy()<1.0) {
 +
return;
 +
}
 +
            setFire(bulletPower);
 +
}
 +
public void onHitWall(){
 +
direction=-direction;
 +
}
 +
}
 +
 +
</syntaxhighlight>
  
 
[[Category:NanoBots]]
 
[[Category:NanoBots]]
 
[[Category:Bots]]
 
[[Category:Bots]]

Revision as of 03:28, 31 August 2013

NightBird
Author(s) User:BeastBots
Extends AdvancedRobot
Targeting Linear Targeting
Movement Random Movement
Current Version 1.2
Code License Use and abuse!

Background Information

Bot Name
NightBird
Extends
AdvancedRobot
What's special about it?
Nothing really. My first NanoBot.
How competitive is it?
Not so much. Not entered in roborumble due to the 2013 robocode repository crash.
CodeSize
NightBird 1.2 is 169 bytes without colors, I think it's one of the smallest bots around.

Strategy

How does it move?
It uses this homemade thingy... random movement that I made up.
How does it fire?
Simple linear targeting from the wiki page.
How does it dodge bullets?
I guess random movement can dodge some bullets...

Additional Information

Where did you get the name?
I thought about NightHawk, but that was taken. So I did NightBird.
May I use your code?
Yes. Its below, I don't really care about what you do, as long as you don't make a total copy.
What's next for your robot?
Better targeting.
Does it have any White Whales?
Acero and N are pretty annoying.
What other bots is it based on?
NightBird does not have code from any other bots(maybe accidentally, but I don't know).

Source Code

package EH.nano;
import robocode.*;
import robocode.util.*;
/**
 * NightBird - a robot by (Edward He)
 * 
 * V.1.0:
 * -My first NanoBot!
 * -random movement/stop and go
 * -head on targeting
 * -locking radar
 * -Codesize 239
 * 
 * V.1.1:
 * -linear gun
 * -wierd movement
 * -same radar
 * -not good...
 * 
 * V.1.2:
 * -complete rewrite due to messy code and errors
 * -random movement
 * -infinity lock
 * -linear targeting
 * -codesize 169
 * 
 */
public class NightBird extends AdvancedRobot{

int direction=1;

	public void run() {
		
		//gun/radar settings
		setAdjustGunForRobotTurn(true);
		setAdjustRadarForGunTurn(true);
		
		while(true) {
		turnRadarRightRadians(Double.POSITIVE_INFINITY);
		}
	}
	public void onScannedRobot(ScannedRobotEvent e) {
		//infinity lock
		setTurnRadarLeftRadians(getRadarTurnRemainingRadians());
		setAhead(10*direction);
		setTurnLeft(90-e.getBearing());
		if (Math.random()<0.035) {
			direction=-direction;
		}
                //robowiki Linear targeting
		double bulletPower = getEnergy()/18;
    	double headOnBearing =
			   getHeadingRadians() + e.getBearingRadians();
    	double linearBearing =
 			   headOnBearing + Math.asin(e.getVelocity() / Rules.getBulletSpeed(bulletPower)
 * Math.sin(e.getHeadingRadians() - headOnBearing));
	setTurnGunRightRadians(Utils.normalRelativeAngle(linearBearing - getGunHeadingRadians()));
		if (getEnergy()<1.0) {
			return;
		}
    	        setFire(bulletPower);
		}
		public void onHitWall(){
			direction=-direction;
		}
}