子どもがScratchでじゃんけんを作っていて、「手は出せたけれど、勝ちと負けをどう決めればいい?」と止まっていませんか。先に同じ手なら「あいこ」と判定し、残った組み合わせのうち勝つ3通りを条件にすると、それ以外を「負け」に分けられます。
この記事では、数字を入力して相手と1回じゃんけんする作品を作ります。手のアニメーションや得点は加えず、9通りの組み合わせを正しく判定するところに絞りましょう。以下は本記事用の制作例であり、教室での実施事例ではありません。
まずは9通りの判定表を作る
最初に、自分と相手の手を同じ決まりで数字に置き換えます。今回は「1=グー、2=チョキ、3=パー」です。作品の画面にも、この対応を書いておくと遊ぶ人が選びやすくなります。
次の表は、すべて自分から見た結果です。「グーはチョキに勝つ」と覚えていても、自分と相手を逆に読むと判定が入れ替わるため、表の向きをそろえておきます。
| 自分の手 | 相手:1・グー | 相手:2・チョキ | 相手:3・パー |
|---|---|---|---|
| 1・グー | あいこ | 勝ち | 負け |
| 2・チョキ | 負け | あいこ | 勝ち |
| 3・パー | 勝ち | 負け | あいこ |
表をそのまま9個の条件にする必要はありません。斜めに並ぶ「あいこ」は、どれも自分と相手が同じ数字です。勝つ組み合わせは「1と2」「2と3」「3と1」の3通り。ここまで整理してからブロックに移ります。
準備する変数は「自分の手」「相手の手」「結果」
判定を担当するスプライトを1つ決め、次の変数を作ります。この例では、変数を表示して数字と結果を見ながら確かめる構成にします。
- 自分の手:入力した1・2・3を入れる。
- 相手の手:相手が出す1・2・3を入れる。
- 結果:「あいこ」「勝ち」「負け」を入れる。
変数には「変数を○にする」ブロックで値を設定します。ブロックの働きはScratch公式ヘルプの変数への値の設定でも確認できます。
「自分の手」と「相手の手」を別々に持つのが、この作品の大事な点です。相手を決めるときに「自分の手」を書き換えてしまうと、比べたい2つの値が残りません。
自分の手を入力してから、相手の手を1回だけ決める
1・2・3以外では判定に進まない
今回は画面ボタンを作らず、「質問」と「答え」を使って手を入力します。この仕組みは、質問への入力を「答え」に保持するものです。詳しくはScratch公式ヘルプの質問ブロックを参照してください。
判定用スプライトに、下の順序でブロックをつなぎます。これは配置を伝えるための文章表記で、そのまま貼り付けて動くコードではありません。字下げした行は、繰り返しブロックの内側に入れます。
緑の旗が押されたとき
自分の手を 0 にする
相手の手を 0 にする
結果を「入力待ち」にする
「自分の手=1 または 自分の手=2 または 自分の手=3」まで繰り返す
「1=グー、2=チョキ、3=パー。数字を入れてね」と聞いて待つ
自分の手を「答え」にする
繰り返しの終わり
相手の手を「1から3までの乱数」にする
3つの候補を「または」でつなぐには、「または」ブロックを2個使います。例えば「(自分の手=1 または 自分の手=2)または 自分の手=3」という入れ子にします。
この入力確認は省かないでください。もし「4」を受け取ったまま後の判定へ進むと、本来はじゃんけんの手ではない入力まで「負け」に振り分けてしまいます。
乱数は条件の中で何度も引かない
「1から3までの乱数」で相手の数字を選び、それを「相手の手」に入れます。整数の範囲を指定した乱数については、Scratch公式ヘルプの乱数ブロックに説明があります。
この制作例では、相手の手を決めるブロックは1回の勝負につき1か所だけにします。判定するたびに乱数を使うのではなく、決めた「相手の手」を最後まで比べる構成です。相手の表示と勝敗が食い違ったときも、この位置を見直してください。
「あいこ→勝つ3通り→それ以外」の順で組む
続いて、先ほどのブロックの下に判定をつなぎます。まず「もし〜なら、でなければ」を置き、条件を「自分の手=相手の手」にします。
条件に当てはまれば内側を、当てはまらなければ「でなければ」の内側を実行するのが、このブロックの働きです。Scratch公式ヘルプの条件分岐でも確認できます。
もし「自分の手=相手の手」なら
結果を「あいこ」にする
でなければ
もし「勝つ3通りのいずれか」なら
結果を「勝ち」にする
でなければ
結果を「負け」にする
内側の条件分岐の終わり
外側の条件分岐の終わり
結果と言う
上の「勝つ3通りのいずれか」は、実際には次の条件を組み合わせて作ります。
お子さまに合う学び方診断
正解・不正解を決める診断ではありません。今の様子から、取り組みやすい学び方の入口をご案内します。
- 自分の手=1 かつ 相手の手=2
- 自分の手=2 かつ 相手の手=3
- 自分の手=3 かつ 相手の手=1
1つの組み合わせの中では、両方が成り立つ必要があるので「かつ」を使います。その3組のうち、どれか1組が成り立てば勝ちなので、組どうしは「または」でつなぎます。
Scratch公式ヘルプでも、「かつ」は両方の条件が成立した場合、「または」はどちらかの条件が成立した場合に真を返すと説明されています。
配置は「(1つ目の組 または 2つ目の組)または 3つ目の組」です。「かつ」が3個、「または」が2個になります。ブロックが長く感じられたら、まず「自分がグー、相手がチョキ」の1組だけ作り、同じ形で残りを追加しましょう。
負ける3通りを別に書かなくてよいのは、入力を1・2・3に限定し、あいこと勝ちを先に除いているからです。「それ以外なら負け」だけを切り離して使わないようにします。
動作確認では、相手の手を固定して9通りを試す
確認中は、「相手の手を1から3までの乱数にする」を、一時的に「相手の手を1にする」へ変更する方法をおすすめします。ランダムに遊ぶだけでなく、表の各マスを狙って確かめるためです。
- 相手を1に固定し、自分を1・2・3に変えて、旗を押すところから試す。
- 相手を2に固定し、同じように自分の3通りを試す。
- 相手を3に固定して残りを試し、表と照合する。
- すべて合ったら、相手を決める部分を乱数に戻す。
例えば「自分が3、相手が1」のときだけ負けるなら、勝つ条件の3組目を見ます。「自分=1、相手=3」と逆に入れていないかを確認しましょう。
あいこで負けと表示される場合は、外側と内側の条件分岐の位置を確認します。「結果を負けにする」が分岐の外へ出ていると、先に入れた「あいこ」や「勝ち」を上書きする構成になります。
最後に「4」や空欄も試し、結果を決めずに質問へ戻るか確認します。今回の完成条件は、手の絵が動くことではなく、表どおりに判定でき、対象外の入力を判定しないことです。
よくある質問(FAQ)
勝つ条件だけを3個並べてはいけませんか?
それだけでは、あいこと負けの区別が残ります。今回の構成なら、先にあいこを分け、勝つ3通りに当てはまらなかった場合を負けにできるため、判定の抜けを表と照合しやすくなります。
「かつ」と「または」は全部同じものにできますか?
この判定では同じにしません。「自分がグー」だけで勝ちになるのではなく、「相手がチョキ」も必要なので、その2条件は「かつ」です。勝つ組み合わせどうしは「または」でつなぎます。
グー・チョキ・パーの絵は最初から必要ですか?
この記事の制作例では不要です。変数の数字と対応表で判定を完成させてから、手の絵を追加する順をおすすめします。絵を追加した後も、勝敗は同じ「自分の手」「相手の手」を使って決める設計にします。
文字や数字の入力が難しい子は、どこから参加できますか?
まずは紙にグー・チョキ・パーを描き、判定表の該当するマスを指す活動にしてみてください。大人が数字を入力し、子どもが表示結果と表を比べる分担も選択肢です。長い条件を一度に組むことを参加の条件にする必要はありません。
判定表を、次に作りたい作品の相談にも使う
教室で続きを相談するなら、「じゃんけんを作りたい」に加えて、9通りの表と今の条件を見せると、取り組みたい部分を具体的に伝えられます。「3と1の勝敗だけ直したい」「判定はできたので手の絵を付けたい」のように、相談する箇所を選びましょう。
CotoMiraiでは、子どもの興味・理解度に合わせて目標や進め方を調整する個別指導を行い、プログラミングやロボット、デジタルものづくりを扱っています。内容はスクール利用・個別指導の案内で確認できます。本記事の作品を無料体験で扱えるかは、申し込み時にご相談ください。
参考にした情報
関連する記事
お子さまに合う学び方診断
正解・不正解を決める診断ではありません。今の様子から、取り組みやすい学び方の入口をご案内します。