「スモウルビー・プログラミング甲子園」ゲーム概要

1.ゲーム概要

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

gamemap
ゲーム画面
player
プレイヤキャラクター

AIプログラムとは

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

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

tactics

“ゴールを目指して最短経路で移動する”

“減点アイテムを避けてゴールを目指す”

“加点アイテムを取ってからゴールを目指す”

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

2.ゲームマップ

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

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

マスの種類 内容
空間 自由に移動可能なマス
移動できないマス
蔵(外壁) 移動できないマス
ゴール ゴールとなるマス
到着するとゲーム終了となり、ゴールを通過することはできません。
水たまり 移動が制限されるマス
次回の移動命令が1度だけ実行されません。
壊せる壁 移動できないマス
ただしダイナマイトで壊すと空間に変わり移動可能になる。

※大会ルールとして、マップは壁または蔵に囲まれているものとします。

3.ゲームルール

  1. ゲームは、2ラウンドの合計得点で勝敗を決定します。(得点の高いプレイヤが勝利)
  2. ゲームはターン制とし、1ラウンドのターン数は50ターンです。
  3. ラウンド1とラウンド2でプレイヤキャラクタのスタート位置が入れ替わります。
  4. ゲームは、プレイヤキャラクタがゴールした場合のほか、次の場合に終了となります。
    • 50ターンに達した場合
    • 10秒以内にターンの行動命令を完了しなかった場合(タイムアウト)
    • AIプログラムが不具合等により停止した場合

4.ゲームポイント

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

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

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

(2)加点アイテム

※大会ルールとして、草薙剣はマップ上に1個のみ出現するものとします。
(対戦環境のマップ上に草薙剣を2個以上設置することは可能ですので、マップを自作される場合はご注意ください。)

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

(3)減点アイテム

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

(4)使えるアイテム

空間または水たまりの上に置いて、隣にある「壊せる壁」を壊すことができる。

種類 ダイナマイト

(5)妨害キャラクタ

1回の接触につき10点減点(何度でも接触します。)
プレイヤーキャラクタがゴールしたとき、ゴール上に妨害キャラクタがいるときも減点されます。
1~40ターンはランダムで移動しますが、プレイヤキャラクタが3マス以内に入ると、プレイヤキャラクタへ向かって移動します。
41~50ターンは最寄りのプレイヤキャラクタに向かって移動します。
プレイヤー1とプレイヤー2が等距離にいる場合は、ラウンド1はプレイヤー1へ、ラウンド2はプレイヤー2へ向かって移動します。


(1~40ターン)   (41~50ターン)

(6)歩行得点

5マス移動する都度、3点を加点

5.ゲーム画面

ラウンド1

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

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


ラウンド2

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

ラウンド2終了後

⑦ 加点アイテムの取得状況
⑧ 勝敗表示
  • 勝者をWinner、敗者をLoserで表示
⑨ 得点結果

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

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

*命令コードの種類と内容については「公式説明書」をご覧ください。

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

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

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

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

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

    (move_to)
    (get_map_area)
    (set_dynamite)

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

(良い例)

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

     

(悪い例)

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