a.プログラム名 krbs b.処理の概要 ロボットバトルシミュレータ c.処理に要する実行時間 約5分 ------------------------------------- --- KL1ロボットバトルシミュレータ --- --- krbs(黒星) --- ------------------------------------- krbs Ver 1.00 ドキュメント (c)長健太(cho@ueda.info.waseda.ac.jp) <概要> krbsは、KL1プログラムによって制御されるロボット同士を戦わせ、 そのアルゴリズムの優劣を競いあうシミュレーションゲームです。 ロボットは、一定の大きさのフィールド内で赤青2つのサイドに分かれ、 あらかじめ与えられたプログラムに従って、攻撃、防御を行ないます。 最終的に生き残ったロボットのサイドが勝ち、全滅したサイドが負けです。 <実行の仕方> krbsでは、本体のプログラムの他に、ロボットを制御するための 制御プログラムが必要です。サンプルとして、testrobot1.kl1から testrobot6.kl1までの6つの制御プログラムが用意されてます。 ここではこれらのサンプルプログラムを使ってkrbsを実行します。 (あらかじめ、complie.docに従って、必要なファイルをコンパイル しておいて下さい) -エントリーロボットの登録- krbsでは、赤青の各サイドにエントリーするロボットの制御プログラムを 指定する必要があります。これらはkrbsを実行するパスに存在する 'entry.rbs'というファイルで指定します。 'entry.rbs'は以下のような内容になっています。 testrobot1 testrobot4 testrobot6 testrobot6 \ testrobot2 testrobot3 testrobot5 testrobot5 '\'の上の4つが青サイドの制御プログラムのモジュール名(=ファイル名)、 下の4つが赤サイドの制御プログラムのモジュール名です。 各サイドには1〜8台までのロボットをエントリーすることができます。 各サイドにエントリーするロボット数は同数でなければなりません。 -krbsの実行- 'entry.rbs'を準備したら、コマンドラインから'krbs'と打って、 krbsを実行します。krbsは、必要な制御プログラムをコンパイルし、 シミュレータ本体のプログラムとリンクし、実行します。 リンクした結果は、rbsというプログラムになります。krbsはこのrbsを 実行し、その標準出力をXの出力に整形するvrbsに渡します。 結果、krbsを実行すると1つウインドウが開き、そのウインドウ内の フィールドでエントリーしたロボットが戦います。 -vrbsの画面- 画面両端に、各サイドのロボットの状態(左が青、右が赤)が表示され、 フィールドは中央に表示されます。 ロボットの状態は、 -------------------------------------- 制御プログラムのモジュール名 ロボットの形、状態(実行中の命令) ダッシュシグナル ショットパワー シールド残料 -------------------------------------- というふうに表示されます。 フィールド上には、 ・ロボット(右上にシールド残料表示) ・ショット が表示されます。 被弾したロボットは白くフラッシュします。 -krbsの終了- どちらかのサイドのロボットが全滅すると、krbsは終わります。 vrbsのフィールド上に、どちらのサイドが勝ったかが表示されます。 vrbsのウインドウ上でマウスをクリックすると、vrbsは終了します。 krbsは以下のオプションを受け付けます。 Usage: krbs [-options ...] where options include: -link make rbs -vrbs run vrbs -help show this help otherwise vrbs options -linkオプションをつけると、krbsはrbsを生成するだけで、 rbsおよびvrbsを起動しません。-vrbsオプションをつけると、 krbsは新たなrbsを生成せず、単にvrbsを起動します。 それ以外のオプションは、vrbsを起動する際にvrbsのオプションとして 渡されます。 vrbsは以下のオプションを受け付けます。 Usage: vrbs [-options ...] where options include: -display dpy X server on which to display -geometry geom size and location of window -si 0.1seconds interval between screen updates -fn font font to use -name n [name1 ...] robot name <ロボット制御プログラムの書き方> makerobot.docを参照して下さい。ロボットやフィールドの仕様についても 書いてあります。 <現在の知られている問題点> ・誤ったロボット制御プログラムに対する対策は全く行なっていません ・vrbsのエラー処理が一部甘いところがあります。 特に大きな画面にresizeした時や、他のXのアプリケーションが動いている 時に、メモリの確保に失敗することがあります。