COLUMN

コラム

親子で楽しもう!Scratchプログラミング【8】
神経衰弱の表にしたカードを裏返せるようにしよう
村山 要司

2019/04/27

村山 要司

この連載では、Scratchを使って、ゲームをつくりながらプログラミングを楽しんでもらいたい! と考えています。しかも子どもだけでなく、大人も一緒に。第8回はカードの「表裏」をひっくり返せる条件を決めましょう。

前回のおさらい

前回は裏にしたカードを開くところまでできました。今回は、それに次の機能を追加します。

 ●開けるカードを2枚までにする(3枚目は開けない)
 ●表にしたカードをもう一度クリックすると、裏に戻せる

それには、2つの変数と1つのリストが必要です。カードを開くことができるかどうかの変数「開けるか」と何枚開いたかの変数「開いた数」、それに、各カードが表か裏かのリスト「カードの状態」です。

変数を用意する

変数」から、「変数を作る」をクリックし、「開けるか」と「開いた数」を作ります。

image

「リストを作る」をクリックし、「カードの状態」を作ります。

image

変数を初期化する

「(緑の旗のマーク)が押されたとき」のイベントに対してのブロックに、変数とリストの最初の値を設定しておきましょう。こうすれば、前の実行の値が残っていたりしても、また、まっさらな状態から始めることができます。このような処理を「初期化」といいます。

「カードの絵をすべて削除する」の「カードの絵」を「カードの状態」に変えて、「12回繰り返す」の上にはめ込みます。「なにかをカードの絵に追加する」の「なにか」を「裏」に、「カードの絵」を「カードの状態」にします。

image

「カード番号を0にする」を「12回繰り返す」の上にはめ込み、「カード番号」を「開いた数」にします。もう1個「カード番号を0にする」を「12回繰り返す」の上にはめ込み、「カード番号」を「開けるか」、「0」を「はい」にします。

image

処理を分ける

「このスプライトが押されたとき」で行う処理は、大きく分けて2つ必要です。1つは、カードが開けるときの処理で、カードが裏だったら、表を表示する処理。もう11つは、カードが開けないときの処理で、カードが表だったら裏に戻す処理です。

処理を、開けるときとそうでないときに分けるには、「制御」の「もし…なら、でなければ」ブロックを使います。

image

「演算」の「… = 50」を、「もし…なら、でなければ」の空欄に、はめ込みます。「… = 50」の左側は「変数」の「開けるか」、右側は「はい」にします。

image

これで、処理が2つに分かれます。さらに、それぞれの処理で、カードが裏か表かを判断するために、「もし…なら」のブロックを中に入れます。

image

カードを開く

「演算」の「… = 50」を、「もし…なら」の空欄にはめ込みます。「… = 50」の左側は「変数」から「カードの絵の11番目」、右側は「裏」にします。「カードの絵の 11番目」の「カードの絵」は「カードの状態」に、「1」のところを「カード番号」にします。

image

「もし、カードの絵のカード番号番目=裏なら」の中には、前回作った「コスチュームをカードの絵のカード番号番目にする」を動かして、はめ込みます。

image

その下に、「変数」から、「カード番号を 1 ずつ変える」をはめ込み、「カード番号」を「開いた数」にします。

image

さらに、その下に、「カードの絵の1番目を1に置き換える」をはめ込み、「カードの絵」を「カードの状態」に変更し、左側の「1」を「カード番号」、右側の「1」を「表」にします。

image

ここまでで、カードが開けるとき、カードが裏だったら、表にするようにできました。

2枚以上、開けなくする

「開いた数」が2になったら、「開けるか」を「いいえ」にしましょう。「制御」の「もし…なら」を、「カードの状態のカード番号番目を表で置き換える」の下にはめ込みます。その空欄に、「演算」の「… = 50」をはめ込み、左側を「変数」の「開いた数」、右側の「50」を「2」にします。

image

その中に、「変数」の「カード番号を 0 にする」をはめ込み、「カード番号」を「開けるか」に変え、「0」を「いいえ」にします。

image

これで、カードを2枚開くと、それ以上は開けなくなりました。カードが開けるときの処理は出来上がりです。次は、開けないときの処理です。

カードが表だったら、裏に戻す

「カードの絵のカード番号番目 = 裏」のブロックを右クリックして、コピー(複製)します。

image

「でなければ」の中の「もし…なら」の空欄にコピーしたブロックをはめ込んで、「裏」を「表」に入力し直します。

image

「もし、カードの絵のカード番号番目=表なら」の中には、「見た目」の「コスチュームをコスチューム1にする」をはめ込みます。

image

その下に、「変数」から「カード番号を1ずつ変える」をはめ込み、「カード番号」を「開いた数」に、「1」を「-1」にします。

image

あとのブロックは、コピーして、まとめてやってしまいましょう。コピーしたい一番上のブロックで右クリックし複製を選ぶと、まとめてコピーができます。

image

「カードの状態のカード番号番目を表に置き換える」の「表」を「裏」に、「開いた数 = 2」の「2」を「0」に、「開けるかをいいえにする」の「いいえ」を「はい」に変えます。

image

これで、カードが開けないとき、カードが表だったら、裏にするようにできました。すべてのカードが裏(開いているカードが0)になったら、また、開けるようになります。

「このスプライトが押されたとき」のイベントのブロックは、こうなりました。

image

動きを確認する

ここまでの動きを確認してみましょう。2番と4番のカードをクリックしてみます。「カードの状態」の2番と4番の値が「表」に変わります。「開いた数」の値は「2」になり、「開けるか」は「いいえ」になります。こうなると、他の裏のカードはもう開けません。

image

もう一度、2番と4番のカードをクリックします。「カードの状態」の2番と4番の値が「裏」に戻ります。「開いた数」の値は「0」になり、「開けるか」は「はい」になります。また、裏のカードを開けるようになります。

image

だいぶ、神経衰弱らしくなってきました。次回はいよいよ仕上げです。開いたカードの絵をチェックして、同じだったら開いたままにします。

親子で楽しもう!Scratchプログラミング【8】神経衰弱の表にしたカードを裏返せるようにしよう
村山 要司

2019/04/27

村山 要司

関連記事

人気の記事
タグ一覧
バレッドキッズ新規生徒募集
バレッドアカデミー
バレッドキッズ先生募集