Crobots
From Wikipedia, the free encyclopedia
概要
競技場を舞台にロボット同士が戦う。競技場の広さは1000メートル×1000メートル。同時に登場できるロボットは4台まで。ロボットは移動、索敵、砲撃を行うことができ、砲撃を受けたロボットはダメージを受ける。ダメージが100を超えると破壊されたとみなされ競技場から退場する。最後まで競技場に残ったロボットが勝者となる[2]。
ロボットの動作は、C言語風のプログラムで記述する。言語機能としてはC言語と比べると浮動小数点数、構造体、共用体、ポインタ、一部の制御構文などがない。ロボット制御用ライブラリとしてscan(索敵)、cannon(砲撃)、drive(移動)、damane(ダメージ取得)、speed(スピード制御)、loc_x/loc_y(現在位置取得)の各関数が提供される。その他にrand、sqrt、sin、cos、tan、atanの各関数が使用できる[2]。
プログラムは独自の32bitスタックアーキテクチャCPUのコードにコンパイルされて実行される。1台のロボットに割り当てられるコード領域は1000命令、スタック領域は500ワードまでとなっている[2]。
Crobotsはシェアウェアであるがソースコードは公開されており、その解説が月刊アスキー1988年2月号から3回にわたって掲載された。[3]
クローン
多くのCrobotsクローンが作成された。しかしながら、コンパイラとバーチャルマシンが揃ったものは、JavaクローンとJava VMやマイクロソフトコンパイラを使用したC++クローンなどごく一部である。
正式なクローンは、Tom Poindexterのオリジナル版と同じ機能を持つが、標準Cライブラリの三角関数に合わせるため、しばしば角度の向きが変えられる。直近のクローンはCrobots64とNetrobotsである。Marco ZoraによるcrobotsはC++サブセットコンパイラとバーチャルマシンに加え、優れたグラフィックインターフェイスを持つ[4]。このクローンの重要な点は、同種のCrobotsとの新しい協調性があり、Crobotsの数が無制限であり、浮動小数点による演算と仮想CPUの速度です。一方、Netrobotsはネットワーク越しに実行することができ、それぞれのロボットは別々のプロセスで動作し、異なる言語で記述することができる[5]。
CrobotsはApple IIで動作するen:RobotWarからコンセプトを得ている[3]。RobotWarはプロプライエタリソフトウェアであり、言語も独自の言語であった。また、リアルタイムビューを含んでいた。