提供: Japanese Scratch-Wiki

(ページの作成:「()と聞いて待つブロックとは、調べるブロックの一種である。 ---- このブロックを使うと、()の中に入っている文字列を()と言...」)
 
(→‎入力ボックスをキャンセルする: タイマー>0.1 の数値を0にした)
(7人の利用者による、間の16版が非表示)
1行目: 1行目:
()と聞いて待つブロックとは、調べるブロックの一種である。
+
{{ひらがなヘッダ}}{{ブロック
 +
|name = () と聞いて待つ
 +
|block = <sb>[あなたの名前は何ですか?] と聞いて待つ</sb>
 +
|category = [[調べるブロック|調べる]]
 +
|type = [[スタックブロック|スタック]]
 +
|added = 1.4
 +
}}
 +
[[File:Ask bar.png|thumb|300px|[[Scratchキャット]]が質問中]]
 +
'''() と聞いて待つ'''[[ブロック]]([[調べるブロック]]/[[スタックブロック]])とは、指定した文章とともに、画面の下の方に入力ボックスを表示するブロックである。ユーザーが文字を入力してEnterキーを押す、または、チェックマークをクリックすると、その内容が[[答え (ブロック)|<sb>答え</sb>]]ブロックに入る。もう一度、このブロックを使用すると、答えブロックの中身は、後から入力された内容に自動的に書き換わる。
  
----
+
このブロックと[[答え (ブロック)|<sb>答え</sb>]]ブロックは[[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
 +
... //実際には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
 +
[] と言う</scratchblocks>
 +
 
 +
{{メモ|このスクリプトは完璧ではない。くわしくは [[Scratch:projects/scimonster/1677417|このプロジェクト]]を参照}}
 +
ここでは、[[リスト]]「答え」が[[答え (ブロック)|<sb>答え</sb>]]ブロックの代わりとなっている。
 +
 
 +
===ハットブロックを使う方法===
 +
次の方法を使うと、キーが押された順番に入力が取得される(こちらも日本語には対応していない)
 +
 
 +
<scratchblocks>
 +
[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
 +
 
 +
(答え用の変数) // これが答えになる
 +
</scratchblocks>
 +
 
 +
==入力ボックスをキャンセルする==
 +
一度表示した入力ボックスを消す(キャンセルする)もっとも手っ取り早い方法は、[[() を止める (ブロック)|<sb>[すべて v]を止める</sb>]]ブロックを使用する方法である。キャンセルした後もスクリプトの実行を継続したいときは、[[() > () のとき (ブロック)|<sb>[タイマー v] > () のとき</sb>]]ブロックを使うとよい。
 +
 
 +
指定した秒数待っても「答え」が入力されない場合、キャンセルボタンが押された場合に入力ボックスをキャンセルするには、次のようにすれば良い。
 +
 
 +
<scratchblocks>
 +
@greenFlag が押されたとき::events hat
 +
[変数 v] を [0] にする
 +
 
 +
[変数 v] を [1]にする
 +
タイマーをリセット
 +
[すべて v] を止める // このブロックが実行された瞬間にテキストボックスが消えるので、テキストボックスを消したい場所にこれを置く
 +
 
 +
[タイマー v] > (0)のとき
 +
もし <(変数) = [0]> なら
 +
[このスクリプト v]を止める
 +
end
 +
... // 通常通り、処理がつづけられる
 +
</scratchblocks>
 +
 
 +
==関連項目==
 +
*[[答え (ブロック)]]
 +
*[[答え (値)]]
 +
{{調べるブロック}}
 +
 
 +
[[カテゴリ:調べるブロック]]
 +
[[en:Ask () and Wait (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の使用に同意するものとします。