JJ SHIMA Blog

二児のパパがゲーム開発アレコレを書いているブログ。Unity / UE / Scratch / プログラミングゼミ / プログラミング教育

[Scratch] ジャンケンゲームを作ろう-4.勝ち・負けを判定しよう-

スクラッチ ジャンケンゲームを作ろう。

前回は「あいこ」の判定を作りました。

今回は勝負の「勝ち」「負け」の判定です。

1. 勝ちの条件を整理しよう

動きを作る前に、まずは勝ちの条件を確認しましょう。

勝ち (数字はスクラッチ上でのジャンケンを表す値)

自分(あなたのジャンケンのかたち) あいてのジャンケンのかたち
グー :1
チョキ:2
チョキ:2
パー :3
パー :3
グー :1

勝ちの判定には、 「自分がグー」そして「あいてがチョキ」と、
2つの条件が必要です。
このように、2つ以上の条件には演算カテゴリの「○かつ○」を使います。


この左右の枠の部分に、それぞれの条件を入れていきます。

自分のジャンケンがグーの時

あいてのジャンケンがパーの時 f:id:papa-sensei:20200210162029p:plain

この2つの条件を、「かつ」で組み合わせると f:id:papa-sensei:20200210162139p:plain
となります。これで、自分がグー、あいてがチョキの時の判定になります。

同じように、自分がチョキ・パーの時の判定も作ります。

自分がチョキ・あいてがパー f:id:papa-sensei:20200210162801p:plain 自分がパー・あいてがグー f:id:papa-sensei:20200210162854p:plain

2. 勝ちの判定を追加しよう

それでは実際に勝ちの判定を追加しましょう。
追加する場所は、前回「あいこ」の判定を追加した、結果のブロック内です。

「もし〜でなければ」のブロックに変える

まず、あいこの判定で使っている「もし」ブロックを、
「もし〜でなければ」のブロックに変更します。
あいこの判定をし、もしあいこでなければ、勝ち・負けの判定するようにします。 f:id:papa-sensei:20200210171603p:plain

勝ちの判定を追加する

・自分がグー、あいてがチョキ
・自分がチョキ、あいてがパー
・自分がパー、あいてがグー

この3つの組み合わせのどれかに当てはまれば、自分の勝ちになります。
このような時、それぞれの条件で「もし」ブロックを使っても良いのですが、
そうすると、とてもブロックが長くなってしまいます。
(もしをつなげ続けると見づらくなってしまう)
f:id:papa-sensei:20200210192108p:plain

そんな時は、演算カテゴリの「または」を使いましょう!
f:id:papa-sensei:20200210192249p:plain

[左の条件] または [右の条件] だったら・・というのに使えます。
また、「または」を2つ以上重ねることもできますので、
今回のように条件が3つあるときは、またはをつなげると3つの条件で判定ができます。
f:id:papa-sensei:20200210192412p:plain

(3つの条件をつなげた) f:id:papa-sensei:20200210192522p:plain

あとは「あいこでなければ」の中に、勝ちの判定を追加します。
この時、「勝ち」でなければ「負け」なので、
この中でも「もし〜でなければ」ブロックを使います。 f:id:papa-sensei:20200210192802p:plain *勝ち・負けはブロック定義

これで勝ち・負けの判定はできました。

3. 勝ち・負けの動き

判定ができたら、勝ち・負けの時の動きを作ります。

はいけい
勝ち・負けになったら、ちょっとだけ待って、
また再びジャンケンが始まるようにします。

[勝ち] → (結果表示 *この次の回で作ります) → (ちょっと待つ) → 再びジャンケン
f:id:papa-sensei:20200210193834p:plain

勝ち・負けの時は、それぞれ、「かち」「まけ」のメッセージを送り、
少し待ったら再びジャンケンを始めます。
(*メッセージは結果表示で使いますので、次回になります)

ジャンケンの中では、消えているグー・チョキ・パーのボタンを表示し直して、
ジャンケンのメッセージを送ります。

あいてのジャンケン
あいてのジャンケンは、「ジャンケン」のメッセージを受け取ったら、
再びルーレットをし始めます。
やることは「あいこ」の時と同じです。
f:id:papa-sensei:20200210194259p:plain

これでジャンケンの勝ち・負け判定の動きはできました

次回、勝ち・負け・あいこの結果を表示して、ゲームとして完成させます。