Difference between revisions of "NightBird"

From Robowiki
Jump to navigation Jump to search
(Created page with "{{Infobox Robot | name = NightBird")
 
m
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{Infobox Robot
 
{{Infobox Robot
| name = NightBird
+
| name           = NightBird
 +
| extends        = [[AdvancedRobot]]
 +
| author          = [[User:BeastBots101|BeastBots]]
 +
| movement        = [[Random Movement]]
 +
| targeting      = [[Linear Targeting]]
 +
| current_version = 1.2
 +
| license        = none
 +
| isOneOnOne      = true
 +
| isMelee        = false
 +
}}
 +
== Background Information ==
 +
 
 +
; Bot Name
 +
: NightBird
 +
 
 +
; Extends
 +
: ''[[AdvancedRobot]]''
 +
 
 +
; What's special about it?
 +
: Nothing really. My first NanoBot.
 +
: Check out my [[NiBhtbird/NightBirdM|Nightbird M series]] for my (failed) [[Multi-Mode|Multimode]] version.
 +
 
 +
; How competitive is it?
 +
: Not so much. Not entered in roborumble due to the 2013 robocode repository crash.
 +
: My guess is it would be around the position of [[N]], in the 800s od roborumble.
 +
 
 +
; [[CodeSize]]
 +
: NightBird 1.2 is 169 bytes without colors, I think it's one of the smallest bots around. It got as high as 67% on v.1.0, which has 239 bytes. see the version history for more.
 +
 
 +
== 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?
 +
: Usually, robot moves little enough to dodge a 2.0-3.0 powered linear or circular bullet. If I get lucky, it might be able to dodge linear bullets with power lower than 1.0. It's okay against [[HOT]] 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. It's below, I don't really care about what you do, as long as you don't make a total copy and change the colors or name. NightBird is a very simple beginner bot, and easy to understand.
 +
 
 +
; What's next for your robot?
 +
: Better targeting. maybe a PM gun from [[WeekendObsession]]?.
 +
 
 +
; Does it have any [[White Whale]]s?
 +
: [[Acero]]: Movement I can't beat(I know. ahf must be laughing at me right now!).
 +
: N̶:̶ ̶g̶o̶o̶d̶ ̶m̶o̶v̶e̶m̶e̶n̶t̶,̶ ̶g̶r̶e̶a̶t̶ ̶g̶u̶n̶  Not anymore! Average 54%, good enough for me.
 +
 
 +
; 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 BeastBots
 +
*
 +
* 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) {
 +
                //turn the radar
 +
turnRadarRightRadians(Double.POSITIVE_INFINITY);
 +
}
 +
}
 +
 
 +
public void onScannedRobot(ScannedRobotEvent e) {
 +
 
 +
//infinity lock
 +
setTurnRadarLeftRadians(getRadarTurnRemainingRadians());
 +
 
 +
                //move
 +
setAhead(10*direction);
 +
                //turn
 +
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>
 +
 
 +
== Version History ==
 +
; v.1.0:
 +
: To start, I used stop and go with random velocity and a HOT gun. Black, grey, and blue colors. [[Codesize]] 239 including colors.
 +
; v.1.1:
 +
: Linear gun, no colors due to high code size(no colors 234).
 +
; v.1.2:
 +
: Complete rewrite due to messy coding and various bugs. Now has random movement, energy management, and generally gets 45-67% on v.1.0. [[Codesize]] with no colors is 169 bytes.
 +
 
 +
 
 +
[[Category:NanoBots]]
 +
[[Category:Bots]]

Latest revision as of 01:26, 23 November 2013

NightBird
Author(s) BeastBots
Extends AdvancedRobot
Targeting Linear Targeting
Movement Random Movement
Current Version 1.2
Code License none

Background Information

Bot Name
NightBird
Extends
AdvancedRobot
What's special about it?
Nothing really. My first NanoBot.
Check out my Nightbird M series for my (failed) Multimode version.
How competitive is it?
Not so much. Not entered in roborumble due to the 2013 robocode repository crash.
My guess is it would be around the position of N, in the 800s od roborumble.
CodeSize
NightBird 1.2 is 169 bytes without colors, I think it's one of the smallest bots around. It got as high as 67% on v.1.0, which has 239 bytes. see the version history for more.

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?
Usually, robot moves little enough to dodge a 2.0-3.0 powered linear or circular bullet. If I get lucky, it might be able to dodge linear bullets with power lower than 1.0. It's okay against HOT 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. It's below, I don't really care about what you do, as long as you don't make a total copy and change the colors or name. NightBird is a very simple beginner bot, and easy to understand.
What's next for your robot?
Better targeting. maybe a PM gun from WeekendObsession?.
Does it have any White Whales?
Acero: Movement I can't beat(I know. ahf must be laughing at me right now!).
N̶:̶ ̶g̶o̶o̶d̶ ̶m̶o̶v̶e̶m̶e̶n̶t̶,̶ ̶g̶r̶e̶a̶t̶ ̶g̶u̶n̶ Not anymore! Average 54%, good enough for me.
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 BeastBots
 * 
 * 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) {
                //turn the radar
		turnRadarRightRadians(Double.POSITIVE_INFINITY);
		}
	}

	public void onScannedRobot(ScannedRobotEvent e) {

		//infinity lock
		setTurnRadarLeftRadians(getRadarTurnRemainingRadians());

                //move
		setAhead(10*direction);
                //turn
		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;
		}
}

Version History

v.1.0
To start, I used stop and go with random velocity and a HOT gun. Black, grey, and blue colors. Codesize 239 including colors.
v.1.1
Linear gun, no colors due to high code size(no colors 234).
v.1.2
Complete rewrite due to messy coding and various bugs. Now has random movement, energy management, and generally gets 45-67% on v.1.0. Codesize with no colors is 169 bytes.