【Scratch】<入門編>3-2 足し算・引き算ゲームを作ろう!(変数/演算/乱数)

・足し算や引き算のゲームの作り方
・演算/乱数の使い方
・変数と文字、複数の文字列のつなげ方 など
こんにちは、Anksです。今回もみなさまよろしくおねがいします。
前回 <入門編>3-1 りんごを数えてもらおう!(変数/クローン/メッセージ)に引き続き、
変数を使いながら、足し算や引き算のゲームを作っていきたいと思います!
今回、完成させるプロジェクトはこちらになります。(効果音があります)
旗のボタンでスタートすると、海の中にいるくらげ先生が1~9を使った足し算を次々と出題してきます。
正解すると「正解!」、不正解だと「ざんねん!正解は~(←答えの数)」と教えてくれるゲームです!
Anks
答えは数値なので半角で入力してください。
ランダムで出題されるので、何度でも足し算の練習ができますね。
ではさっそく、作っていきましょう!

○背景とスプライトの追加

今回は、背景を「Underwater 1」、スプライト「Jellyfish」を選んでみました。

【Scratch】スクラッチ 背景Underwater1 【Scratch】スクラッチ スプライトJellyfish

Jellyfishを真ん中(X=0、Y=0)に配置し、スプライト名は「くらげ先生」にしました。

いつものねこは今回ついに出番がないので、かわいそうですが削除しましょう。

【Scratch】スクラッチ スプライトの削除の仕方

削除は、スプライト選択の右上の【Scratch】スクラッチ ゴミ箱マークのボタンから行うことが出来ますよ。

背景とスプライト追加の設定後、以下のようになれば準備完了です。

【Scratch】スクラッチ Underwater1とJellyfish追加後

○足し算の変数を作る

次に、足し算をする数の変数を作っていきましょう。

作り方は覚えていますか?
前回のチャプターでは、作った変数は「りんごの数」の1つだけでしたが、
今回は足し算をするので2つの変数が必要ですね!

【Scratch】スクラッチ 新しい変数追加

今回は、それぞれ「数A」「数B」という名前で新しい変数を作りました。

この2つの変数を使って、

くらげ先生に、
「数A」+「数B」=?
と問題を出してもらえるようにすればいいのですが、

この「数A」と「数B」は色々な数字に変わってほしいですよね?

そんな時に使えるのが、「乱数」です。

○乱数の使い方

「乱数」というのは、一定の範囲内でのランダムな数のことです。

まずは、乱数のブロックを見てみましょう!「演算」欄の中にあります。

【Scratch】スクラッチ 乱数のブロック

このブロックを使うと、指定した範囲の中でランダムな数を作ってくれます。

 

例えば、もともと入力されている「1から10までの乱数」の場合は、

「1、2、3、4、5、6、7、8、9、10」のうちの1個になる、ということです。

Anks
なお、小数を出したい場合は、範囲に小数を入力する必要があります。
例)0.3から2.1、-1.0から5.0 など

今回は、一桁どうしの整数の足し算にしたいので、「1から9までの乱数」にすればよいですね。

【Scratch】スクラッチ 1から9まで(一桁)の乱数

これを、「数A」「数B」にセットすれば、毎回変わる数字にすることが出来そうです!

下のように、「数Aを0にする」ブロックの「0」の部分に、はめてみましょう。

【Scratch】スクラッチ 変数を乱数に設定する

「数Aを1から9までの乱数にする」ブロックを作ることができました!

数Bについても同様に作って、「ずっと」ブロックの中に配置しましょう。

【Scratch】スクラッチ 2つの変数を乱数に設定

これで、2つの変数「数A」「数B」を毎回ランダムな数に設定することができます。

次は、くらげ先生の出題のセリフ(「数A」+「数B」=?)の部分を作りましょう!

○変数と文字列のつなげ方

<入門編>2-1ねことお話ししよう!のチャプターで、
ねこに名前を聞いてもらい、

その答え(例:Anks)を使って、
「Anksさん、よろしくね!」とあいさつしてもらうプログラムを作ったのを覚えていますか?

【Scratch】スクラッチ 2つの文字列の結合

このケースでは、【Scratch】スクラッチ ~と~ブロックのブロックを使って、「答え」と「さん、よろしくね!」の2つを結合しました。

 

今回は、その応用編です。
変数と文字列についても同じように結合すれば良さそうですが、

例えば、数Aが3で、数Bが4のとき、「3+4=?」と聞いてもらうにはどうすればよいでしょうか?
分解すると、「数A」と「+」と「数B」と「=?」の4つをつなげる必要がありそうです。

 

そんな時には、下図のように、【Scratch】スクラッチ ~と~ブロックをいくつも使って合体させることで、複数の欄を作ることができます!

【Scratch】スクラッチ 文字列の結合 複数の欄の作り方

この4つの欄に、
それぞれ、「数A」「+」「数B」「=?」を入れてつなげれば、
足し算の問題文が完成です。

【Scratch】スクラッチ 足し算の問題文の作成

あとは、「~と聞いて待つ」のブロックに入れて配置しましょう。

【Scratch】スクラッチ 足し算の問題を繰り返すスクリプト

これで、何度もランダムで足し算の問題を出す部分のスクリプトは完成しました。

試しに旗のボタンを押してみてください。
無事、くらげ先生が問題を出してくれましたでしょうか?

【Scratch】スクラッチ くらげ先生の足し算出題画像

あとは、正解と不正解のときのリアクションの分岐を作っていきましょう!

○正解と不正解の分岐を作る

もし正解なら、くらげ先生が「正解!」と言い、
不正解(=つまり、正解でなければ)なら「ざんねん!正解は~」と言う、、、

これを実現するには、<入門編>2-3で練習したひよこの当たり判定と同じ、
「もし~なら、でなければ~」のブロックが使えそうです!

【Scratch】スクラッチ ひよこ 触れたら口を開いてセリフ
(<入門編>2-3で作ったひよこの当たり判定)

足し算に正解した、という条件はどのように表現すれば良いでしょうか?

言った「答え」が、
ちゃんと「数A」+「数B」(→つまり、正解の数)と等しくなっていればいいですね。

この「答え」=「数A」+「数B」という条件は、

「演算」欄の中の【Scratch】スクラッチ ~+~ブロック【Scratch】スクラッチ ~=~ブロックのブロックを組み合わせて、
以下のように表現することができます。

【Scratch】スクラッチ 足し算正解時の条件

この条件を「もし~なら、でなければ~」のブロックにはめて配置しましょう!

【Scratch】スクラッチ 正解不正解の条件分岐

あとは、それぞれ「セリフ」、「コスチューム」、「効果音」を設定していきます。

○セリフ

正解のときは、「正解!」と2秒言い、
不正解のときは「ざんねん!正解は~(←正解の数)」と2秒言うようにします。

正解の数は、先ほどと同じように「数A」+「数B」で表現できますね!
(紛らわしいですが、不正解の時は残念ながら「答え」が間違っているので、「答え」ブロックは正解の数として使えません)

【正解のとき】
【Scratch】スクラッチ 正解時のセリフ

【不正解のとき】
【Scratch】スクラッチ 不正解時のセリフ

それぞれのブロックを配置すると、以下のようになります。

【Scratch】スクラッチ 正解不正解のセリフ追加後

○コスチュームと効果音

最後に、正解、不正解に合わせたくらげ先生のコスチュームと効果音を設定しましょう。

今回のような動きの無いゲームでも、イラストの変化や効果音を付けることで演出を盛り上げることができます!

Anks
それぞれ以下のコスチュームと効果音を選んでみましたが、余裕があれば好みに合わせて変えてみてくださいね。

【正解のとき】
コスチューム:「jellyfish-d」、効果音:「Doorbell」
【Scratch】スクラッチ 正解のコスチューム(jellyfish-d)  【Scratch】スクラッチ 正解の効果音(Doorbell)

【不正解のとき】
コスチューム:「Jellyfish-b」、効果音:「Boing」
【Scratch】3-2スクラッチ 不正解のコスチューム(jellyfish-b)  【Scratch】スクラッチ 不正解の効果音(Boing)

 

それぞれブロックを配置して設定すると、以下のようになります。

注意点は、「~と2秒言う」よりも前に設置することと、
繰り返し最初の出題に戻る時に、元のコスチューム「jellyfish-a」になるようにすることです。

【Scratch】スクラッチ くらげ先生の足し算ゲーム完成スクリプト

コスチュームと効果音の設定が完了したら、くらげ先生の足し算ゲームは完成です!

旗のボタンでスタートしてみてうまく動いていますでしょうか??

変数と演算に関するブロックは、ゲーム作りに欠かせないものなので、
よく使うものから慣れていきましょう。

次回は、簡易的なタイマーやストップウォッチを作りながら、ゲームによくある時間制限の作り方について導入していきます!

なお、以下に引き算のパターンも概要を紹介しておきますので、もしよろしければご覧いただければと思います。
今回も、ありがとうございました。

→次回 <入門編>3-3 タイマーとストップウォッチを作ろう!(時間制限) に進む

○引き算ゲームの作り方

足し算ゲームと同じように、
くらげ先生が引き算の問題を出し続けるプロジェクトを紹介しておきます。

繰り下がりのある引き算(例:17-8=9 など)も含めて、
正解が必ず一桁(1~9)になる問題がランダムに出題されるので、何度も引き算の練習ができます!

完成後のスクリプトはこちらです。

【Scratch】スクラッチ くらげ先生の引き算ゲーム完成スクリプト

赤い矢印の部分が、足し算のパターンと差し替えられたブロックです。

ポイントは、①の部分になります。

引き算の場合、数Aの範囲が9より大きくなってしまう(最大が、18-9=9のときの18)ので、
順番を変えて、まず数Bの乱数1~9を作ります。

そのあとで、「数A」を「数Bより1大きい数」から「数Bより9大きい数」の間の乱数にすることで、
引き算(数A-数B)の正解を必ず1~9にすることが出来る、というわけです。

【Scratch】スクラッチ 引かれる数の乱数の設定

残りの差し替えられた箇所(②~④)は、すべて足し算の式(数A+数B)を引き算の式(数A-数B)に変えたものになります。

 

このようにいくつかのブロックの差し替えで、引き算のケースも作ることができます。

掛け算の場合は、足し算の「+」の部分をすべて「×」に変えればいいだけなので、引き算よりも簡単に作ることができますので、よろしければお試しください。

→次回 <入門編>3-3 タイマーとストップウォッチを作ろう!(時間制限) に進む