Scratchで名前とか数値をユーザーに入力してもらう方法はあるかな?あと、ユーザーに入力してもらうときの注意点はあるかな?注意点があるなら回避方法を教えてほしいな?
こんな疑問にお答えします。
- Scratchでユーザーに入力してもらう方法を解説
- ユーザーに数字を入力してもらうときの注意点
- ユーザーに半角で数字を入力してもらう方法
ユーザーに入力してもらえるようになればキャラクターの名前をユーザに決めてもらえたり、生年月日をもとに占いプログラムを作ったりできますよ。
そんな私は大手メーカーでソフトウェアエンジニアを6年以上経験していまして、バリバリプログラムを書いていました。
この私が解説します。
Scratchでユーザーに入力してもらう方法を解説
使用ブロック:◯◯と聞いて待つ
Scratchでユーザーに名前や数値を入力してもらうには「◯◯と聞いて待つ」ブロックを使用します。
これだけだとイメージが湧かないと思うので実際にプログラムを作りながら解説しますね。
「◯◯と聞いて待つ」ブロックの使い方
例えば、名前を聞いて、答えてもらった(入力してもらった)名前を表示するプログラムを作るとしましょう。
このプログラムを作るときの考え方は次のとおりです。
- 「あなたはだぁれ?」と表示し、名前の入力を促す
- キーボードから入力された名前が変数「答え」に入る
- 変数「答え」の値を表示する
こんな感じです。1.の箇所で「◯◯と聞いて待つ」ブロックを使用します。
具体的にScratchで作ったプログラムは次のとおりです。たった3行です。
順番に解説しますね。
1.「あなたはだぁれ?」と表示し、名前の入力を促す
2.キーボードから入力された名前が変数「答え」に入る
3.変数「答え」の値を表示する
上記の通りです。
これがScratchでユーザに入力してもらう「◯◯と聞いて待つ」ブロックの使用方法です。
ユーザーに数字を入力してもらうときの注意点
半角と全角を区別する
この「◯◯と聞いて待つ」ブロックで数字を入力するときは半角と全角を区別しないといけません。
なぜなら、全角で数字を入力すると文字として扱われるからです。
そもそもプログラム上の数字には大きく2種類あります。
- 数値としての数字・・・例:半角の「3」
- 文字としての数字・・・例:全角の「3」
違いは足し算や引き算ができるかどうかだと思ってもらえればいいです。
例えば、「半角で3」と入力すると数値として扱われるので
などの計算ができます。
一方、「全角で3」と入力すると文字として扱われるので
は計算できません。
具体例で検証
具体的に、キーボードから入力された2つの数字の和を表示するプログラムで検証しましょう。
半角で数字を入力する例
1つ目の数字を半角で入力します。
2つ目の数字を半角で入力します。
そうすると正しく計算できます。
全角で数字を入力する例
1つ目の数字を全角で入力します。
2つ目の数字を全角で入力します。
ここは文字どうしの足し算をしようとして正しく計算できず、0と表示されます。
以上のように「◯◯と聞いて待つ」ブロックで数字を入力するときは、正しくプログラムを動作させるために半角と全角を区別しないといけません。
ユーザーに半角で数字を入力してもらう方法
では、ユーザーに半角で数字を入力してもらうにはどうしたらいいでしょうか?
半角と全角がわかっているユーザーばかりとは限りませんので、ちゃんと数値としての数字を入力してもらうようにプログラムを作る必要があります。
その方法を具体的に解説します。
文字として数字が入力されたら、再入力を促す
方法の一つとして「文字として数字が入力されたら、再入力を促す」ことが考えられます。
このようなプログラムを作るときの考え方は次のとおりです。
- 1.数字の入力を促す
- 2.入力された数字が半角かどうか判定する
- 3-A.半角の場合は次の処理に進む
- 3-B.全角の場合は再入力を促す
上記の通りです。
先ほどと同じでキーボードから入力された2つの数字の和を表示するプログラムを例に実際に作ったプログラムを解説します。
そのプログラムがこちらです。
ちょっと複雑ですよね。順番に解説します。
最初の「〇〇まで繰り返す」部分は「半角の数値が入力されるまで繰り返す」ための処理です。
その条件として次の条件式を設定しています。
全角の数字(文字としての数値)は数値の0として扱われるので「1+答え=1」が成り立ちます。
ですが、答えが半角の0(数値としての0)のときも成り立ってしまうのでそれを除外するために「かつ 答え=0ではない」としています。
つまり、「1+答え=1 かつ 答え=0ではない」は全角の数字(文字としての数字)という意味です。
なので、「(1+答え=1 かつ 答え=0ではない)ではない = 全角の数字ではない = 半角の数字」です。
なので、最初の「〇〇まで繰り返す」部分は「半角の数値が入力されるまで繰り返す」ための処理です。
これで、全角の数字が入力されても半角の数字の入力を促し続けられるのでプログラムを正しく動作させる事ができます。
一応、プログラムを実行してみるとこんな感じです。
1つ目の数の入力が求められます。ここで「全角の数字」を入力してみます。
すると、半角での入力を促してくれました!
念のためにもう一度全角の数字を入力します。
またちゃんと半角での入力を促してくれました。
あとは半角の数字を入力して正しく計算できることを確認すればOKです!
以上が、文字として数字が入力されたら再入力を促す方法です。
まとめ
本記事のおさらいです。
- ユーザーに名前や数値を入力してもらうには「◯◯と聞いて待つ」ブロックを使用する
- 「◯◯と聞いて待つ」ブロックで数字を入力するときは半角と全角を区別する必要がある
- もし、文字として数字が入力されたら、再入力を促す
上記の通りです。
プログラム例にも登場しましたが、「◯◯と聞いて待つ」ブロックを使うときには変数の利用が欠かせません。
変数の解説はこちらの記事をご覧ください。
Scratchの「変数」とは?考え方から使い方まで丁寧に解説
また、その他のScratchに関する解説は下記の記事をご覧ください。使い方だけでなく本質がわかるように解説しています。
では、Scratchを楽しんでください(^_^)/~