提供: Japanese Scratch-Wiki

(ページの作成:「()と聞いて待つブロックとは、調べるブロックの一種である。 ---- このブロックを使うと、()の中に入っている文字列を()と言...」)
 
(もとからあったものに、翻訳版をマージしました。)
1行目: 1行目:
()と聞いて待つブロックとは、調べるブロックの一種である。
+
{{ブロック
 +
|name = () と聞いて待つ
 +
|image = File:2.0 () と聞いて待つ.png
 +
|category = [[調べるブロック|調べる]]
 +
|type = [[スタックブロック|スタック]]
 +
|added = [[1.4]]
 +
}}
 +
[[File:Ask bar.png|thumb|300px|The [[スクラッチキャット]] が質問中]]
 +
'''() と聞いて待つ''' [[ブロック]]([[調べるブロック]]/[[スタックブロック]])は、画面の下のほうに指定した文章と入力ボックスを表示するブロックである。ユーザーが文字を入力してEnterキーを押す、または、チェックマークをクリックすると、その内容が[[答え (ブロック)|答え]]ブロックに入る。もう一度、このブロックを使用すると、答えブロックの中身は、後から入力された内容に自動的に書き換わる。
  
----
+
このブロックと[[答え (ブロック)|答え]]ブロックは[[Scratch]] 1.4以降で導入されたため、それ以前のバージョンでは使用できない。
このブロックを使うと、()の中に入っている文字列を()と言うブロックの様に読み上げる。
+
 
また、下に文字列を入れる欄が現れる。
+
==使用例==
enterキーを押す、又は一番右のチェックマークをクリックすることでそこに入れた文字列を、答えブロックで求められる答えという変数に入る。
+
このブロックを使うとユーザーが好きなテキストを入力できるため、ユーザーとのやりとりが必要な[[プロジェクト]]では広く使用されている。
 +
次によくある使用例を示す:
 +
 
 +
*チャットボット(おしゃべりロボット) {{-}} ユーザーからの情報を受け取る
 +
 
 +
<scratchblocks> [あなたの名前は?] と聞いて待つ
 +
([こんにちは、] と ((答え) と [!]))と言う</scratchblocks>
 +
 
 +
*ユーザーに設定させる {{-}} 座標、色など
 +
 
 +
<scratchblocks> [どの色がよいですか?] と聞いて待つ
 +
[色 v] の効果を (答え) にする</scratchblocks>
 +
 
 +
*入力を受け取る {{-}} ユーザーに命令してもらう
 +
 
 +
<scratchblocks>[何歩、移動しましょうか?] と聞いて待つ
 +
(答え) 歩動かす</scratchblocks>
 +
 
 +
==別のブロックによる表現==
 +
{{メイン|代用ブロック一覧}}
 +
入力する内容がアルファベットの場合、このブロックの動作に近いものが、次のコードで再現できる。
 +
 
 +
===調べるブロックを使う方法===
 +
<scratchblocks> (質問)と言う
 +
(すべて 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
 +
[]と言う</scratchblocks>
 +
 
 +
{{note|このスクリプトは完璧ではない。くわしくは [http://scratch.mit.edu/projects/scimonster/1677417 このプロジェクト] を参照}}
 +
ここでは、[[リスト]] 「答え」が [[答え (ブロック)|答えブロック]]の代わりとなっている。
 +
 
 +
===ハットブロックを使う方法===
 +
次の方法を使うと、キーが押された順番に入力が取得される(こちらも日本語には対応していない)
 +
 
 +
<scratchblocks>
 +
[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
 +
 
 +
(答え用の変数) // これが答えになる
 +
</scratchblocks>
 +
 
 +
==入力ボックスをキャンセルする==
 +
一度表示した入力ボックスを消す(キャンセルする)もっとも手っ取り早い方法は、 [[() を止める (ブロック)|すべてを止める]]ブロックを使用する方法である。キャンセルした後もスクリプトの実行を継続したいときは、 [[() > ()のとき (block) | [タイマー v]  > () のとき]]ブロックを使うとよい。
 +
 
 +
指定した秒数待っても「答え」が入力されない場合、キャンセルボタンが押された場合に入力ボックスをキャンセルするには、次のようにすれば良い。
 +
 
 +
<scratchblocks>
 +
@ がクリックされたとき
 +
[変数 v] を [0] にする
 +
 
 +
[変数 v] を [1]にする
 +
タイマーをリセット
 +
[すべて v] を止める // このブロックが実行された瞬間にテキストボックス消えるので、テキストボックスを消したい場所にこれを置く
 +
 
 +
[タイマー v] > (0.1)のとき
 +
もし<(変数) = [0]> なら
 +
[このスクリプト v]を止める
 +
end
 +
... // 通常通り、処理がつづけられる
 +
</scratchblocks>
 +
実践的な使用例は、[https://scratch.mit.edu/projects/114493995/ こちら]を参照
 +
 
 +
==参照==
 +
*[[答え (ブロック)]]
 +
*[[答え (値)]]
 +
{{調べるブロック}}
 +
 
 +
[[カテゴリ:調べるブロック]]
 +
[[de:Frage () und warte (Block)]]
 +
[[en:Ask () and Wait (block)]]

2017年3月13日 (月) 07:42時点における版

() と聞いて待つ
カテゴリ 調べる
タイプ スタック
追加 [[Scratch 1.4]]

() と聞いて待つ ブロック調べるブロックスタックブロック)は、画面の下のほうに指定した文章と入力ボックスを表示するブロックである。ユーザーが文字を入力して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
 []と言う
Warning
メモ:
このスクリプトは完璧ではない。くわしくは このプロジェクト を参照
ここでは、リスト 「答え」が 答えブロックの代わりとなっている。

ハットブロックを使う方法

次の方法を使うと、キーが押された順番に入力が取得される(こちらも日本語には対応していない)

[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
... // 通常通り、処理がつづけられる

実践的な使用例は、こちらを参照

参照

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。