提供: Japanese Scratch-Wiki
このきじは ひらがなでよめません。ごめんなさい。編集者向け:作成する
このチュートリアルでは、アルファベット順や数字順に新しいリスト項目を自動的に正しい位置に入れる方法を説明する。
方法
数字とアルファベットを区別するようにし、その後ソートする方法を説明する。
初めに、4つの変数と4つのリストが必要だ。この例では、次の変数とリストを使う。
- 変数
- # — カウンタ
- NFirst — 数値を先にする
- WFirst — 言葉を先にする
- Var — 別のカウンタ
- リスト
- 数字 — 数字が入ったリスト(隠されている)
- ソート後の数字 — ソートされた数字が入るリスト(表示されている)
- 言葉 — 言葉が入ったリスト(隠されている)
- ソート後の言葉 — ソートされた単語が入るリスト(表示されている)
その後、次のスクリプトを作成する。
@greenFlag が押されたとき::events hat [NFirst v] を [1] にする [WFirst v] を [1] にする [数字 v] のすべてを削除する::list [ソート後の数字 v] のすべてを削除する::list [言葉 v] のすべてを削除する::list [ソート後の言葉 v] のすべてを削除する::list
その後、() と聞いて待つ (ブロック)で質問するために、メッセージ「質問」を送る必要がある。
[質問 v] を受け取ったとき [追加する数字または言葉:] と聞いて待つ もし <<(答え) > [0]> または <(答え) < [1]>> なら [NFirst v] を (1) ずつ変える [数字 v] を送る でなければ [WFirst v] を (1) ずつ変える [言葉 v] を送る end
このスクリプトは、入力された文字が数字か言葉かを判断する。
メモ:
数字が小数である場合や、空白が含まれる場合、それは数字ではなく、言葉と判断される。
数字か言葉かで、そのスクリプトはメッセージ「数字」もしくは「言葉」を送る。
送られたメッセージを受け取るには、次のスクリプトを追加する。
[言葉 v] を受け取ったとき
[# v] を [1] にする
もし <(答え) = []> なら
[質問 v] を送る
[このスクリプト v] を止める::control cap
でなければ
もし <(WFirst) = [1]> なら
(答え) を [言葉 v] に追加する
[] を [ソート後の言葉 v] に追加する
[Var v] を [1] にする
([言葉 v] の長さ :: list) 回繰り返す
[ソート後の言葉 v] の (Var) 番目を ([言葉 v] の ((( [言葉 v]の長さ :: list) - (Var)) + (1)) 番目:: list) で置き換える::list
[Var v] を (1) ずつ変える
end
[質問 v] を送る
[このスクリプト v] を止める::control cap
でなければ
(( [言葉 v] の長さ:: list) + (1)) 回繰り返す
もし <(答え) < ([言葉 v] の (#) 番目 :: list)> なら
[# v] を (1) ずつ変える
でなければ
[言葉 v] の (#) 番目に (答え) を挿入する::list
[] を [ソート後の言葉 v] に追加する
[Var v] を [1] にする
([言葉 v] の長さ :: list) 回繰り返す
[ソート後の言葉 v] の (Var) 番目を ([言葉 v] の ((( [言葉 v]の長さ :: list) - (Var)) + (1)) 番目:: list) で置き換える::list
[Var v] を (1) ずつ変える
end
[質問 v] を送る
[このスクリプト v] を止める::control cap
end
end
end
end
その後、このスプリクトをコピーして、「[言葉 v] を受け取ったとき」を「[数字 v] を受け取ったとき」に、リスト名「言葉」「WFirst」をそれぞれ「数字」「NFirst」に書き換える。
これらのスクリプトは、受け取った答えをソート後の単語またはソート後の数字のリストに正しいアルファベット順または数字順の位置に内容を追加する。