トップページ⇒tech
981コメント335KB

ム板のみんなでRobocode (・∀・)ヤローウヨ!1台目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
●闘え、Robocode !(日本語解説ページ)
http://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

君のマシーンは生き残れるか!?
0004デフォルトの名無しさんNGNG
SpinBotとWallsにどうしても勝てない
0005デフォルトの名無しさんNGNG
>>1
乙ー
0006デフォルトの名無しさんNGNG
よーしパパRobocodeコピペしちゃうぞー

package itteyoshi;
import robocode.*;
public class Hexagon extends Robot {
public void run() {
while(true) {
ahead(360);
turnRight(60);
}
}
public void onScannedRobot(ScannedRobotEvent e) {
fire(3);
}
public void onHitByBullet(HitByBulletEvent e) {
back(60);
}
}
0007デフォルトの名無しさんNGNG
大体、どのプラットホームでもインストール手順は同じですが
Macの方はこちらのサイトを参考にすれば良いかと。
ttp://www.cool.giti.waseda.ac.jp/~acdc/robocode.html
0008デフォルトの名無しさんNGNG
>>3
ロボコードのアップロード・ダウンロードができるサイトで
メジャーなものはこれかな。
http://robocoderepository.com/
http://robocode.diverman.com/
0009デフォルトの名無しさんNGNG
JollyNinjaが強いす。
0010デフォルトの名無しさんNGNG
JollyNinjaのソースって見れないんですか?
0011デフォルトの名無しさんNGNG
>>10
見れるよ。確かこんな手順だったかな。
[Robot]->[Editor]
[File]->[Extract downloaded robot for editing]
JollyNinjaを選択しSelectedRobots欄に追加->[Extract!]
間違ってたら誰かフォローお願い。
0012デフォルトの名無しさんNGNG
terrariumみたいに
豪華商品くれくれ
0013デフォルトの名無しさんNGNG
また、クソ盛り上がらないスレ立てちゃいましたね。
0014デフォルトの名無しさんNGNG
Robocupの方が良かった金。
0015デフォルトの名無しさんNGNG
>>11
thxです。まだやっと目的地に向かって直線移動できるようになった程度ですが、
がんばってみます。

ところで砲台回転しながら移動、とかってやっぱりスレッド立ち上げてやるのが
正解なんでしょうか?
001615NGNG
あ、AdvancedRobotなんてクラスがあったんですか・・・
そっちを使えばいけそうな感じ。
自己レス失礼しました。
0017デフォルトの名無しさんNGNG
戦略勝負も面白いね〜
最初はメチャクチャに動き回って攻撃を回避し、
全体の数が減ったところで攻撃を始める戦法で作ってるよ
多数のバトルロイヤル形式だとけっこう生き残る
0018デフォルトの名無しさんNGNG
変形とか合体はできるのだろうか…
0019デフォルトの名無しさんNGNG
ドはドキュソのド〜
レはレモナのレ〜
ミは
0020デフォルトの名無しさんNGNG
>>19
AA辞典逝こうな。
0021デフォルトの名無しさんNGNG
まともなロボットができたら実名で
トーナメントに参加するだろうし、

大会に出たやつらがここで実名さらして
自作のロボットを語ってくれるはずは
ないし…

==================終了==================
002215NGNG
なんとかSpinBotとWallsあたりとはまともに戦えるようになりましたが、
JollyNinjaには全く歯が立たない・・・
結局照準調整がキモなのかな?
ルールは単純ですが、思ってたよりはずいぶん奥が深そうです。

>>21
ほっといても終わるのが分かってるならそう無理に終らせなくとも。
0023デフォルトの名無しさんNGNG
Tron (だったかな?)が強そう。
0024デフォルトの名無しさんNGNG
>>21
いやーそんなことねえべ
完成したソースをやりとりするのもいいが、
移動や砲撃のちょっとしたアルゴリズムを語り合うことで
話題はあると思う

ていうか、そもそもRobocodeってゲームではなくて
Javaの学習用という意味合いが強いんでは?
0025デフォルトの名無しさんNGNG
これさあ、類似の各種ゲームに比べてゲームバランスが悪いと思わん?

レーダーが超高性能なので、敵の位置はほぼ常に把握できている。
ということはつまり、自分の位置も常に把握されている。
ということは、常に全速で動いてることが必須。
そのわりに砲弾が低速なので、予測しても当らない。

メインはチームバトルか?
0026デフォルトの名無しさんNGNG
壁にあたるとLIFE減りますか?
0027デフォルトの名無しさんNGNG
>>26
減らないみたい。
import robocode.*;
public class WallHit extends Robot {
public void run() {
while(true)
ahead(200.0);
}
public void onHitWall(HitWallEvent e) {out.println(getEnergy());}
}
0028デフォルトの名無しさんNGNG
サーバをクラックして相手移動不能に。
0029デフォルトの名無しさんNGNG
>>26-27
Advancedだったら減るが普通のRobotなら減らない。

>>28
は?
0030デフォルトの名無しさんNGNG
もちろんみんな、動きが1サイクルにならないように
所々で、Randamを入れてるよね?
サンプル見てるとどれも一定の動きなんだけど・・・
0031デフォルトの名無しさんNGNG
考え方その1
「敵と自機の座標において(x1-x2)/(y1-y2)の値が一定となるような
動きはなるべく避けろ。もし発射したいときは発射後速やかに
その(x1-x2)/(y1-y2)の値が一定となるような座標から離れるべし」
003227NGNG
>>29
なるほど。壁に衝突する直前に発生するイベントを
CustomEventを使ってつくることにします。
0033デフォルトの名無しさんNGNG
public class Sample extends Robot
{
/**
* run: Sample'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
turnGunRight(8);
}
}

/**
* onScannedRobot: What to do when you see another robot
*/
public void onScannedRobot(ScannedRobotEvent e) {
fire(1);
}

/**
* onHitByBullet: What to do when you're hit by a bullet
*/
public void onHitByBullet(HitByBulletEvent e) {
back(100);
}

/**
* onHitRobot: What to do when you hit other robot
*/
public void onHitRobot(HitRobotEvent e){
fire(3);
}

/**
* onHitWall: What to do when you are close by wall
*/
public void onHitWall(HitWallEvent e){
turnRight(e.getBearing());
back(900);
}
}

的に弾に当たったときに連射をしません。
どうしてでしょうか?
またどのように対処すればよいのでしょうか?

お願いします。
0034デフォルトの名無しさんNGNG
Tron最強。
1対1でも20機ぐらいで対戦させても
かなりのアベレージで生き残る。
003534NGNG
アベレージ → 高アベレージ
0036デフォルトの名無しさんNGNG
>>33
HitRobotEventは弾が当たったときのEventではなく、
他のRobotとcollide(衝突)したときのEventだから。
API見直してみ。
0037デフォルトの名無しさんNGNG
>>33
> 的に弾に当たったときに連射をしません。
この日本語の意味がよくわからないのですが、もしも

  レーダーが敵を捕捉したら弾丸を発射し、
  発射直後もまだ敵がレーダーで捕捉できる位置にいたら
  大砲とレーダーを固定したまま弾丸を発射しつづけるようにしたい

という意味ならonScannedRobot()メソッドに以下のように
scan()メソッドを加えると実現できます。

public void onScannedRobot(ScannedRobotEvent e) {
fire(1);
scan();
}

scan()メソッドをあの場所で使わないと
大砲の発射直後にrun()メソッドが大砲(とレーダー)を回転させるため
敵がレーダーの有効範囲から外れてしまいでScannedRobotEventが発生しない
からではないかと思います。scan()については
http://robocode.alphaworks.ibm.com/docs/robocode/robocode/Robot.html#scan()
やサンプルロボットのソースの中のコメントを読んでみてください。
003837NGNG
おれの日本語も変。鬱。
0039デフォルトの名無しさんNGNG
基本的なことかもしれないけど
1対1で戦うのと、バトルロイヤルで戦うのでは
明らかに考え方が異なるよなぁ
何種類かの動きをclassにしておいて
動的に切り替える方法がいいのか?
0040デフォルトの名無しさんNGNG
>>39
StrategyパターンやStateパターンが使えるんじゃないかと睨んでる。
実際、JollyNinjaはStrategyパターンを採用しているみたい。
Robotが死んだときのEventは拾えるから動的に切り替えることは可能なはず。
0041デフォルトの名無しさんNGNG
>>40
当たり前なことをパターン名で語られても間抜けな感じだな。
まあどうでもいいが。
0042デフォルトの名無しさんNGNG
>>40
なるほど。状況に応じて思考ルーチンをごそっと入れ替えるんだな。

Robotの名前考え付いたよ。Quadropheniaってのはどうだ?
0043デフォルトの名無しさんNGNG
まだ、じっくり触ってない時点で質問するのも
失礼なんですけど・・・
レーダーで感知できるのは、相手の座標だけですか?
相手のGunの向きやレーダーの向きを知ることは
不可能ですか?
0044デフォルトの名無しさんNGNG
>>43
相手との距離、向き(相対角度)、相手の速度、エネルギー、名前
だけわかる。

ドキュメント嫁
004543NGNG
>>44
ぁぃ...ごめんなさんくす
0046デフォルトの名無しさんNGNG
>>43
http://robocode.alphaworks.ibm.com/docs/robocode/robocode/ScannedRobotEvent.html
レーダーで敵を感知したときのイベントのドキュメントは↑。念のため。
0047デフォルトの名無しさんNGNG
テラリウムより面白そうなのであげ
0048デフォルトの名無しさんNGNG
テラリウムって.NETのやつだったっけ
0049デフォルトの名無しさんNGNG
>>48
テラリウムスレ
http://pc.2ch.net/test/read.cgi/tech/1013093589/
0050デフォルトの名無しさんNGNG
これ、いかに無駄な弾を発射させないか
っていうのも考えないといけないよな
あんまり距離あるときに発射しても当たる可能性低いし・・・
いやこれ、設計難しいわ・・・
0051デフォルトの名無しさんNGNG
>>50
fire()のpowerを下げれば、弾は速くなる。
距離に応じてpower変えれば、とりあえずいいんでない?
0052デフォルトの名無しさんNGNG
バトル設定のダイアログで
Ruleタブの[Gun cooling Rate]
ってありますよね
あれによってもかなり戦略変わると思うんですが
あの値(標準は0.1)って取得できます?
0053デフォルトの名無しさんNGNG
>>52
RobotクラスにgetGunCoolingRate()メソッドがあるよ。
0054デフォルトの名無しさんNGNG
>>52
Robot#getGunCoolingRate()だと思う
http://robocode.alphaworks.ibm.com/docs/robocode/robocode/Robot.html#getGunCoolingRate()
0055デフォルトの名無しさんNGNG
メモリ上の他のロボットって触れないようにしてあるんだろうね
きっと

ROBOCODEのディレクトリをスキャンして、成績よさげなロボット
を自分でロードして、あとはBridgeパターンでそのロボットに
なりきっちゃうってのはどうだ?
0056デフォルトの名無しさんNGNG
壁に接触したら取りあえず180度スキャン→敵がいたら集中砲火

でWallに対抗したいと思っているのですが実装の仕方がわかりません。
普通に
onHitWall(HitWallEvent e)
の中で仮にスキャンしても敵を見つけたときに砲火してくれません。
多分Javaの文法自体が分ってないと思うのですがどのようにすれば
私の望むような動作をしてくれるようになるのでしょうか?お願いします。
0057デフォルトの名無しさんNGNG
>>56
うーん、とりあえず。
onHitWall()メソッドを
public void onHitWall(HitWallEvent e) {
turnGunRight(180);
}
ってしてるようなら例えば AdvancedRobotを継承して
public void onHitWall(HitWallEvent e) {
setTurnGunRight(180);
execute();
}
とすると大砲の回転中に弾丸を発射できるようになる。
0058デフォルトの名無しさんNGNG
レスありがとうございます。
今、こんな感じで壁から離れるだけに設定しています。

public void onHitWall(HitWallEvent e){
turnRight(e.getBearing());
back(900);
}

この場合はどうすればいいのでしょうか?お願いします。
0059デフォルトの名無しさんNGNG
>>58
コンパイルしてないので自信はないけど
public void onHitWall(HitWallEvent e){
setTurnRight(e.getBearing());
setBack(900);
execute();
}
0060デフォルトの名無しさんNGNG
ありがとうございました。早速試してみます。
0061デフォルトの名無しさんNGNG
永遠にあげ
0062デフォルトの名無しさんNGNG
Threadをいっぱい作って、他のロボットのCPU時間を奪うことは
できないかな? 例えば自分の処理を10個のスレッドに分けると、
自分だけ計算時間を他のロボットの10倍つかえたりしない?
0063デフォルトの名無しさんNGNG
>>62
これ↓を読んでみたけど出来なさそうだよ
http://www-6.ibm.com/jp/developerworks/java/020329/j_j-robocode.html#11
0064デフォルトの名無しさんNGNG
>>62
SkippedTurnEventがやたらと発生するだけ
0065デフォルトの名無しさんNGNG
>>62-64
結局自分の番がスキップされるだけってことか。
0066デフォルトの名無しさんNGNG
http://www.alphaworks.ibm.com/forum/robocode.nsf/current?OpenView&Start=1&Count=100
読みはじめたんだけどキリが無いっす
0067デフォルトの名無しさんNGNG
>>63-65
バトルマネージャから見えるスレッド以外に
daemonスレッドを作ってずっと動かしとけば良いのでは。

バトルマネージャからwakeupされるスレッドは
ちゃんと時間内にblocking APIを呼び出す。
他のスレッドは、他のロボットの番にたっぷり考えて
邪魔しつつ高度な処理を行う。自分の番になったら
情報を渡してsleepする。
0068デフォルトの名無しさんNGNG
>>28,>>55,>>67
2ちゃんでやる意味はこういうとこかも
0069デフォルトの名無しさんNGNG
Terrariumみたいにコンテストやってるの?
http://apps.alphaworks.ibm.com/rumble/
0070デフォルトの名無しさんNGNG
デーモンスレッドは他のロボットのCPU時間奪えないし
いつ実行されるか予測のつかないデーモンスレッドの計算結果を
あてにしてもしょうがないし
バトルマネージャから見えないスレッドなら開始されることもないと思うがどうよ
0071デフォルトの名無しさんNGNG
バトルフィールド内に
壁(外壁じゃないよ)などの
障害物があることって
今後あるのだろうか?
0072デフォルトの名無しさんNGNG
>>71
あったような気がする。
http://robocode.net/robocode.todo.txt
0073デフォルトの名無しさんNGNG
http://www-106.ibm.com/developerworks/java/library/j-robocode2/
「闘え、Robocode !ラウンド2」がアップされてた。
アドバンスドロボットやらチームプレイやらについて書かれてる。
APIドキュメントよりは分かりやすく解説されているんじゃないかな。
もっとも日本語版はまだらしいけど。
0074デフォルトの名無しさんNGNG
デーモンスレッドだからといって優先度が低いと言うわけではないし
自分で開始させちゃえばバトルマネージャには止めようがないし
別に必須ではない付加的情報を計算させとけば良い(位置予測の精度を
上げるとか)と思うがどうよ。
0075デフォルトの名無しさんNGNG
会社のwin2kでrobocodeとかJBuilderとか起動するとタスクバーがチカチカ点滅
してうっとうしいんだけど何でだと思う?
0076デフォルトの名無しさんNGNG
>>74
別に計算サーバプログラム立ててSocketでw。
007759NGNG
結局>>58は>>59のソースを試してみたのかな?
後退する距離の値として900を使っていたが大きすぎる。
だからまず間違いなく別の壁にぶつかってしまうので
その時どういう現象が起こったかレポートがほしかったんだが。
0078デフォルトの名無しさんNGNG
壁はってく奴
強くねえ?
0079デフォルトの名無しさんNGNG
>>78
サンプルロボットの中ではWallsとSpinBotが強いね。
http://www.ecs.soton.ac.uk/~awo101/robocode.html
SnippetBotは敵が線形移動すると仮定して大砲を動かして
弾丸を発射するので相性的にWallsキラー。
0080デフォルトの名無しさんNGNG
>>75
タスクバー透明化してたりしない?
Javaは昔から透過ウィンドウと相性が悪い。
# 1.4で多少改善されたけど「多少」だし
0081デフォルトの名無しさんNGNG
1.4からの新機能フルスクリーンモード使えないのかな?
俺のPCの場合チョイパワー不足なんで
フルスクリーンのほうがいいかなと・・・
0082デフォルトの名無しさんNGNG
>>81
フルスクリーン対応予定は>>72に書いてあるTODOリストには無かったと思うけど。

ところでRobocodeの最新バージョンは1.0.1になったみたいだけど
どこがかわったのかな。
0083デフォルトの名無しさんNGNG
へー 1.01になったんだね
0084デフォルトの名無しさんNGNG
こんなの見つけたんで貼っときます
0085デフォルトの名無しさんNGNG
貼り忘れてた。
http://robocode.alphaworks.ibm.com/home/versions.txt
008682NGNG
>>85
産休!
0087顔も名前も出さずに毎月100万円NGNG
Future-Web(フューチャーウェブ)登場
なんと10,000円単位の収入    

●10,000円単位の高収入
 1件につき最大10、000円の高額収入。月収100万円以上も可能。
●画期的なビジネス!
 インターネットを利用したこれまでにない斬新で画期的なビジネスです。
●誰でも出来ます!
 インターネットが出来る環境の方なら誰でも参加可能です。
●専門的な知識は一切不要!
 ビジネスに必要なツールはすべて当社で用意いたします。また、サポ
 ートも万全です。
●詳細は今すぐHPをご覧ください。
  http://www.future-web.tv/7823/
0088デフォルトの名無しさんNGNG
>>85 ゲーム自体に大きな変更は無いのね。
008975NGNG
>>80
透明化ではなかったけど tclock で時計の表示とかいじってたのが原因だった
みたいです。tclock 終了させたら点滅しなくなりました。
# よく考えたらスレ違いっぽいですね。すみません。
0090デフォルトの名無しさんNGNG
剥げしくage!!
0091デフォルトの名無しさんNGNG
Robocode (・∀・)ヤリタイ!
C言語暦2,3、ヶ月ですけど、いまからJavaの勉強をはじめたとして、
いつぐらいからここに参加できますかね?
0092デフォルトの名無しさんNGNG
>>91
もう参加しとるやないかい。
0093デフォルトの名無しさんNGNG
ageage.
0094デフォルトの名無しさんNGNG
>>91
俺6時間。C++の勉強してたからだろうけど。
0095デフォルトの名無しさんNGNG
RobocodeのAPIドキュメンテーションを日本語訳したよ。
ウェブにのっけたいと思うんだけどジオシティーズを利用すればいいのかな?
知的所有権は尊重したいからIBMがオフィシャルな日本語訳を作ってくれるのが
一番ありがたいんだけど。
0096デフォルトの名無しさんNGNG
>>95
スゴク(・∀・)イイ!
pop-up広告のないところだとうれしい。
ジオシティーズで悪くないと思います。
0097デフォルトの名無しさんNGNG
>>95
マンセーー!!
0098デフォルトの名無しさんNGNG
>>95 良くやった。褒美だ。�I�I�I�I�I�I�I�I�I�I
0099デフォルトの名無しさんNGNG
>>95
神降臨マンセ〜
0100デフォルトの名無しさんNGNG
漏れも始めたくなってきた
0101デフォルトの名無しさんNGNG
英語でも読めるだろ
0102デフォルトの名無しさんNGNG
読めるけど、日本語訳があればそのほうが良い。
0103デフォルトの名無しさんNGNG
英語苦手なので日本語訳ほしー
■ このスレッドは過去ログ倉庫に格納されています