
プログラムの解説
14行目のT[ ]はカードをシャッフルする領域です。
Tebanは、プログラムを制御する領域です。
- 0の時は、1枚目のカードをクリックします。
- 1の時は、2枚目のカードをクリックします。
- 2の時は、2枚のカードを照合します。
同じ数字の時は、削除してArrayListに追加します。(ソースコード94行目)
違う数字の時は、裏返します。(ソースコード99行目)
19行目のc1,c2は選択したカードを記憶しておく領域です。
コンストラクタでArrayListに仮にカードを登録しています。
最初から0,1,2のカードが重ねて描画しています。

onDrawメソッドでT[ ]でシャッフルされたカードを描画します。
42行目→T[i]<0x100は(iの値が256より小さい時)表を描画します。
T[i]<0x200は(iの値が256以上で512より小さい時)裏を描画します。
T[i]>=0x200は(iの値が512以上)何も描画しない。
53行目のTeban==0の時は、1枚目です。Teban==1の時は、2枚目。
Teban==2の時は、カードを照合します。

同じ数字の場合は、削除してArrayListに追加します。
違う場合、裏返します。カードの値を13で割った余りが一致すれば同じ数字と判定できます。


Cardクラスの説明
コンストラクタでCardクラスをインスタンス化します。カードの幅150、高さ200です。
Wnum、Hnumは切り分ける、カードの横と縦の枚数です。
frameNumは切り分けるカードの総枚数です。

47行目はシャッフルメソッドです。
card.Shuffle(T,52);
まずカードの52枚に0~51の値を入れます。
int index = random.nextInt(n); で0~51までのランダムな数字をindexに入れt[i]と交換しています。
| 0x100はカードを伏せて描画するためです。

実行結果
カードがシャッフルされ伏せて描画されています。(値が256以上512より小さい時)
カードの値を分かりやすく右下に表示させました。

カードをタッチすると値が0になりました。

2枚目をタッチ同じ数字です。

2枚とも削除され値が512以上になりました。
ArrayListに追加されました。

以上で神経衰弱ゲームの解説は終了します。
プログラムを改造し人間同士の対戦にしたり、対コンピューター戦にしても面白いと思います。
今後もゲームプログラミングの解説を行っていきます。