スモウルビー・プログラミング甲子園のゲーム概要について

1.スモウルビー甲子園ゲームについて

このゲームは下表のようなマップ上で進行し、2つのプレイヤキャラクタがゴールを目指しながら得点を競い対戦するものです。(なお、ゲームではAIプログラムがプレイヤキャラクタを制御・操作し、人は操作しません。)

ゲーム画面

AIプログラムとは

プレイヤキャラクタを動かすためのプログラムです。あらかじめプレイヤキャラクタをどのように行動させたいか作戦を考え、これをプログラムにします。

作戦の例としては次のようなものがあります。

攻略の鍵は「有効な作戦」と「作戦をプログラムで実現できるか」です。

2.マップについて

(1) マップは15×15マスで構成

(2) マップ上の各マスは次のいずれかの要素で構成

空間 自由に移動可能なマス
壁・蔵 移動できないマス
(外周の一部が蔵になっています。)
水たまり 移動が制限されるマス
次回の移動命令が1度だけ実行されません。
松江城
(ゴール)
ゴールとなるマス
到着するとゴールとなり通過はできません。

3.ゲームルールについて

(1) ゲームは、2ラウンドの合計得点で勝敗を決定します。(得点の高いプレイヤが勝利)

(2) ゲームはターン制とし、1ラウンドのターン数は50ターンです。

(3) ラウンド1とラウンド2でプレイヤキャラクタのスタート位置が入れ替わります。

(4) ゲームは、プレイヤキャラクタがゴールした場合のほか、次の場合に終了となります。

  • 50ターンに達した場合
  • 10秒以内にターンの行動命令を完了しなかった場合(タイムアウト)
  • AIプログラムが不具合等により停止した場合

4.得点関係について

得点は、次の(1) ~(5)の合計となります。

(1) ゴールボーナス(ゴールした時のターン数に応じて加点)

ターン数 1~10 11~20 21~30 31~40 41~50 未ゴール
得点 100点 90点 80点 70点 60点 0点

(2) 加点アイテム

種類 シロイルカ 丁銀 和菓子 お茶
得点 40点 30点 20点 10点

(3) 減点アイテム

種類 爆弾 トラバサミ 毒キノコ
得点 △40点 △30点 △20点 △10点

(4) 妨害キャラクタ

1回の接触につき10点減点(ランダムに移動し何度でも接触します。)

(5) 歩行得点

10マス移動する都度、1点を加点

5.ゲーム画面について

ラウンド1

① ラウンドを表示
② ターン数を表示
③、④ プレイヤ情報ウインドウ
  • Player01、02の状態を表示
  • キャラクタの名前はAIプログラムの中で指定・変更可能
  • 得点によってキャラクタは変化
  • ウインドウ下部でターンの行動を表示
⑤ ゲームマップ

「プレイヤ情報ウインドウ」のキャラクタは、現在地から最短経路でゴールした場合の見込み点数に応じて下表のとおり変化します。(現時点での得点を反映したものではありませんので注意してください。)


ラウンド2

⑥ ラウンド1の得点結果(ラウンド2でのみ表示)

ラウンド2終了後

⑦ 勝敗表示
  • 勝者をWinner、敗者をLoserで表示
⑧ 得点結果

6.AIプログラムが実行できる内容

AIプログラムがプレイヤキャラクタを動かすために、スモウルビー甲子園専用の命令コードを用意しています。これらを組み合わせてプログラムを作ってください。

*命令コードの種類と内容については「Step4 AIプログラム作る」をご覧ください。

*命令コードは、Rubyの命令コード(メソッド)を使用することも可能です。

7.AIプログラム作成にあたっての留意事項

(1) ターンの行動命令の受付時間は10秒です。よって長すぎるプログラムはタイムアウトになる場合があります。

(2) 各ターンで実行できる内容には次のとおり制限があります。

  • (turn_over)をプログラムの最後に必ず実行すること
  • (move_to)の使用は1ターンに1回のみ
  • 次の命令コードの使用は1ターンにいずれか2回のみ

    (move_to)
    (get_map_area)
    (set_trap_item)

*制限を超えて使用した命令は無効として処理します。

(良い例)

  • 最後にが組み込まれている ○
  • を1回使用 ○
  • 次の命令コードを各1回使用(計2回) ○

     

(悪い例)

  • 最後にが組み込まれていない ×
  • を1回使用 ○
  • 次の命令コードを各1回使用(計3回) ×