提供: Japanese Scratch-Wiki

(言語間リンクの順番変更)
(→‎入力ボックスをキャンセルする: タイマー>0.1 の数値を0にした)
(6人の利用者による、間の13版が非表示)
1行目: 1行目:
{{ブロック
+
{{ひらがなヘッダ}}{{ブロック
 
|name = () と聞いて待つ
 
|name = () と聞いて待つ
|image = File:() と聞いて待つ.png
+
|block = <sb>[あなたの名前は何ですか?] と聞いて待つ</sb>
 
|category = [[調べるブロック|調べる]]
 
|category = [[調べるブロック|調べる]]
 
|type = [[スタックブロック|スタック]]
 
|type = [[スタックブロック|スタック]]
 
|added = 1.4
 
|added = 1.4
 
}}
 
}}
[[File:Ask bar.png|thumb|300px|[[スクラッチキャット]]が質問中]]
+
[[File:Ask bar.png|thumb|300px|[[Scratchキャット]]が質問中]]
'''() と聞いて待つ''' [[ブロック]][[調べるブロック]][[スタックブロック]])は、画面の下のほうに指定した文章と入力ボックスを表示するブロックである。ユーザーが文字を入力してEnterキーを押す、または、チェックマークをクリックすると、その内容が[[答え (ブロック)|答え]]ブロックに入る。もう一度、このブロックを使用すると、答えブロックの中身は、後から入力された内容に自動的に書き換わる。
+
'''() と聞いて待つ'''[[ブロック]]([[調べるブロック]]/[[スタックブロック]])とは、指定した文章とともに、画面の下の方に入力ボックスを表示するブロックである。ユーザーが文字を入力してEnterキーを押す、または、チェックマークをクリックすると、その内容が[[答え (ブロック)|<sb>答え</sb>]]ブロックに入る。もう一度、このブロックを使用すると、答えブロックの中身は、後から入力された内容に自動的に書き換わる。
  
このブロックと[[答え (ブロック)|答え]]ブロックは[[Scratch]] 1.4以降で導入されたため、それ以前のバージョンでは使用できない。
+
このブロックと[[答え (ブロック)|<sb>答え</sb>]]ブロックは[[Scratch]] 1.4以降で導入されたため、それ以前のバージョンでは使用できない。
  
 
==使用例==
 
==使用例==
16行目: 16行目:
  
 
*チャットボット(おしゃべりロボット) {{-}} ユーザーからの情報を受け取る
 
*チャットボット(おしゃべりロボット) {{-}} ユーザーからの情報を受け取る
 
 
<scratchblocks> [あなたの名前は?] と聞いて待つ
 
<scratchblocks> [あなたの名前は?] と聞いて待つ
 
([こんにちは、] と ((答え) と [!]))と言う</scratchblocks>
 
([こんにちは、] と ((答え) と [!]))と言う</scratchblocks>
  
 
*ユーザーに設定させる {{-}} 座標、色など
 
*ユーザーに設定させる {{-}} 座標、色など
 
 
<scratchblocks> [どの色がよいですか?] と聞いて待つ
 
<scratchblocks> [どの色がよいですか?] と聞いて待つ
 
[色 v] の効果を (答え) にする</scratchblocks>
 
[色 v] の効果を (答え) にする</scratchblocks>
  
 
*入力を受け取る {{-}} ユーザーに命令してもらう
 
*入力を受け取る {{-}} ユーザーに命令してもらう
 
 
<scratchblocks>[何歩、移動しましょうか?] と聞いて待つ
 
<scratchblocks>[何歩、移動しましょうか?] と聞いて待つ
 
  (答え) 歩動かす</scratchblocks>
 
  (答え) 歩動かす</scratchblocks>
38行目: 35行目:
 
(すべて v) 番目を[答え v] から削除する
 
(すべて v) 番目を[答え v] から削除する
 
[カウンター v] を [0]にする
 
[カウンター v] を [0]にする
  << [マウスのポインター v]に触れた> かつ <マウスが押された>>まで繰り返す
+
  <<[マウスのポインター v]に触れた> かつ <マウスが押された>>まで繰り返す
もし< [a v] キーが押された> なら
+
もし <[a v] キーが押された> なら
 
  [カウンター v] を (1)ずつ変える
 
  [カウンター v] を (1)ずつ変える
 
[A] を (カウンター) 番目に挿入する([答え v])
 
[A] を (カウンター) 番目に挿入する([答え v])
 
end
 
end
もし< [b v] キーが押された> なら
+
もし <[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)ずつ変える
 
  [カウンター v] を (1)ずつ変える
[5] を (カウンター) 番目に挿入する([答え v])
+
[B] を (カウンター) 番目に挿入する([答え v])
 
end
 
end
もし< [6 v] キーが押された> なら
+
もし <[c v] キーが押された> なら
 
  [カウンター v] を (1)ずつ変える
 
  [カウンター v] を (1)ずつ変える
[6] を (カウンター) 番目に挿入する([答え v])
+
[C] を (カウンター) 番目に挿入する([答え v])
 
end
 
end
もし< [7 v] キーが押された> なら
+
... //実際にはabcde......xyz01234...と全てプログラムを組む
 +
もし <[7 v] キーが押された> なら
 
  [カウンター v] を (1)ずつ変える
 
  [カウンター v] を (1)ずつ変える
[7] を (カウンター) 番目に挿入する([答え v])
+
[7] を (カウンター) 番目に挿入する([答え v])
 
end
 
end
もし< [8 v] キーが押された> なら
+
もし <[8 v] キーが押された> なら
 
  [カウンター v] を (1)ずつ変える
 
  [カウンター v] を (1)ずつ変える
[8] を (カウンター) 番目に挿入する([答え v])
+
[8] を (カウンター) 番目に挿入する([答え v])
 
end
 
end
もし< [9 v] キーが押された> なら
+
もし <[9 v] キーが押された> なら
 
  [カウンター v] を (1)ずつ変える
 
  [カウンター v] を (1)ずつ変える
[9] を (カウンター) 番目に挿入する([答え v])
+
[9] を (カウンター) 番目に挿入する([答え v])
 
end
 
end
もし< [右向き矢印 v] キーが押された> なら
+
もし <[右向き矢印 v] キーが押された> なら
 
  [カウンター v] を (1)ずつ変える
 
  [カウンター v] を (1)ずつ変える
 
end
 
end
もし< [左向き矢印 v] キーが押された> なら
+
もし <[左向き矢印 v] キーが押された> なら
 
[カウンター v] を (-1)ずつ変える
 
[カウンター v] を (-1)ずつ変える
 
end
 
end
もし< [スペース v] キーが押された> なら
+
もし <[スペース v] キーが押された> なら
 
  [カウンター v] を (1)ずつ変える
 
  [カウンター v] を (1)ずつ変える
  [ ] を (カウンター) 番目に挿入する([答え v])
+
  [ ] を (カウンター) 番目に挿入する([答え v])
 
end
 
end
 
  (0.001) 秒待つ
 
  (0.001) 秒待つ
 
end
 
end
  []と言う</scratchblocks>
+
  [] と言う</scratchblocks>
  
{{note|このスクリプトは完璧ではない。くわしくは [http://scratch.mit.edu/projects/scimonster/1677417 このプロジェクト] を参照}}
+
{{メモ|このスクリプトは完璧ではない。くわしくは [[Scratch:projects/scimonster/1677417|このプロジェクト]]を参照}}
ここでは、[[リスト]] 「答え」が [[答え (ブロック)|答えブロック]]の代わりとなっている。
+
ここでは、[[リスト]]「答え」が[[答え (ブロック)|<sb>答え</sb>]]ブロックの代わりとなっている。
  
 
===ハットブロックを使う方法===
 
===ハットブロックを使う方法===
218行目: 96行目:
 
(最後 v) 番目を [キュー v] から削除する// バックスペース機能
 
(最後 v) 番目を [キュー v] から削除する// バックスペース機能
  
@ がクリックされたとき
+
@greenFlag が押されたとき::events hat
 
(すべて v) 番目を [キュー v]から削除する
 
(すべて v) 番目を [キュー v]から削除する
 
<[右向き矢印 v] キーが押された> まで待つ// この動作でユーザーの入力終了とする
 
<[右向き矢印 v] キーが押された> まで待つ// この動作でユーザーの入力終了とする
224行目: 102行目:
 
[n v] を [1]にする
 
[n v] を [1]にする
 
([キュー v]の長さ) 回繰り返す// リストの内容を1つの文章につなげる
 
([キュー v]の長さ) 回繰り返す// リストの内容を1つの文章につなげる
  [答え用の変数 v] を ( (答え用の変数) と ((n) 番目\([キュー v]\)))にする
+
  [答え用の変数 v] を ( (答え用の変数) と ((n) 番目( [キュー v] ))にする
 
[n v] を (1)ずつ変える
 
[n v] を (1)ずつ変える
 
end
 
end
232行目: 110行目:
  
 
==入力ボックスをキャンセルする==
 
==入力ボックスをキャンセルする==
一度表示した入力ボックスを消す(キャンセルする)もっとも手っ取り早い方法は、 [[() を止める (ブロック)|すべてを止める]]ブロックを使用する方法である。キャンセルした後もスクリプトの実行を継続したいときは、 [[() > ()のとき (block) | [タイマー v] > () のとき]]ブロックを使うとよい。
+
一度表示した入力ボックスを消す(キャンセルする)もっとも手っ取り早い方法は、[[() を止める (ブロック)|<sb>[すべて v]を止める</sb>]]ブロックを使用する方法である。キャンセルした後もスクリプトの実行を継続したいときは、[[() > () のとき (ブロック)|<sb>[タイマー v] > () のとき</sb>]]ブロックを使うとよい。
  
 
指定した秒数待っても「答え」が入力されない場合、キャンセルボタンが押された場合に入力ボックスをキャンセルするには、次のようにすれば良い。
 
指定した秒数待っても「答え」が入力されない場合、キャンセルボタンが押された場合に入力ボックスをキャンセルするには、次のようにすれば良い。
  
 
<scratchblocks>
 
<scratchblocks>
@ がクリックされたとき
+
@greenFlag が押されたとき::events hat
 
[変数 v] を [0] にする
 
[変数 v] を [0] にする
  
 
[変数 v] を [1]にする
 
[変数 v] を [1]にする
 
タイマーをリセット
 
タイマーをリセット
[すべて v] を止める // このブロックが実行された瞬間にテキストボックス消えるので、テキストボックスを消したい場所にこれを置く
+
[すべて v] を止める // このブロックが実行された瞬間にテキストボックスが消えるので、テキストボックスを消したい場所にこれを置く
  
[タイマー v] > (0.1)のとき
+
[タイマー v] > (0)のとき
もし<(変数) = [0]> なら
+
もし <(変数) = [0]> なら
 
[このスクリプト v]を止める
 
[このスクリプト v]を止める
 
end
 
end
 
... // 通常通り、処理がつづけられる
 
... // 通常通り、処理がつづけられる
 
</scratchblocks>
 
</scratchblocks>
実践的な使用例は、[https://scratch.mit.edu/projects/114493995/ こちら]を参照
 
  
==参照==
+
==関連項目==
 
*[[答え (ブロック)]]
 
*[[答え (ブロック)]]
 
*[[答え (値)]]
 
*[[答え (値)]]
259行目: 136行目:
 
[[カテゴリ:調べるブロック]]
 
[[カテゴリ:調べるブロック]]
 
[[en:Ask () and Wait (block)]]
 
[[en:Ask () and Wait (block)]]
[[de:Frage () und warte (Block)]]
+
[[de:Frage () und warte (Block)]]{{GitHub|scratch-flash|/src/primitives/|SensingPrims.as|201|branch=646523e6846ad0dd993213a38b46fe2ea511d026}}[[ru:Спросить () и ждать (блок)]]{{デフォルトソート:() ときいてまつ (ふろつく)}}

2020年9月19日 (土) 13:32時点における版

このきじは ひらがなのページがありません。ごめんなさい。編集者向け:作成する
() と聞いて待つ
[あなたの名前は何ですか?] と聞いて待つ
カテゴリ 調べる
タイプ スタック
追加 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
... //実際にはabcde......xyz01234...と全てプログラムを組む
もし <[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] から削除する// バックスペース機能

@greenFlag が押されたとき::events hat
(すべて v) 番目を [キュー v]から削除する
<[右向き矢印 v] キーが押された> まで待つ// この動作でユーザーの入力終了とする
[答え用の変数 v] を []にする //空にする
[n v] を [1]にする
([キュー v]の長さ) 回繰り返す// リストの内容を1つの文章につなげる
 [答え用の変数 v] を ( (答え用の変数) と ((n) 番目( [キュー v] )))にする
[n v] を (1)ずつ変える
end

(答え用の変数) // これが答えになる

入力ボックスをキャンセルする

一度表示した入力ボックスを消す(キャンセルする)もっとも手っ取り早い方法は、[すべて v]を止めるブロックを使用する方法である。キャンセルした後もスクリプトの実行を継続したいときは、[タイマー v] > () のときブロックを使うとよい。

指定した秒数待っても「答え」が入力されない場合、キャンセルボタンが押された場合に入力ボックスをキャンセルするには、次のようにすれば良い。

@greenFlag が押されたとき::events hat
[変数 v] を [0] にする

[変数 v] を [1]にする
タイマーをリセット
[すべて v] を止める // このブロックが実行された瞬間にテキストボックスが消えるので、テキストボックスを消したい場所にこれを置く

[タイマー v] > (0)のとき
もし <(変数) = [0]> なら
[このスクリプト v]を止める
end
... // 通常通り、処理がつづけられる

関連項目

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