【Scratch 3.0】計算ゲーム 答えをキーボードから入力する方法(Tips)

スポンサーリンク
計算ゲーム 答えをキーボードから入力する方法_m

今回は、コンピューターが四則演算(+-×÷)の問題文を出すので、ユーザーがキーボードから入力した答えをコンピューターが正誤判定するプログラムを作っていきます。

この記事ではキーボードから入力した値(数字・文字)をプログラムの中であつかう方法が分かります。

完成品

完成した動き

「問題」と書かれたボタンを押すたびにネコが問題文を読み上げます。問題文は「足し算・引き算・かけ算・割り算」の4種類のいずれかです。

ステージ下のほうにキーボードからの入力を受けつける「入力ボックス」が表示されるので、キーボードから答えを入力して、Enterキーを押すか入力ボックス右側のチェックマークをクリックします。

答えが合っていれば、ネコが「せいかい!」としゃべり、間違っていれば「ざんねん!」と言ったあと正解を教えてくれます。

下の画像リンクをクリックすると、Scratchサイトで実際に操作できます。
計算ゲーム 答えをキーボードから入力する方法-完成-GIFアニメ
計算ゲーム

使用したスプライト

スプライトは「ネコ」と「ボタン」の2つです。

いずれのスプライトもScratchにあらかじめ用意されているキャラクターを呼び出して使用しています。

【ボタンのスプライト】

「親ペンギン」が掘るための穴をコスチュームで用意します。

完成したスクリプト

完成したスクリプトの全体です。

【ネコのスクリプト】

使用している変数「パターン」は「すべてのスプライト用」でつくっています。また、変数「X」「Y」も「すべてのスプライト用」でつくっていますが「このスプライトのみ」でつくってもOKです。

変数
  • パターン:すべてのスプライト用
  • X:すべてのスプライト用 or このスプライトのみ
  • Y:すべてのスプライト用 or このスプライトのみ

【ボタンのスクリプト】

スクリプトの作り方

ここからはプログラムを作っていく中でポイントとなる部分を説明します。

ポイント①:四則演算(+ – * /)の記号を理解する

学校で習う四則演算の記号は「+-×÷」ですが、プログラムを行うときに使う記号はそれぞれ「+-*/」の記号を使うことになっています。このことは、ほとんどすべてのプログラミング言語で共通の記号です。

スクラッチのブロックでいうと演算カテゴリーにある下の図の4つのブロックを使います。

ただし、引き算だけは注意が必要で、「/(スラッシュ)」の記号を使って計算すると、割り切れない結果は小数点数字で返ってきます。(下図参照:10÷3=3.3333333・・・(途中で丸める))

つまり、このブロックだけだと割り算の「商」と「余り」を求めることはできません。

割り算の「商」と「余り」を求める場合は、下の図のように個別にブロックをつくる必要があります。

なお、足し算・引き算・かけ算のブロックではこのような心配はないのでそのまま使うだけでOKです。


今回つくったプログラムでは、変数「X」と「Y」それぞれに毎回異なる「1~100までの乱数」をセットするようにしてから計算させているので下の図の形になります。

【ネコ】のスクリプト

ポイント②:キーボードからの入力を受け付ける方法

スクラッチのプログラムでキーボードからの入力を受け付ける方法は「~と聞いて待つ」ブロックを使うしかありません。

「~と聞いて待つ」ブロックについて、Scratchウィキには以下のように記載されています。

() と聞いて待つブロック(調べるブロック/スタックブロック)とは、指定した文章とともに、画面の下の方に入力ボックスを表示するブロックである。ユーザーが文字を入力してEnterキーを押す、または、チェックマークをクリックすると、その内容が(答え)ブロックに入る。もう一度、このブロックを使用すると、(答え)ブロックの中身は、後から入力された内容に自動的に書き換わる。このブロックと答えブロックはScratch 1.4以降で導入されたため、それ以前のバージョンでは使用できない。

Scratch wiki-()と聞いて待つブロック

キーボードから入力された値は「~と聞いて待つ」ブロックのすぐ下にある「答え」ブロックに自動的に入るようになっています。(下図参照)

この「~と聞いて待つ」ブロックを使うと、指定した文章を表示するとともに画面下のほうにテキスト入力ボックスが表示されます。

そしてEnterキーを押すか、右側のチェックマークをクリックすると「答え」ブロックに値が入ります。
何も入力しないでチェックマークをクリックすると「答え」ブロックの中身も空っぽになります。


今回つくったプログラムでは計算する数字が毎回異なるので、下の図のように変数「X」「Y」と文字列を組み合わせて文章をつくっています。

【ネコ】のスクリプト

ポイント③:キーボードから入力された値を判定する

ポイント②でも説明しましたが、キーボードから入力された値は自動的に「答え」ブロックの中に入ります。

その「答え」ブロックの中身が正しいか誤りかを下の図のようにブロックを組んで判定すれば良いわけです。

なお、「X+Y」などの計算の結果を変数に代入してから「答え」と比較する必要はありません(しても問題ありませんが)。コンピューターは「X+Y」のブロックで計算された結果を(プログラムを終了するまで)メモリに保持しているので、保持している結果を次の計算に使うことができます。

【ネコ】のスクリプト

ここまでのポイントを押さえてスクリプトを作ることができたら完成です!

失敗しやすいポイント

失敗しやすいポイントは特にありません。

応用編

キーボードの入力ボックスをキャンセルする方法

キーボードからの入力を待っているときに、いつまで経っても入力されないことがあるかもしれません。

そのようなときは入力待ちをキャンセルして、次の処理に移ってしまった方が良い場合があります。そんなときに使えるテクニックがあります。

たとえば、5秒後に入力待ちをキャンセルする場合は下の図のようなスクリプトを追加します。5秒経過すると、プログラムが停止するので入力待ちもキャンセルされます。

【ネコ】のスクリプト
計算ゲーム 答えをキーボードから入力する方法-応用1-GIFアニメ
計算ゲーム(応用)-入力待ちをキャンセルする

もし、特定のスクリプトだけを止めたい場合は「このスクリプトを止める」に変更するなどの工夫で対応できます。

入力された値が数字か文字列かを判別する方法

今回のように計算ゲームであれば、キーボードから入力される値は数字でないと困ります。逆に文章を入力してほしい場合は数字だけだと困ったことになります。

そこで、キーボードから入力された値が数値なのか文字列なのか判別する方法について紹介します。

下の図のブロックの組み合わせをそのまま使って条件に組み込みます。この条件を満たす場合、文字列と判定します。

下図に「足し算」定義ブロックの例を示しますが、これをその他の演算の定義ブロックにも同様に追加します。

【ネコ】のスクリプト

どのようなロジックかというと、下記のPointに記載した特性を利用しています。

Scratchでは、変数に文字列が入っているとき、「変数+数字」などの計算を行おうとすると変数の値は0とみなされる。

これを利用すると、「答え」に文字列が入っている場合、「答え=0」の部分はFalseになりますが「漢ではない」ブロックで否定するのでTrueとなり、「1+答え=1」はTrueになり、全体としてはTrueになって条件が成立します。

逆に「答え」に数値0が入っている場合、「(答え=0)ではない」の部分はFalseになり、「1+答え=1」はTrueになり、全体としてはFalseになります。一方で「答え」に数値0以外が入っている場合、「(答え=0)ではない」の部分はTrueになり、「1+答え=1」はFalseになり、全体としてはFalseになります。

このように「答え」に文字列が入っている場合はTrueに、数値が入っている場合はFalseになるように出来ています。

計算ゲーム 答えをキーボードから入力する方法-応用2-GIFアニメ
計算ゲーム(応用)-文字と数字を判別する

まとめ

さいごに、今回の記事で説明した『計算ゲームなどでキーボードから答えを入力する方法』についてのポイントをまとめます。

  • ポイント①:四則演算(+ – * /)の記号を理解する(割り算に注意)
  • ポイント②:キーボードからの入力を受け付ける方法(「~と聞いて待つ」ブロック)
  • ポイント③:キーボードから入力された値を判定する

この記事が『よかった/役に立った』と思ったら、左下のGoodボタンを押していただけると嬉しいです。

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