正否を判定して、カードを非表示にする
以下のActionscriptをレイヤー「action」の15フレーム目にあるキーフレームに記述してください。if(questionCard != answerCard&&questionColor == answerColor){ answerCard._visible = false; questionCard._visible = false; }else{ answerCard.blindfold._visible = true; questionCard.blindfold._visible = true; } gotoAndStop(2);1行目のif文が今回のポイントです。まず「questionCard != answerCard」最初に選んだカードと二枚目のカードが同じカードではない場合という意味です。カードの色だけを判定してしまうと、同じカードを二回選んだ場合も含まれてしまうのでこの条件が必要です。続いて「questionColor == answerColor」という条件です。これで色を示すフレーム番号が同じということになります。この二つの条件が共に成り立っている場合の「&&」で結ばれているので、全体では「別のカードで同じ色の物が揃った場合」という条件になります。
2行目からが正解だった場合に実行される処理です。この場合選んだ2枚のカードが非表示になり、背景の写真がちょっと見えるようになります。
5行目からが不正解だった場合の処理です。選んだ2枚のカードには再び目隠し用のインスタンス「blindfold」が表示され、何色か分からないカードとなります。
これで完成です!完成したFlashファイルをダウンロード。
出来てしまえば特に新しいActionscriptが登場したわけでもないですし、簡単なことを繰り返して神経衰弱を作ることが出来ると気付いていただけたと思います。しかし、カードゲームを作る場合はルールによっては非常に複雑な条件分岐が必要となり難しそうに見えてしまうものです。最初にしっかり全体の流れを書き出していくことが必要ですね。
さて、今回色を示すラベルを付けているのにも関わらず「_currentframe」を使っていますよね。「_currentlabel」というプロパティを使ったことがあると思っていた方も少なくないと思います。Actionscript3.0では「_currentlabel」が存在するのですが、今回はFlash8向けに記述している関係で使用出来なかったためです。言語のバージョンに合わせて少しずつ便利になっていくものですね。