コンテンツにスキップ
日本語

メッセージリファレンス

メッセージは emitter デバイスで送信し、receiver デバイスで受信します。例は通信のチュートリアルを参照してください。

以下の書式文字列は、Python の struct モジュールのものです。

ロボットが送信するメッセージ

Section titled “ロボットが送信するメッセージ”
メッセージ 書式 長さ 用途
壁のトークンの報告 i i c: x, z, 種類 9 バイト 位置はセンチメートル単位で、種類は H、S、U、F、P、C、O のいずれかです。ロボットは 1 秒以上停止している必要があります。
地図データ 2i の後に UTF-8 テキスト: 行数、列数、カンマ区切りのセル それ以外の任意の長さ 地図を保存します(評価はしません)
M c 1 バイト 保存した地図を評価します。1 回しか行えません。
L c 1 バイト 競技進行停止を宣言します
G c 1 バイト ゲームの情報を要求します
E c 1 バイト ゲームを終了します。ロボットがスタートタイルにいて、壁のトークンを 1 つ以上識別していれば、脱出ボーナスが与えられます。

Erebus はこれらのメッセージを長さで区別するので、報告は必ずちょうど 9 バイトにしてください。

ロボットが受信するメッセージ

Section titled “ロボットが受信するメッセージ”
メッセージ 書式 長さ 用途
L c 1 バイト 競技進行停止が発生しました
G c f i i: G、スコア、残りのゲーム時間、残りの実時間 16 バイト G への返信です。時間は秒単位です。

上の struct 書式では float がアラインされるため、G のパケットにはパディングが含まれることに注意してください。スコアはオフセット 4 バイトの位置から、2 つの時間はオフセット 8 バイトと 12 バイトの位置から始まります。

関数 説明
robot.getDevice(name) 名前でデバイスを取得します。C++ では robot->getMotor(name)、robot->getCamera(name) などを使います。
robot.step(timeStep) シミュレーションを進めます。シミュレーションが終わると -1 を返します。
robot.getTime() シミュレーション時間を秒単位で取得します
device.enable(timeStep) センサーを有効にします
motor.setPosition(float("inf")) モーターが無制限に回るようにします
motor.setVelocity(speed) モーターの速度をラジアン毎秒で設定します