前回は裏にしたカードを開くところまでできました。今回は、それに次の機能を追加します。
- 開けるカードを2枚までにする(3枚目は開けない)
- 表にしたカードをもう一度クリックすると、裏に戻せる
それには、2つの変数と1つのリストが必要です。カードを開くことができるかどうかの変数「開けるか」と何枚開いたかの変数「開いた数」、それに、各カードが表か裏かのリスト「カードの状態」です。
変数を用意する
「変数」から、「変数を作る」をクリックし、「開けるか」と「開いた数」を作ります。

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

変数を初期化する
「(緑の旗のマーク)が押されたとき」のイベントに対してのブロックに、変数とリストの最初の値を設定しておきましょう。こうすれば、前の実行の値が残っていたりしても、また、まっさらな状態から始めることができます。このような処理を「初期化」といいます。
「カードの絵をすべて削除する」の「カードの絵」を「カードの状態」に変えて、「12回繰り返す」の上にはめ込みます。「なにかをカードの絵に追加する」の「なにか」を「裏」に、「カードの絵」を「カードの状態」にします。

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

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

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

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

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

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

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

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

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