提供: Japanese Scratch-Wiki
() と聞いて待つ | |
[あなたの名前は何ですか?] と聞いて待つ
| |
カテゴリ | 調べる |
タイプ | スタック |
追加 | Scratch 1.4 |

Scratchキャットが質問中
() と聞いて待つブロック(調べるブロック/スタックブロック)は、画面の下のほうに指定した文章と入力ボックスを表示するブロックである。ユーザーが文字を入力してEnterキーを押す、または、チェックマークをクリックすると、その内容が答えブロックに入る。もう一度、このブロックを使用すると、答えブロックの中身は、後から入力された内容に自動的に書き換わる。
このブロックと答えブロックはScratch 1.4以降で導入されたため、それ以前のバージョンでは使用できない。
使用例
このブロックを使うとユーザーが好きなテキストを入力できるため、ユーザーとのやりとりが必要なプロジェクトでは広く使用されている。 次によくある使用例を示す:
- チャットボット(おしゃべりロボット) — ユーザーからの情報を受け取る
[あなたの名前は?] と聞いて待つ ([こんにちは、] と ((答え) と [!]))と言う
- ユーザーに設定させる — 座標、色など
[どの色がよいですか?] と聞いて待つ [色 v] の効果を (答え) にする
- 入力を受け取る — ユーザーに命令してもらう
[何歩、移動しましょうか?] と聞いて待つ (答え) 歩動かす
別のブロックによる表現
- 詳細は「代用ブロック一覧」を参照
入力する内容がアルファベットの場合、このブロックの動作に近いものが、次のコードで再現できる。
調べるブロックを使う方法
(質問)と言う (すべて v) 番目を[答え v] から削除する [カウンター v] を [0]にする <<[マウスのポインター v]に触れた> かつ <マウスが押された>>まで繰り返す もし <[a v] キーが押された> なら [カウンター v] を (1)ずつ変える [A] を (カウンター) 番目に挿入する([答え v]) end もし <[b v] キーが押された> なら [カウンター v] を (1)ずつ変える [B] を (カウンター) 番目に挿入する([答え v]) end もし <[c v] キーが押された> なら [カウンター v] を (1)ずつ変える [C] を (カウンター) 番目に挿入する([答え v]) end もし <[d v] キーが押された> なら [カウンター v] を (1)ずつ変える [D] を (カウンター) 番目に挿入する([答え v]) end もし <[e v] キーが押された> なら [カウンター v] を (1)ずつ変える [E] を (カウンター) 番目に挿入する([答え v]) end もし <[f v] キーが押された> なら [カウンター v] を (1)ずつ変える [F] を (カウンター) 番目に挿入する([答え v]) end もし <[g v] キーが押された> なら [カウンター v] を (1)ずつ変える [G] を (カウンター) 番目に挿入する([答え v]) end もし <[h v] キーが押された> なら [カウンター v] を (1)ずつ変える [H] を (カウンター) 番目に挿入する([答え v]) end もし <[i v] キーが押された> なら [カウンター v] を (1)ずつ変える [I] を (カウンター) 番目に挿入する([答え v]) end もし <[j v] キーが押された> なら [カウンター v] を (1)ずつ変える [j] を (カウンター) 番目に挿入する([答え v]) end もし <[k v] キーが押された> なら [カウンター v] を (1)ずつ変える [K] を (カウンター) 番目に挿入する([答え v]) end もし <[l v] キーが押された> なら [カウンター v] を (1)ずつ変える [L] を (カウンター) 番目に挿入する([答え v]) end もし <[m v] キーが押された> なら [カウンター v] を (1)ずつ変える [M] を (カウンター) 番目に挿入する([答え v]) end もし <[n v] キーが押された> なら [カウンター v] を (1)ずつ変える [N] を (カウンター) 番目に挿入する([答え v]) end もし <[o v] キーが押された> なら [カウンター v] を (1)ずつ変える [O] を (カウンター) 番目に挿入する([答え v]) end もし <[p v] キーが押された> なら [カウンター v] を (1)ずつ変える [P] を (カウンター) 番目に挿入する([答え v]) end もし <[q v] キーが押された> なら [カウンター v] を (1)ずつ変える [Q] を (カウンター) 番目に挿入する([答え v]) end もし <[r v] キーが押された> なら [カウンター v] を (1)ずつ変える [R] を (カウンター) 番目に挿入する([答え v]) end もし <[s v] キーが押された> なら [カウンター v] を (1)ずつ変える [S] を (カウンター) 番目に挿入する([答え v]) end もし <[t v] キーが押された> なら [カウンター v] を (1)ずつ変える [T] を (カウンター) 番目に挿入する([答え v]) end もし <[u v] キーが押された> なら [カウンター v] を (1)ずつ変える [U] を (カウンター) 番目に挿入する([答え v]) end もし <[v v] キーが押された> なら [カウンター v] を (1)ずつ変える [V] を (カウンター) 番目に挿入する([答え v]) end もし <[w v] キーが押された> なら [カウンター v] を (1)ずつ変える [W] を (カウンター) 番目に挿入する([答え v]) end もし <[x v] キーが押された> なら [カウンター v] を (1)ずつ変える [X] を (カウンター) 番目に挿入する([答え v]) end もし <[y v] キーが押された> なら [カウンター v] を (1)ずつ変える [Y] を (カウンター) 番目に挿入する([答え v]) end もし <[z v] キーが押された> なら [カウンター v] を (1)ずつ変える [Z] を (カウンター) 番目に挿入する([答え v]) end もし <[0 v] キーが押された> なら [カウンター v] を (1)ずつ変える [0] を (カウンター) 番目に挿入する([答え v]) end もし <[1 v] キーが押された> なら [カウンター v] を (1)ずつ変える [1] を (カウンター) 番目に挿入する([答え v]) end もし <[2 v] キーが押された> なら [カウンター v] を (1)ずつ変える [2] を (カウンター) 番目に挿入する([答え v]) end もし <[3 v] キーが押された> なら [カウンター v] を (1)ずつ変える [3] を (カウンター) 番目に挿入する([答え v]) end もし <[4 v] キーが押された> なら [カウンター v] を (1)ずつ変える [4] を (カウンター) 番目に挿入する([答え v]) end もし <[5 v] キーが押された> なら [カウンター v] を (1)ずつ変える [5] を (カウンター) 番目に挿入する([答え v]) end もし <[6 v] キーが押された> なら [カウンター v] を (1)ずつ変える [6] を (カウンター) 番目に挿入する([答え v]) end もし <[7 v] キーが押された> なら [カウンター v] を (1)ずつ変える [7] を (カウンター) 番目に挿入する([答え v]) end もし <[8 v] キーが押された> なら [カウンター v] を (1)ずつ変える [8] を (カウンター) 番目に挿入する([答え v]) end もし <[9 v] キーが押された> なら [カウンター v] を (1)ずつ変える [9] を (カウンター) 番目に挿入する([答え v]) end もし <[右向き矢印 v] キーが押された> なら [カウンター v] を (1)ずつ変える end もし <[左向き矢印 v] キーが押された> なら [カウンター v] を (-1)ずつ変える end もし <[スペース v] キーが押された> なら [カウンター v] を (1)ずつ変える [ ] を (カウンター) 番目に挿入する([答え v]) end (0.001) 秒待つ end [] と言う
ここでは、リスト 「答え」が 答えブロックの代わりとなっている。
ハットブロックを使う方法
次の方法を使うと、キーが押された順番に入力が取得される(こちらも日本語には対応していない)
[a v] キーが押されたとき [a] を [キュー v]に追加する [b v] キーが押されたとき [b] を [キュー v]に追加する [c v] キーが押されたとき [c] を [キュー v]に追加する //同じように、すべてのキーについて追加する [左向き矢印 v] キーが押されたとき (最後 v) 番目を [キュー v] から削除する// バックスペース機能 @ がクリックされたとき (すべて v) 番目を [キュー v]から削除する <[右向き矢印 v] キーが押された> まで待つ// この動作でユーザーの入力終了とする [答え用の変数 v] を []にする //空にする [n v] を [1]にする ([キュー v]の長さ) 回繰り返す// リストの内容を1つの文章につなげる [答え用の変数 v] を ( (答え用の変数) と ((n) 番目\([キュー v]\)))にする [n v] を (1)ずつ変える end (答え用の変数) // これが答えになる
入力ボックスをキャンセルする
一度表示した入力ボックスを消す(キャンセルする)もっとも手っ取り早い方法は、すべてを止めるブロックを使用する方法である。キャンセルした後もスクリプトの実行を継続したいときは、[タイマー v] > () のときブロックを使うとよい。
指定した秒数待っても「答え」が入力されない場合、キャンセルボタンが押された場合に入力ボックスをキャンセルするには、次のようにすれば良い。
@ がクリックされたとき [変数 v] を [0] にする [変数 v] を [1]にする タイマーをリセット [すべて v] を止める // このブロックが実行された瞬間にテキストボックスが消えるので、テキストボックスを消したい場所にこれを置く [タイマー v] > (0.1)のとき もし <(変数) = [0]> なら [このスクリプト v]を止める end ... // 通常通り、処理がつづけられる
実践的な使用例は、こちらを参照
参照
() に触れた • () 色に触れた • () 色が () 色に触れた • () までの距離 • () と聞いて待つ • 答え • () キーが押された • マウスが押された • マウスのx座標 • マウスのy座標 • 音量 • タイマー • タイマーをリセット • ドラッグ () ようにする • () の () • 現在の () • 2000年からの日数 • ユーザー名•うるさいその他のブロック
|