スポンサーリンク

AIと一緒に遊ぼう!Scratchで作る対話型ゲームの作り方

スポンサーリンク
ScratchでAIを学ぼう!ブロックプログラムで簡単AI
スポンサーリンク

「Scratchで、話しかけると返事をするキャラクターを作りたい!」と思ったことはありませんか?この記事では、入力した言葉に応じて返事が変わる、簡単な対話型ゲームの作り方を紹介します。

最初に作るのは、あらかじめ決めたルールに従って返事をする会話プログラムです。ChatGPTのように文章を生成するAIではありません。まずはScratchの基本ブロックで「質問する・答えを調べる・返事を変える」という仕組みを学びましょう。この記事の作例には、外部サービスのAPIキーは必要ありません。

スポンサーリンク

1. 完成するとどんな会話ができる?

キャラクターに言葉を入力すると、次のように返事をします。

入力する言葉キャラクターの返事
こんにちはこんにちは!会えてうれしいよ。
名前はぼくはスクラッチねこだよ。
遊ぼういいよ!次はクイズゲームを作ってみよう。
上記以外の言葉その言葉はまだわからないよ。
さようならまた遊ぼうね! と言って会話を終える

この作例では、入力した言葉が決めた言葉と一致するかを調べます。「こんにちは!」のように記号を付けると別の入力になるため、最初は表のとおりに入力してください。

2. 必要な準備

  • キーボードで文字を入力できるパソコン
  • ブラウザ版Scratchを使うためのインターネット接続

Scratch公式サイトを開き、「作る」から編集画面へ進みます。この記事では、日本語表示の編集画面を使います。英語で表示された場合は、地球のマークから日本語を選んでください。

ログインせずに作り始めることもできます。作成した作品は、ファイルメニューから「コンピューターに保存する」で保存できます。オンラインで保存・共有する場合は、アカウントにサインインして利用してください。

会話の動作確認には、本名・住所・学校名などの個人情報を入力する必要はありません。

3. キャラクターを選ぼう

最初から表示されているネコを使えば、キャラクターを追加する必要はありません。

  1. 画面右下のネコのスプライトをクリックします。
  2. 「コード」タブを開きます。
  3. 中央の広い場所に、これから説明するブロックを組みます。

スプライトとは、Scratchで動かしたり、せりふを言わせたりするキャラクターなどのことです。今回のプログラムは、すべて同じネコに作ります。

4. 使うブロックを確認しよう

カテゴリ使うブロック役割
イベント緑の旗が押されたときゲームを始める
調べる〜と聞いて待つ文字を入力してもらう
調べる答え最後に入力された内容を取り出す
演算=入力された内容を比較する
制御もし〜なら/でなければ条件に応じて処理を分ける
制御〜まで繰り返す終了の条件を満たすまで会話を続ける
見た目〜と2秒言う返事を表示する

ブロック内の数字や文章は、クリックして変更できます。以下の角括弧[ ]は入力欄、丸括弧(答え)は「調べる」カテゴリのブロック、山括弧〈 〉は条件を表しています。

以下の文字列を貼り付けても、Scratchのブロックには変換されません。組み方の見本として読み、Scratchの編集画面でブロックをドラッグして組み合わせてください。

5. まずは質問して、返事を表示しよう

最初に、次の3つを上から順につなぎます。

緑の旗が押されたとき
[こんにちは、と入力してね]と聞いて待つ
[こんにちは!会えてうれしいよ。]と[2]秒言う
  1. 「イベント」から「緑の旗が押されたとき」を置きます。
  2. 「調べる」から「〜と聞いて待つ」をつなぎ、質問の文章を入力します。
  3. 「見た目」から「〜と2秒言う」をつなぎ、返事の文章を入力します。
  4. ステージ上部の緑の旗を押します。
  5. 入力欄に「こんにちは」と入力し、Enterキーまたはチェックマークで確定します。

ネコが返事を表示すれば、質問と返事の基本ができました。ただし、この段階では何を入力しても同じ返事になります。

6. 入力した言葉で返事を変えよう

次に、入力された言葉が「こんにちは」かどうかを調べます。先ほどのプログラムを、次の形に組み替えてください。

緑の旗が押されたとき
[何か話しかけてね]と聞いて待つ
もし〈(答え)=[こんにちは]〉なら
    [こんにちは!会えてうれしいよ。]と[2]秒言う
でなければ
    [その言葉はまだわからないよ。]と[2]秒言う

条件部分の作り方は次のとおりです。

  1. 「制御」の「もし〜なら/でなければ」を、質問ブロックの下につなぎます。
  2. 「演算」の「=」ブロックを、六角形の条件欄に入れます。
  3. 「=」の左側に、「調べる」の「答え」ブロックを入れます。
  4. 右側には「こんにちは」と入力します。
  5. 「なら」の内側と「でなければ」の内側に、それぞれ返事のブロックを入れます。

「こんにちは」と入力した場合と、「おはよう」と入力した場合で返事が変わるか確認しましょう。

7. 会話を繰り返す完成版を作ろう

最後に、返事の種類を増やし、「さようなら」と入力するまで会話を続けます。

練習用に作ったプログラムを、次の完成版に組み替えてください。同じネコに、緑の旗で始まる練習用プログラムを複数残すと、質問が重なることがあります。

緑の旗が押されたとき
[こんにちは・名前は・遊ぼう、のどれかを入力してね。終了は「さようなら」]と聞いて待つ

〈(答え)=[さようなら]〉まで繰り返す
    もし〈(答え)=[こんにちは]〉なら
        [こんにちは!会えてうれしいよ。]と[2]秒言う
    でなければ
        もし〈(答え)=[名前は]〉なら
            [ぼくはスクラッチねこだよ。]と[2]秒言う
        でなければ
            もし〈(答え)=[遊ぼう]〉なら
                [いいよ!次はクイズゲームを作ってみよう。]と[2]秒言う
            でなければ
                [その言葉はまだわからないよ。]と[2]秒言う

    [次は何を話す? 終了するときは「さようなら」と入力してね]と聞いて待つ

[また遊ぼうね!]と[2]秒言う

完成版を組むときのポイント

  • 最初の質問は、「〜まで繰り返す」の外側、すぐ上に置きます。
  • 「名前は」を調べる条件分岐は、「こんにちは」の「でなければ」の内側に入れます。
  • 「遊ぼう」を調べる条件分岐は、「名前は」の「でなければ」の内側に入れます。
  • 「次は何を話す?」という質問は、すべての条件分岐の下で、繰り返しブロックの内側に置きます。
  • 最後の「また遊ぼうね!」は、繰り返しブロックの外側、下に置きます。

なぜ最初に質問するの?

「答え」ブロックには、最後の質問で入力された内容が入ります。最初に質問して今回の入力を受け取ってから、終了するかどうかを判断します。

最初から「さようなら」と入力した場合は、繰り返しの中に入らず、最後の挨拶を表示します。それ以外の言葉なら返事をし、次の入力を待ちます。

8. 動作確認をしよう

次の順に入力して、返事を確認してください。

操作・入力確認すること
緑の旗を押す最初の質問と入力欄が出る
こんにちは挨拶を返し、次の質問が出る
名前はネコの名前を返す
遊ぼうクイズゲームを作る提案を返す
おはようまだわからない、と返す
さようなら最後の挨拶をして、次の質問は出ない
もう一度、緑の旗を押す最初から質問が始まる

9. うまく動かないときの確認方法

入力しても先へ進まない

文字の入力後に、Enterキーまたは入力欄のチェックマークで確定してください。「〜と聞いて待つ」は、入力を確定するまで次の処理へ進みません。

決めた言葉を入力しても、違う返事になる

「こんにちは」と「こんにちは!」は別の入力です。余分な空白や記号がないか、条件に設定した文字と見比べてください。また、「答え」を文字で入力するのではなく、水色の「答え」ブロックを使っているか確認しましょう。

最初の1回しか会話できない

次の質問をするブロックが、「〜まで繰り返す」の内側に入っているか確認してください。

同じ返事を繰り返し続ける

繰り返しの最後に「次は何を話す?」という質問を置いてください。質問がなければ「答え」が更新されず、同じ内容を判定し続けます。

質問が重なったり、想定と違う順番で動いたりする

同じスプライトや別のスプライトに、練習用の質問プログラムが残っていないか確認してください。まずは、この完成版のプログラムだけで動かしてみましょう。

10. 会話ゲームと生成AIの違い

今回のプログラムは、人が用意した条件と返事を組み合わせる「ルールベース」の会話です。入力した内容を学習したり、自由に文章を作ったりする仕組みはありません。

一方、生成AIを使った会話では、モデルが入力に応じた文章を生成します。そのような会話をScratch系の環境で実現するには、利用する外部サービスや接続方法を別途選び、対応状況や費用を確認する必要があります。

APIキーを用意するだけで、今回のブロックが生成AIにつながるわけではありません。また、外部サービスの秘密のキーを、公開する作品や説明欄へ書き込まないでください。

11. 自分だけの会話に変えてみよう

基本が動いたら、条件の言葉と返事を変えてみましょう。

  • 「好きな食べ物」と入力すると、「魚が好きだよ」と返す。
  • 「ヒント」と入力すると、ゲーム攻略のヒントを返す。
  • 「問題」と入力すると、「日本の首都は?」と質問を返す。

まずは条件を1つだけ追加し、動作確認してから次を増やすと、間違いを見つけやすくなります。新しい条件は、最後の「その言葉はまだわからないよ」と返す部分に、もう1つ「もし〜なら/でなければ」を入れて追加できます。

ただし、返事として質問文を表示するだけでは、クイズの正解判定までは行いません。クイズに発展させる場合は、回答を受け取る質問ブロックと、正解を調べる条件分岐も追加しましょう。

12. 作品を保存しよう

作品に分かりやすい名前を付け、ファイルメニューから「コンピューターに保存する」を選びます。保存したScratchの作品ファイルは、後から読み込んで続きを編集できます。

オンラインで共有する場合は、サインインし、アカウントの共有条件を満たしたうえで操作してください。公開前には、作品や説明文に個人情報が入っていないか確認しましょう。

まとめ

Scratchの「聞いて待つ」「答え」「もし〜なら/でなければ」を組み合わせると、入力した言葉で返事が変わる会話ゲームを作れます。「〜まで繰り返す」を使えば、終了の言葉を入力するまで会話を続けられます。

まずは3種類の言葉に返事をするところから始め、動作を確認しながら、好きな会話を追加してみてください。

参考資料

コメント

タイトルとURLをコピーしました