未分類

Androidで神経衰弱ゲームつくりました。

投稿日:

      

プログラムの解説

14行目のT[ ]はカードをシャッフルする領域です。

Tebanは、プログラムを制御する領域です。

  1.  0の時は、1枚目のカードをクリックします。
  2.  1の時は、2枚目のカードをクリックします。
  3.  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に追加されました。

以上で神経衰弱ゲームの解説は終了します。

プログラムを改造し人間同士の対戦にしたり、対コンピューター戦にしても面白いと思います。

今後もゲームプログラミングの解説を行っていきます。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

for文のしくみを知る

激レアキャラをゲットするまでは・・・→レアガチャを引き続ける 私たちの生活に朝起きる、歯を磨く、朝食を食べる、学校に行く・・・といった「繰り返し処理」を行っています。 Javaでは、このような繰り返し …

サンプルイメージ

配列のしくみ①

プログラムの中ではたくさんのデータを扱う場合があります。例えば、50体のキャラクターの攻撃力や体力や属性を扱うプログラムを考えてみましょう。 たくさんの変数が登場するので、コードが複雑で読みにくくなり …

サンプルイメージ

メソッドの引数

メソッドでさらに柔軟な処理を行うことができます。メソッドを呼び出す際に、 呼び出し元からメソッド内に何か情報(値)を渡し、その値に応じた処理を行う ということができます。メソッドに渡す情報を引数といい …

サンプルイメージ

画面への出力

前回画面に文字列を出力するコードを学習しました。「System.out.println・・・」という言葉に注目してください。この「System.out」とは、 標準出力(standard output …

サンプルイメージ

メソッドのオーバーロード

           前の節ではクラスの「カプセル化」機能を学びました。クラスでは、 同じクラスの中に、同じ名前を持つメソッドを2つ以上定義する ということができます。 このクラスには、「setCha …