亀場でプログラミング:亀場に登場する物体とセンサーのまとめ
「亀場」には亀以外にも、いくつかの物体やアイテムが登場するので、このページではそれらをまとめておく。
1. 物体(オブジェクト)
亀場のキャスティングは以下のとおりである:
物体 | 機能 | 反応するセンサー / 関係するイベント |
備考 |
---|---|---|---|
亀 (TURTLE) | 移動する。絵を描く。砲弾を発射する。 センサーで周囲の状況を知る。 |
FINDER, RADAR, SONARによって検知できる 亀が別の亀に衝突するとRUN_INTO_TURTLEイベントが発生 |
亀の歩行にとって障害物 砲弾を命中させると+10点 自分が被弾すると-30点 一発砲弾を発射すると-1点 |
ドーナッツ(DONUT) | DONUT()関数で亀場に出現 | FINDER, RADAR, SONARによって検知できる ドーナッツに衝突するとRUN_INTO_DONUTイベントが発生 |
亀の歩行にとって障害物 近接で砲弾を命中させると+10点 |
石ころ(STONE) | oキーを押すと、亀場に出現 | FINDER, RADAR, SONARによって検知できる 石に衝突するとRUN_INTO_STONEイベントが発生 |
亀の歩行にとって障害物 |
壁(WALL) | 対戦モード, 迷路モードで出現 | FINDER, SONARによって検知できる 亀が壁に衝突するとRUN_INTO_WALLイベントが発生 |
亀の歩行にとって障害物 |
コイン(COIN) | COIN()関数呼び出しで亀場に1枚登場 BORROWCOIN()関数呼び出しで10枚ゲット |
Q_COIN()で近くのコインの枚数を検出できる 亀の近くにコインがあるとFOUND_COINイベントが発生 |
亀の歩行の邪魔にはならない |
その他の物体として、亀が発射した砲弾がある。 一匹の亀が発射する砲弾は、亀場に同時に2発以上存在できない(砲弾が亀場にある間は、次の砲弾を発射することはできない)。 砲弾は、物体(亀、ドーナッツ、石、壁)に当たると爆発する。コインには当たらない。
砲弾が亀に命中すると、被弾した亀側にHIT_BY_BULLETイベントが発生する。
2. センサー
亀は以下のセンサー情報を使うことができる:
センサー | 機能 | 反応する物体 | 備考 |
---|---|---|---|
FINDER | 前方の亀の幅の範囲にある物体を検出 物体の種類まで区別できる |
TURTLE, DONUT, STONE, WALL |
Q_FINDER()関数を使用 RF()関数で検出範囲を調整できる 検出結果: 0:障害物なし 1:TURTLE 2:DONUT 3:STONE 4:WALL |
RADAR | 最も近い物体の方向角を検出 | TURTLE, DONUT, STONE | Q_RADAR()関数を使用 検出結果: 亀の正面を0°とした相対角度。 ±20°の誤差を含む |
SONAR | 近接の障害物を検出 | TURTLE, DONUT, STONE, WALL |
Q_SONAR()関数を使用 検出結果: 斜め左、前、右の障害物の状況 障害物無しが0, ありが1 |
コインセンサー | 近接のコインの枚数を勘定 | COIN |
Q_COIN()関数を使用 検出結果: 亀の体長(20ピクセル)の範囲内の枚数 |
物体数センサー | 亀場中の物体の総数を検出 | TURTLE, DONUT |
Q_NT()関数を使用 検出結果: 石を除いた物体数 |
チームセンサー | 検出した物体のチーム番号を検出 | TURTLE |
Q_FINDER()かQ_RADAR()を呼び出した後 Q_TM()関数を使用 検出結果: FINDER,RADARで検出した物体のチーム番号 |
亀の周囲に何も物体が無い場合にRADARを用いると、返される値は 0 ± 20° のランダムな値となる。
亀が別の亀のFINDERセンサーで検出されると、検出された側にDETECTED_BY_FINDERイベントが発生する。 同様に、RADARセンサーに検出された場合はDETECTED_BY_RADARイベントが発生する。