AIプログラムの作り方

(5)簡単なAIプログラムを作る

それでは、ご紹介した2つの作戦で実際にAIプログラムを作ってみましょう!

[作成するプログラムの内容]

  • これから作るプログラムの内容は次のとおり

    ■プレイヤキャラクタに「しまねっこ」という名前を付ける

    ■ターンの行動を次のとおりプログラムする

    ① マップ情報を取得する

    ② 始点:自分の位置、終点:ゴールで最短経路を計算する

    ③ ②の結果に従って1マス移動する

[テンプレートの読み込み]

  • スモウルビーの起動(ショートカットをダブルクリック)

  • 「メニュー」-「ロード」を選択
  • 「ai_template.rb」を選択の上、「決めた!」ボタンをクリック
  • テンプレートの読み込み完了

[プレイヤキャラクタの名前を付ける]

  • 「template」に名前を入力(漢字も使用可能。最大14文字)
  • 例として「しまねっこ」を入力します。

[マップ情報を取得する]

  • 「マップ情報を取得する」ブロックの用意

  • 「マップ情報を取得する」の中心座標としてプレイヤキャラクタの座標を指定

    ※この命令コードは、指定した座標を中心に5×5マスのマップ情報を取得できます。

    ※ここでは、プレイヤキャラクタの位置を指定します。

    を2つともゴミ箱へ

    ⇒代わりにを挿入(x軸とy軸を間違えないよう注意)

  • 「マップ情報を取得する」ブロックをテンプレートにはめ込む

[始点:自分の位置、終点:ゴールで最短経路を計算する]

  • 「2点間の最短経路」ブロックを用意

  • 「始点」と「終点」の座標を指定(今回は作業不要。)

    ※この命令ブロックでは、「始点」「終点」「通らない座標」を指定できます。

    ※何も指定しない場合、自動的に次の設定となります。

    ▶始 点:プレイヤキャラクタの座標

    ▶終 点:ゴール

    ▶通らない座標:設定なし

    ※今回は自動設定の内容と同じですので、指定の作業は不要です。

  • 「2点間の最短経路」の答えを変数にする

    ※命令を実行すると、ゲームサーバから座標配列が返されます。

    ※この座標配列を変数「ルート」として管理します。

    ⇒ 宛先に「2点間の最短経路ブロックをはめ込む

    をクリックし、 選択

    ⇒新しい画面に「ルート」を入力し、「OK」を選択

「2点間の最短経路」ブロックをテンプレートにはめ込む

【経路探索の注意事項】

「2点間の最短経路」では、「マップ情報を取得する」をしていないセルは全て通れるものとして情報を返します。(空間か壁、水たまりか判断できないため)

よって、全ての「マップ情報を取得する」をしていない場合の「2点間の最短経路」は、完璧なものでありませんので、注意してください。但し、今作っているプログラムではプレイヤキャラクタの周りを毎ターン「マップ情報を取得する」を実行していますので、間違いながらも確実にゴールに向かって進むことができます。

[「2点間の最短経路」の結果に従って1マス移動する]

  • 「移動する」ブロックを用意

  • 「式」ブロックを「移動する」ブロックにはめ込む

  • 移動先として変数「ルート」の指定番号1を指定する

    ⇒式の中に「ルート[1]を入力 ※注意:[1]は半角

  • 「移動する」ブロックをテンプレートにはめ込む

[プログラムを保存する]

  • 作ったプログラムに名前を付けて保存します。

    ① ここでは「shimanekko」といファイル名にします。ファイル名を直接入力します。

    ② 「メニュー」の「セーブ」を選択。 ※これでスモウルビーのファイル(xml)が保存されます。

    ③ モードを「Ruby」に切り替えます。

    ④ 「メニュー」の「セーブ」を選択。 ※これでRubyのファイル(rb)が保存されます。
    (保存作業はスモウルビーとRubyをそれぞれ行ってください。)

クリエイティブ・コモンズ・ライセンス

このドキュメント は クリエイティブ・コモンズ 表示 4.0 国際 ライセンス の下に提供されています。