ム板のみんなでRobocode (・∀・)ヤローウヨ!1台目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://www-6.ibm.com/jp/developerworks/java/020329/j_j-robocode.html
●オフィシャルサイト
http://robocode.alphaworks.ibm.com/home/home.html
●Robocode API Documentation
http://robocode.alphaworks.ibm.com/docs/robocode/index.html
●Java2のダウンロード先
http://java.sun.com/j2se/1.4/ja/download.html
君のマシーンは生き残れるか!?
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNGドキュメントには書いてないみたいだったスマソ。けれど
out.println(getX() + ", " + getY());
をしてみるといかにも中心のような気がするよ。
0155デフォルトの名無しさん
NGNGVerilogででけたらなぁ。
0156デフォルトの名無しさん
NGNGっつ〜か漏れはVerilogのほうがさっぱりわからん。
VHDLやったけどサパーリだったYO!
VHDLしか書けない厨房?
文面からして頭が悪そうですね。
そもそもプログラマですらないのでは、と煽ってみる。
0158デフォルトの名無しさん
NGNGおれの環境はWin98SE,JDK1.4.0の日本語対応、Robocode1.0.1だけど
そのやり方で化けずに表示できたよ。
ガンダムっぽくやるならまず import java.awt.Color;
しておいて run()メソッドの先頭で↓しる。
setColors(Color.WHITE, Color.BLUE, Color.RED);
0159デフォルトの名無しさん
NGNGわしが書いた>>142はめちゃくちゃだった、鬱。
ScannedRobotEvent#getDistance()で、ロボット同士は中心の距離で測っているって書いてある。
getX()、getY()についてはどうか知らないが。
>>150
わしは以下のようにしているけど出力できてるよ。
public void onScannedRobot(ScannedRobotEvent e) {
System.out.println("Scanned Enemy. "+
// スキャンで得られる全データ
"Name:"+e.getName()+","+
"E:"+e.getEnergy()+","+
"Head:"+e.getHeading()+","+
"Dist:"+e.getDistance()+","+
"Bear:"+e.getBearing()+","+
"Vel:"+e.getVelocity());
}
でも、2バイト文字はどうか知らないが。
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG0162JollyNinja3.26
NGNG4万点超えればけっこう強いってこと?
0163デフォルトの名無しさん
NGNG自作ロボットだが、平均して45000点前後出てる。
でも、強いロボットばっかりだと軽くひねられてしまう。
>>152
Wolverineはあまり強くないよ。
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNGだれか、UnitTestしている人いる?
0166デフォルトの名無しさん
NGNGJUnitとかを使ってのテストのこと?
あまり意味をなさないような気がするが・・・。
やれるのはユーティリティ的なメソッドくらいか。
バトルやって動作確認できるんだからそれでいいじゃん。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGHitRobotEventは発生しないよね。
0169デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG>JUnitとかを使ってのテストのこと?
そうそう。
>あまり意味をなさないような気がするが・・・。
>やれるのはユーティリティ的なメソッドくらいか。
Javaの学習も兼ねているから、JUnitの学習も兼ねて
使おうかと思っているんだけど、どうやれば正しいのか
と思って・・・。
>バトルやって動作確認できるんだからそれでいいじゃん。
それはそうなんだけど、それは結合テストだし。
0172デフォルトの名無しさん
NGNGRobocodeってばJUnitでのテストには向いてないと思う。
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG例えば、Robotを継承したMyRobotでは直接Robotを操作しないで、
class RobotControl(Robot myRobot)
見たいなクラスを作る。
で、このクラスをテストする、って考えているんだけど。
そのとき、Robotを継承したダミーのTestRobotクラスも定義して、
全てのメソッドをオーバライドしてファイルなりストリームなりに
吐き出すようにする。
これでRobotControlがRobotをどうやって操作しているかが外から
見えるようになるのでテストできるようになると思うんだけど、
やっぱりやるだけ無駄?
0175デフォルトの名無しさん
NGNGテストのためのテストってつもりなら、とりあえずやってみたら?
ロボットの品質を上げるためのテストなら止めた方がよいと思うが。
>全てのメソッドをオーバライドしてファイルなりストリームなりに
>吐き出すようにする。
JUnitを使ってのテストじゃないよね?
out.printlnじゃダメなの?
0176106
NGNGお前らこれ↑を翻訳しました。これ↓を見て誤訳の指摘等お願いします。
http://www.geocities.co.jp/SiliconValley/9155/library/robocode2.html
ところでGoogleって登録手続きしてから実際に登録されるまで
1〜4週間も時間がかからしいですな。
0177デフォルトの名無しさん
NGNG>すごいドライバになりそうやね。
やっぱりそうかな?
>テストのためのテストってつもりなら、とりあえずやってみたら?
>ロボットの品質を上げるためのテストなら止めた方がよいと思うが。
JUnitを使った場合と使わない場合で、Robotの品質にどれだけ違いがでるか
知りたいってのもあるから、品質があがらないならやりたくないんだけど、
見込みないかな。
>JUnitを使ってのテストじゃないよね?
>out.printlnじゃダメなの?
JUnitのつもりですけど、out.printlnでも大丈夫ですか?
0178デフォルトの名無しさん
NGNG「アドバンスドロボット作りとチームプレイで基礎を超えろ」
翻訳おつかれさま。たすかります。
チームプレイ機能があったのには気づかなかった。
友達何人かでチームわけしてプレイすれば楽しそ (w
0179デフォルトの名無しさん
NGNGコーディングしながら頻繁に自動チェックしたいわけだろ?
outじゃなあ…かえって検査ルーチンが面倒になると思うが。
0180デフォルトの名無しさん
NGNG読むぜ。ありがとう。
しかしやる時間がぜんぜんねぇなもうVAIO抱えて通勤するしかなさぽ。
0181デフォルトの名無しさん
NGNGぜひうpしてく!!
0182デフォルトの名無しさん
NGNG失敗ついでに、「ターン」の概念がききたい。
0183176
NGNG実はおれもよくわからんのよ。わからないまま訳してしまったよ。
シミュレーションゲームとRobocodeの両方に詳しい人がいたら
きちんと説明してもらえるかもしれないんだけど。
0184デフォルトの名無しさん
NGNGボードゲームでもトランプでも「自分の番」ってのがあるでしょ。
ポーカーだと
レイズorコールor降りる→カード捨て→カード取る
で1回の自分のターンが終わる。
シミュ系のボードゲームだと例えば
補給→移動→攻撃
で1ターン終了、みたいな。
で、「うーん。このユニットがあの町につくまでには3ターンかかるな」ってのは
「自分の番が3回まわってくる間移動し続けないと町まで着かない」って意味。
0185182
NGNGたとえばScannedRobotEventで trunRight(1) とだけ記述した場合、
「そのターンは右1度旋回で終了」
とみなされてしまってるような気がして。
Eventの行動だけで1ラウンド経過してしまうのか?とか、
じゃあいったいいつメインのループに処理が回るのか?とか、
1ターンのどのタイミングでEventは補足されるのか?とか、
疑問が尽きないのです。
この辺りが詳しく記されたドキュメントってありませんかね。
0186デフォルトの名無しさん
NGNGRobotなら旋回が終了するまで処理が戻ってこないし、
AdvanceRobotならすぐに処理が戻ってくる。
どちらにしても、1tickに10度の旋回速度じゃなかったっけ?
0187186
NGNGたとえば、
run() {
while (1) {
turnRight(20);
}
}
onScannedRobotEvent (...) {
turnLeft(10);
}
なら、turnRight(20)から戻るまでに2tick経過すると思われます。
そして、ScannedRobotEventはturnRight()を呼び出して処理が
戻ってこない間に発生します。
このとき、もし10度だけ右に旋回したときにEventが発生した場合、
turnLeft(10)の処理は、その時点で有効になるのか、20度回りきって
から有効になるのかは、ちょっと不明。
0188186
NGNGAdvancedRobot.setMaxTurnRate()
の説明から推測。
0189182
NGNGって事は、20度回転したいときに何ターン(tick)かかるかは一概にはいえないと。
う〜ん、インテリジェントに制御するのは結構面倒ですなぁ。
>Robotなら旋回が終了するまで処理が戻ってこないし、
>AdvanceRobotならすぐに処理が戻ってくる。
なる。ある程度以上制御したいならAdvanceを使っていくのが近道っぽいですね。
とりあえずJavaDoc読み漁ってみます。
感謝。
0190デフォルトの名無しさん
NGNG毎ターンsetTurnRight()にわたせば向きたい角度に向ける。
あと、速度に影響されるのは砲台じゃなくてRobotでは。まぁ、砲台もロボットの
回転の影響を受けるけどそれはsetAdjust〜〜で防げるし。
0191デフォルトの名無しさん
NGNGRobocode Rumbleに5/20に"Takahashi"っていうロボットが登録されてたよ。
日本からの初参戦?あまりマメにチェックしてなかったからわからないっす。
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG>Profile: Takahashi meijin...
高橋名人だって。16 連(略
0194デフォルトの名無しさん
NGNGanti-gravity movementの解説を訳してアップしました。
0195106
NGNGPredictive targeting(予言的ターゲッティング?)の解説を
訳しました。多分明日の朝アップします。
この戦略の優秀さはJollyNinjaとMadHatterの強さが証明しています。
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGおおお、お疲れさんです
楽しみにしてまっさ
0198デフォルトの名無しさん
NGNGhttp://www.geocities.co.jp/SiliconValley/9155/library/pred-targeting.html
アップしました。
0199デフォルトの名無しさん
NGNGいつも、ありがとう。
参考にさせていただきます。
0200デフォルトの名無しさん
NGNGいつもありがとう。
ロボットで負ける前に熱意で負けそうだ(藁
0201デフォルトの名無しさん
NGNG>>75
漏れも同じこと起こったけどJBuilderは
jdk.configのvmparam -Dsun.java2d.noddraw行を
コメントアウトしたらちかちかしなくなったよ〜
ただrobocodeはだめっぽい(;´Д`)
0202デフォルトの名無しさん
NGNGまたアップしましたが、わからんかったところがあります。
> the number of encounters in which the state has been used,
と
> To prevent a single bad round from disqualifying
> a potentially effective state,
> statistics data is not considered valid unless
> the state has been used in at least three encounters.
は(特に encounters)どう訳したらいいのでしょう?
0203ののたん
NGNG〜するために、
少なくとも3回の遭遇で使用されたステートでない限り
統計データは有意なものとして考慮されない。
くらいだぴょん。
0204デフォルトの名無しさん
NGNG0205202
NGNGそうします。
> 204
stateはあえて「ステート」としておきました。
GoFのデザパタにStateパターンもあることだし
いじらなくてもいいかなと思って。
0206デフォルトの名無しさん
NGNGRobocodeに8クイーン(8だと時間がかかるので実際は5クイーン)を
解かせたそうです。TeamRobot#broadcastMessage()を使うと
ある程度までは高速化できるのかな。
しかしレーダーを使わなくてすむので面白みは減るかも。
0207デフォルトの名無しさん
NGNG雑誌の創刊号には特別企画に
『RobocodeによるJavaプログラミング撃破術』
というのが掲載されるそうです。
0208デフォルトの名無しさん
NGNG撃 破
0209デフォルトの名無しさん
NGNG>ム板のみんなでRobocode (・∀・)ヤローウヨ
い や だ !
0210デフォルトの名無しさん
NGNG0211106
NGNG"Secrets from the Robocode masters"には今のところ記事が7つあるけど
一応全部訳したよ。時間さえあれば土日にHTML化してアップしたいっす。
0212デフォルトの名無しさん
NGNG0213106
NGNGhttp://www.geocities.co.jp/SiliconValley/9155/api/
http://www.geocities.co.jp/SiliconValley/9155/library/
アップしました。一番すごいと思ったのは現在世界のトップロボットは大抵
ターゲッティングシステムにパターン認識を採用しているというところです。
ところでおれって著作権を侵害しまくってるのかな、やっぱり。
0214213=106
NGNGあーあ、どうしたらよかんべ。
0215デフォルトの名無しさん
NGNG僕たち純真無垢なタイーホブラザーズ!
とっても目立つようにageてあげるよ!
タイーホされたら祭をしてあげるからね。
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧_∧ タイーホ
(・∀・ ) ( ・∀・) タイーホ
/ \ / \ タイーホ タイーホ
⊂( ヽノ つ ⊂ヽ/ ) つ タイーホ
し(_) (_)J
0216デフォルトの名無しさん
NGNG僕たち純真無垢なタイーホブラザーズ!
とっても目立つようにageてあげるよ!
タイーホされたらタイーホ祭をしてあげるからね。
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧_∧ タイーホ
(・∀・ ) ( ・∀・) タイーホ
/ \ / \ タイーホ タイーホ
⊂( ヽノ つ ⊂ヽ/ ) つ タイーホ
し(_) (_)J
0217デフォルトの名無しさん
NGNG産休!
0218デフォルトの名無しさん
NGNG聞いてみるとか。
0219デフォルトの名無しさん
NGNG日本IBMより早く「ロボコード」で商標登録を汁
ついでにタカラにロボコードプラモ作ってもらう
0220デフォルトの名無しさん
NGNG0221106
NGNGhttp://www.geocities.co.jp/SiliconValley/9155/library/radar.html
まさか6億円も払う事態には陥らないだろうと思いながらまた訳してアップしました。
"The Secret from Robocode masters: Radar sweeps"の訳です。
0222デフォルトの名無しさん
NGNGお勤めご苦労様です。
レーダーの作動範囲とか、読んでたらコムサイトやりたくなってきた。
0223デフォルトの名無しさん
NGNGイツノマニカ(゚∀゚)日本語化サレテルシー!!
0225106
NGNGPolymorphic enemy cache"を近日中に訳してアップする予定です。
それからAA作ってみました。(ネタなのでsage)
∧ ∧
(,,゚Д゚)つ <out.println("逝ってよし!");
. [∪ ̄]≡=ロ
/ ̄ ̄ ̄ ̄\
(○) (○) (○)
0226デフォルトの名無しさん
NGNGSystem.out.println("test");
の出力が出ないんです。
Round 3 initializing....
Let the games begin!
Round 3 cleaning up.
----------------------
Round 4 initializing....
Let the games begin!
こういうのが出る窓にでるはずと思うんだけど。。。
出すまでも無いと思われるソースは一応こんなです。
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) {
System.out.println("test");
・・・・
コンパイルエラーは出ていません。何が悪いんでしょうか?
0227デフォルトの名無しさん
NGNGhttp://robocode.alphaworks.ibm.com/docs/robocode/robocode/Robot.html#out
を読んでみそ。文字を画面に出力したいときは
Robotクラスのフィールドoutに出力すべきで、
これはバトルフィールドの右側のボタンを押すと表示される。
System.outに何か書こうとしてもやはりRobotクラスのoutに出力される。
……ということだと思う。
0229226
NGNGとりあえず一機つくってみたけど、sample11機と50戦して32,206点
不本意だ・・・
ていうかsampleに負けてる時点で駄目ですか?
0230デフォルトの名無しさん
NGNG駄目ってことはない。とりあえずsampleロボット達のソースをじっくり眺めて
勉強させてもらうだけでもスキルはアップすると思うよ。
sampleに確実に勝てるロボットを作れるようになるにはそれなりの努力が要る。
http://www.ecs.soton.ac.uk/~awo101/robocode.html
英語を読むのが苦でなければこれ↑は良いチュートリアルだと思う。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGttp://www.javadeveloper.jp/static/index.html
って、a 要素の href 属性を書き間違ってない?
Not Found 大杉だよぉ。
0233デフォルトの名無しさん
NGNG「Robocodeを使ったJavaプログラミング撃破術:前編」
> 砲弾の速度は、エネルギーに反比例しており、
> 20 - 3 x p
> となります。
この記事の著者は義務教育を受ける機会が無かったのかな。
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGpがエネルギーだぜ
0237デフォルトの名無しさん
NGNGつっこみどころが違う。
「反比例」なら y = a / x の形でしょ。
0238106
NGNG>>225で予告した文章をまだアップしていないのに
Secrets from the Robocode mastersがまた一つ増えてました。精進せねば。
0239デフォルトの名無しさん
NGNGだいぶわかってきたけど、初めはどうしたらいいとおもう?
0240デフォルトの名無しさん
NGNG距離の二乗で割るのが正しいのか。 距離を引き算してた。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNGおれもテラリウムで鍛えればよかったかな。
重力は距離の2乗に反比例するからanti-gravity movementというネーミングは秀逸だと思う。
もっとも必ずしも'2'乗じゃなくてもよいということをAlisdair Owensは書いてる。
>>241
できるよ。
0243241
NGNGtry {
x = 1 / zero;
}
catch (ArithmeticException e) {
out.println("arithmetic");
}
catch (RuntimeException e) {
out.println("runtime");
}
catch (Exception e) {
out.println("top exception");
}
finally {
out.println("x = " + x);
}
これをrun() { while(true) の先頭に置いてみたのですが、finallyでの出力しかでてこないのです。。
0244241
NGNGx = Infinity
と出力されます。(そもそも例外が発生しない?)
0245デフォルトの名無しさん
NGNG> (そもそも例外が発生しない?)
その通り。Java言語仕様(JLS)第2版の§15.6には
> ●整数の除算演算子(§15.17.2)、あるいは整数の剰余演算子(§15.17.3)では、
> 右手側のオペランド式の値がゼロである場合、ArithmeticExceptionがスローされる。
とある。>>243のコードでxとzeroをint型にでもしてみるとしっかり例外がスローされるよ。
0246241
NGNGなるほどそういうことだったのかー
>>245さんありがとうです〜
0247デフォルトの名無しさん
NGNG基本的によけてれば相手が自滅してくる。。
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGすごいっすね。
Rumbleにウプしたらかなりいいとこまでいくのでは?
0250デフォルトの名無しさん
NGNG天皇窮屈そうに犬の後ろを歩く、哀れ。
http://www.asahi-net.or.jp/~he9n-tkis/oobakamono.mpg
0251106
NGNGhttp://www.geocities.co.jp/SiliconValley/9155/library/tippoly.html
「Robocodeマスターの秘密: 多態的な敵のキャッシュ」をアップしました。
Robocodeの最新バージョンが1.0.3になりましたね。
メソッドがいくつか追加されているので訳さなければ。
http://robocode.alphaworks.ibm.com/home/versions.txt
0252デフォルトの名無しさん
NGNGpublic class DodgeBot extends AdvancedRobot{
double previousEnergy = 100;
int movementDirection = 1;
int gunDirection = 1;
int bulletPower=1;
int count=0;
int safeDistance=30;
double bear=0;
double dist=0;
final int ROBOT_RADIUS=10;
public void run() {
setTurnGunRight(99999);
}
public void onScannedRobot(
ScannedRobotEvent e) {
dist=0;bear=0;
// Stay at right angles to the opponent
if (e.getDistance() > 230)
setTurnRight(e.getBearing()+90-30*movementDirection);
else
setTurnRight(e.getBearing()+90);
//- 90*movementDirection);
// If the bot has small energy drop,
// assume it fired
double changeInEnergy =
previousEnergy-e.getEnergy();
if (changeInEnergy>0 &&
changeInEnergy<=3) {
// Dodge!
if(count%2==0)movementDirection =
-movementDirection;
count++;
setAhead((e.getDistance()/5+100)*movementDirection);
}
// When a bot is spotted,
// sweep the gun and radar
gunDirection = -gunDirection;
setTurnGunRight(99999*gunDirection);
if (e.getDistance() <20)
fire(3);
else
if (e.getDistance() <50)
fire(2);
else
if (e.getDistance() <100)
fire(2);
else if (e.getDistance() <300||e.getEnergy()<10 )
fire(1);
else
fire(0.1);
// Track the energy level
previousEnergy = e.getEnergy();
}
}
■ このスレッドは過去ログ倉庫に格納されています