|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: ネスト | フィールド | コンストラクター | メソッド | 詳細: フィールド | コンストラクター | メソッド |
java.lang.Object | +--robocode._Robot | +--robocode.Robot
独自のロボットを作成するために拡張できる、 基礎となるロボット・クラスです。
以下の標準が使用されることに注意してください。
向き、進行方向 (heading) - 360 度形式の絶対角度で、
0 度は画面の上方向を示し、
時計回りに角度が増加します (0 <= heading < 360)。
方位角 (bearing) - 自分のロボットの向きを基準とする、
対象物の相対角度。
角度は時計回りに増加します (-180 < bearing <= 180)。
すべての座標は (x,y) 形式で表されます。
すべての座標は正の数値です。
原点 (0,0) は、画面の左下隅です。
x は右方向に増加します。
y は上方に増加します。
フィールドの概要 | |
PrintStream |
out
ロボットが出力に使用する出力ストリーム。 |
コンストラクターの要約 | |
Robot()
|
メソッドの要約 | |
void |
ahead(double distance)
ロボットを前方に移動させます。 |
void |
back(double distance)
ロボットを後方に移動させます。 |
void |
doNothing()
このロボットの今回の順番では、何も動作を行いません。 |
void |
finalize()
システムによって呼び出され、ロボットのクリーンアップ (終結処理) を行います。 |
void |
fire(double power)
弾丸を発射します。 |
Bullet |
fireBullet(double power)
弾丸を発射します。 |
double |
getBattleFieldHeight()
現在のバトルフィールドの高さを取得します。 |
double |
getBattleFieldWidth()
現在のバトルフィールドの幅を取得します。 |
double |
getEnergy()
ロボットの現在のエネルギーを戻します。 |
double |
getGunCoolingRate()
大砲の冷却速度を戻します。 |
double |
getGunHeading()
大砲の向きを 360 度形式で戻します。 |
double |
getGunHeat()
大砲の現在の熱さを戻します。 |
double |
getHeading()
ロボットの現在の向きを 360 度形式で戻します。 |
double |
getHeight()
ロボットの高さを戻します。 |
String |
getName()
ロボットの名前を戻します。 |
int |
getNumRounds()
現在のバトルのラウンド数を戻します。 |
int |
getOthers()
敵ロボットの残り台数を戻します。 |
double |
getRadarHeading()
レーダーの向きを 360 度形式で戻します。 |
int |
getRoundNum()
現在のラウンドが、 バトルの第何ラウンドかを戻します (1〜getNumRounds() の範囲) |
long |
getTime()
現在のゲーム時刻を戻します。 注: 1 つのバトルは複数のラウンドからなり、 各ラウンドの始めに時刻が 0 にリセットされます。 |
double |
getVelocity()
このロボットの移動速度を戻します。 |
double |
getWidth()
ロボットの幅を戻します。 |
double |
getX()
ロボットの X 座標の位置を戻します。 |
double |
getY()
ロボットの Y 座標の位置を戻します。 |
void |
onBulletHit(BulletHitEvent event)
このロボットが発射したいずれかの弾丸が他のロボットに当たったとき、 このメソッドが呼び出されます。 |
void |
onBulletHitBullet(BulletHitBulletEvent event)
このロボットが発射したいずれかの弾丸が他の弾丸に当たったとき、 このメソッドが呼び出されます。 |
void |
onBulletMissed(BulletMissedEvent event)
このロボットが発射したいずれかの弾丸がはずれたとき (壁に当たったとき)、 このメソッドが呼び出されます。 |
void |
onDeath(DeathEvent event)
このメソッドは、ロボットが死んだときに呼び出されます。 このイベントが通知されるようにするには、 ロボットのコードでこのメソッドをオーバーライドする必要があります。 |
void |
onHitByBullet(HitByBulletEvent event)
このロボットに弾丸が命中したとき、このメソッドが呼び出されます。 |
void |
onHitRobot(HitRobotEvent event)
このロボットが他のいずれかのロボットと衝突したとき、 このメソッドが呼び出されます。 |
void |
onHitWall(HitWallEvent event)
このロボットが壁に衝突したとき、このメソッドが呼び出されます。 |
void |
onRobotDeath(RobotDeathEvent event)
このメソッドは、 他のいずれかのロボットが死んだときに呼び出されます。 このイベントが通知されるようにするには、 ロボットのコードでこのメソッドをオーバーライドする必要があります。 |
void |
onScannedRobot(ScannedRobotEvent event)
このロボットが他のロボットを発見したとき、 このメソッドが呼び出されます。 |
void |
onWin(WinEvent event)
このロボットがバトルに勝ったとき、このメソッドが呼び出されます。 |
void |
resume()
stop() による停止中の動作があれば、その動作を再開します。 |
void |
run()
各ロボットのメイン・メソッド。 |
void |
scan()
他のロボットを探します。 |
void |
setAdjustGunForRobotTurn(boolean newAdjustGunForRobotTurn)
ロボットが回転するときに、 大砲が自動的に逆方向に回転するように設定します。 |
void |
setAdjustRadarForGunTurn(boolean newAdjustRadarForGunTurn)
大砲が回転するときに、 レーダーが自動的に逆方向に回転するように設定します。 |
void |
setAdjustRadarForRobotTurn(boolean newAdjustRadarForRobotTurn)
ロボットが回転するときに、 レーダーが自動的に逆方向に回転するように設定します。 |
void |
setColors(Color robotColor,
Color gunColor,
Color radarColor)
このメソッドは、ロボットの色を設定するために呼び出します。 |
void |
stop()
動作をすべて停止し、 後で resume() 呼び出しを使って再開できるよう、保存します。 |
void |
stop(boolean overwrite)
動作をすべて停止し、 後で resume() 呼び出しを使って再開できるよう、保存します。 |
void |
turnGunLeft(double degrees)
ロボットの大砲を回転させます。 |
void |
turnGunRight(double degrees)
ロボットの大砲を回転させます。 |
void |
turnLeft(double degrees)
ロボットを回転させます。 |
void |
turnRadarLeft(double degrees)
ロボットのレーダーを回転させます。 |
void |
turnRadarRight(double degrees)
ロボットのレーダーを回転させます。 |
void |
turnRight(double degrees)
ロボットを回転させます。 |
クラス java.lang.Object から継承されたメソッド |
equals、
getClass、
hashCode、
notify、
notifyAll、
toString、
wait、
wait、
wait |
フィールドの詳細 |
public PrintStream out
例 public void onHitRobot(HitRobotEvent e) { out.println("I hit a robot! My energy: " + getEnergy() + " his energy: " + e.getEnergy()); } System.out もこのストリームに出力します。
コンストラクターの詳細 |
public Robot()
メソッドの詳細 |
public void ahead(double distance)
例
ahead(50);
distance
- 前方への移動距離
onHitWall(robocode.HitWallEvent)
、
onHitRobot(robocode.HitRobotEvent)
public void back(double distance)
例
back(150);
distance
- 後方への移動距離
onHitWall(robocode.HitWallEvent)
、
onHitRobot(robocode.HitRobotEvent)
public double getBattleFieldHeight()
public double getBattleFieldWidth()
public double getHeading()
public double getHeight()
public String getName()
public double getWidth()
public double getX()
public double getY()
public void run()
例
// 正方形を描きながら移動し続ける基本的なロボット public void run() { while (true) { ahead(100); turnRight(90); }
Runnable
内の run
public void turnLeft(double degrees)
例
turnLeft(90);
public void turnRight(double degrees)
例
turnRight(90);
public void doNothing()
public final void finalize()
Object
内の finalize
public void fire(double power)
power
- 弾丸に与えられる (ロボットが失う) エネルギー。
fireBullet(double)
、
onBulletHit(robocode.BulletHitEvent)
、
onBulletHitBullet(robocode.BulletHitBulletEvent)
、
onBulletMissed(robocode.BulletMissedEvent)
public Bullet fireBullet(double power)
fire(double)
public double getGunCoolingRate()
getGunHeat()
public double getGunHeading()
public double getGunHeat()
public int getNumRounds()
public int getOthers()
public double getRadarHeading()
public int getRoundNum()
public long getTime()
public double getVelocity()
public void onBulletHit(BulletHitEvent event)
例
public void onBulletHit(BulletHitEvent event) { out.println("I hit " + event.getName() + "!"); }
event
- ゲームによって設定されるイベント
BulletHitEvent
、
Event
public void onBulletHitBullet(BulletHitBulletEvent event)
例
public void onBulletHitBullet(BulletHitBulletEvent event) { out.println("I hit a bullet fired by " + event.getBullet().getName() + "!"); }
event
- ゲームによって設定されるイベント
BulletHitBulletEvent
、
Event
public void onBulletMissed(BulletMissedEvent event)
例
public void onBulletHit(BulletMissedEvent event) { out.println("Drat, I missed."); }
event
- ゲームによって設定されるイベント
BulletMissedEvent
、
Event
public void onDeath(DeathEvent event)
event
- ゲームによって設定されるイベント
DeathEvent
、
Event
public void onHitByBullet(HitByBulletEvent event)
例
public void onHitByBullet(BulletHitEvent event) { out.println(event.getRobotName() + " hit me!"); }
event
- ゲームによって設定されるイベント
HitByBulletEvent
、
Event
public void onHitRobot(HitRobotEvent event)
例
public void onHitRobot(HitRobotEvent event) { if (event.getBearing() > -90 && event.getBearing() <= 90) back(100); else ahead(100); } -- or perhaps, for a more advanced robot -- public void onHitRobot(HitRobotEvent event) { if (event.getBearing() > -90 && event.getBearing() <= 90) setBack(100); else setAhead(100); }
角度は、このロボットの方向を基準とする相対角度です。 したがって 0 はロボットの正面を意味します。
このイベントは、 他のロボットがこのロボットに衝突した場合にも生成されます (その場合、 event.isMyFault() は偽を戻します)。 この場合は、 このロボットの動きがゲームによって自動的に停止させられることはありません。 ただし、相手ロボットの方向に移動を続けた場合、 衝突してしまいます (別のイベントが生成されます)。 相手から遠ざかっている場合には、衝突しません。
event
- ゲームによって設定されるイベント
HitRobotEvent
、
Event
public void onHitWall(HitWallEvent event)
例
public void onHitWall(HitWallEvent event) { out.println("Ouch, I hit a wall bearing " + event.getBearing() + " degrees."); }
event
- ゲームによって設定されるイベント
HitWallEvent
、
Event
public void onRobotDeath(RobotDeathEvent event)
event
- ゲームによって設定されるイベント
RobotDeathEvent
、
Event
public void onScannedRobot(ScannedRobotEvent event)
方位角は、このロボットの向きを基準とする相対角度です。
例
public void onScannedRobot(ScannedRobotEvent event) { // レーダーと大砲の向きが同じである場合... if (event.getDistance() < 100) fire(3); else fire(1); }注: ゲームは Robot による発射を以下のように支援します。
event
- ゲームによって設定されるイベント
ScannedRobotEvent
、
Event
public void onWin(WinEvent event)
event
- ゲームによって設定されるイベント
WinEvent
、
Event
public void resume()
stop()
public void scan()
onScannedRobot(robocode.ScannedRobotEvent)
が発生します。
onScannedRobot(robocode.ScannedRobotEvent)
、
ScannedRobotEvent
public void setAdjustGunForRobotTurn(boolean newAdjustGunForRobotTurn)
これを補正するために setAdjustGunForRobotTurn(true) を呼び出せます。 これを設定すると大砲は自動的に反対方向に回るので、 ロボットが回転しても大砲は実際には「静止」しています。
例: ロボットと大砲がどちらも真上 (0 度の方向) を向いているとします。
setAdjustGunForRobotTurn(false); // これがデフォルトです turnRight(90); // このとき、ロボットと大砲はどちらも右 (90 度) を向きます turnLeft(90); // どちらも 0 度の向きに戻ります -- あるいは -- setAdjustGunForRobotTurn(true); turnRight(90); // このとき、ロボットは右 (90 度) を向きますが、大砲は真上を向いたままです turnLeft(90); // どちらも 0 度の向きに戻ります
注: 大砲の向きをこのように補正することは、
「大砲の回転」と見なされます。
詳しくは setAdjustRadarForGunTurn(boolean)
をご覧ください。
setAdjustRadarForGunTurn(boolean)
public void setAdjustRadarForGunTurn(boolean newAdjustRadarForGunTurn)
setAdjustGunForRobotTurn(boolean)
のしくみを理解してください。
setAdjustGunForRobotTurn(boolean)
のしくみがわかりましたね?
大砲がロボット本体の上に搭載されているのと同様に、 レーダーは大砲の上に載せられています。 したがって、大砲が右に 90 度回転するとき、 そのままでは、レーダーもそれに合わせて回転します。
これを補正するには、 setAdjustRadarForGunTurn(true) を呼び出してください。 これを設定するとレーダーは自動的に反対方向に回るので、 大砲が回転してもレーダーは実際には「静止」しています (0.97 では、 ロボット本体を基準として相対的に静止しています)。
例: 大砲とレーダーがどちらも真上 (0 度の方向) を向いているとします。
setAdjustRadarForGunTurn(false); // これがデフォルトです turnGunRight(90); // このとき、レーダーと大砲はどちらも右 (90 度) を向きます -- あるいは -- setAdjustRadarForGunTurn(true); turnGunRight(90); // このとき、大砲は右 (90 度) を向きますが、レーダーは真上を向いたままです
注: setAdjustRadarForGunTurn を呼び出すと、 同じ値が指定された setAdjustRadarForRobotTurn が自動的に呼び出されます (手動で事前に呼び出した場合を除く)。 この振る舞いの主な目的は、 古い Robocode ロボットとの下位互換性を維持するためです。
setAdjustRadarForRobotTurn(boolean)
、
setAdjustGunForRobotTurn(boolean)
public void setColors(Color robotColor, Color gunColor, Color radarColor)
例: // まず、忘れずに java.awt.Color をインポートします import java.awt.Color; public void run() { setColors(Color.black,Color.red,new Color(150,0,150)); }
robotColor
- このロボットの色
gunColor
- ロボットの大砲の色
radarColor
- ロボットのレーダーの色
Color
public void stop()
stop(boolean)
、
resume()
public void stop(boolean overwrite)
resume()
、
stop()
public void turnGunLeft(double degrees)
例
turnGunLeft(90);
public void turnGunRight(double degrees)
例
turnGunRight(90);
public void turnRadarLeft(double degrees)
例
turnRadarLeft(90);
public void turnRadarRight(double degrees)
例
turnRadarRight(90);
public double getEnergy()
public void setAdjustRadarForRobotTurn(boolean newAdjustRadarForRobotTurn)
レーダーは、ロボットの上に搭載されている大砲の上に搭載されています。 したがって、ロボットが右に 90 度回転するとき、 そのままでは大砲およびレーダーもそれに合わせて回転します。
これを補正するには、 setAdjustRadarForRobotTurn(true) を呼び出してください。 これを設定するとレーダーは自動的に反対方向に回るので、 ロボット本体が回転してもレーダーは実際には「静止」しています。
例: ロボット、大砲、レーダーがすべて真上 (0 度の方向) を向いているとします。
setAdjustRadarForRobotTurn(false); // これがデフォルトです turnRight(90); // このとき、3 つはすべて右 (90 度) を向きます -- あるいは -- setAdjustRadarForRobotTurn(true); turnRight(90); // このとき、ロボットと大砲は右 (90 度) を向きますが、レーダーは真上を向いたままです
setAdjustGunForRobotTurn(boolean)
、
setAdjustRadarForGunTurn(boolean)
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: ネスト | フィールド | コンストラクター | メソッド | 詳細: フィールド | コンストラクター | メソッド |