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

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

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

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

変数を用意する

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

画像1: 変数を用意する

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

画像2: 変数を用意する

変数を初期化する

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

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

画像1: 変数を初期化する

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

画像2: 変数を初期化する

処理を分ける

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

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

画像1: 処理を分ける

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

画像2: 処理を分ける

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

画像3: 処理を分ける

カードを開く

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

画像1: カードを開く

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

画像2: カードを開く

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

画像3: カードを開く

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

画像4: カードを開く

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

記事全文ページのみ

This article is a sponsored article by
''.