CARD の属性

表示した CARD の スーツと数を印字します。
  1. カードをシャッフルして、マウスのクリックで次のカードに切り替えます。
    同時に表示した CARD の スーツと数を印字します。
    CARD Class のプロジェクトをコピーして使用します。
  2. CARD.cs を Version 2.0 に書き換えて下さい。
    カードのスーツと数を定義する配列を追加して、これを取得する関数を用意します。
    ジョカーを含めてシャッフルします。ジョカーの suits は4に設定してみました。
    また num が現在のカード番号を指すようにして public に変更しています。
    // CARD Class Version 2.0
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CARD : MonoBehaviour
    {   public  Sprite[] image;         //切り分けた Crad Image
        private int[] TS = new int[54]; //スーツ(スペード,ハート,ダイヤ,クラブ)
        private int[] TN = new int[54]; //数(1~13)
        private int[] T = new int[53];  //シャッフルする配列
        public  int num = -1;           //現在のカード番号
    
        void Start ()
        {   image = Resources.LoadAll<Sprite>("");
            Debug.Log("image Length -> " + image.GetLength(0));
            for(int i=0; i<54; i++)
            {   TS[i] = i/13;
                TN[i] = i%13+1;
            }
            Shuffle(T,53);
        }
        // カードをシャッフルする
        public void Shuffle(int[] t, int n)
        {   int     i,j;
            float   wk;
            for(i=0; i<n; i++)     t[i]= -1;
            for(i=0; i<n; i++)
            {   wk = Random.value * n;
                j = (int)wk; 
                for(; t[j]!=-1; j=(j+1)%n);
                t[j]= i;
            }
        }
        // シャッフルした n 番目のカード
        public Sprite Get(int n)
        {   if (n>52 || n<0)    return null;
            return image[T[n]];
        }
        // シャッフルした次のカード
        public Sprite Next()
        {   if (num>52 || num<0)    return null;
            num++;
            return image[T[num]];
        }
        // シャッフルした n 番目のカードの suits
        public int GetS(int n)
        {   if (n>52 || n<0)    return -1;
            return TS[T[n]];
        }
        // シャッフルした n 番目のカードの number
        public int GetN(int n)
        {   if (n>52 || n<0)    return -1;
            return TN[T[n]];
        }
    }
    
  3. CARD.cs を Version 2.0 に変更しても、今までのプログラムが同じように動くことを確認して下さい。
  4. NewBehaviourScript.cs を修正して、Update() 関数でスーツと数を印字します。
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class NewBehaviourScript : MonoBehaviour
    {   SpriteRenderer  SpRender;
        CARD    card;
    
        void Start ()
        {   SpRender = gameObject.GetComponent<SpriteRenderer>();
            card = FindObjectOfType<CARD>();
            SpRender.sprite = card.Next();
        }
    
        void Update ()
        {   if (Input.GetMouseButtonDown(0))
            {   SpRender.sprite = card.Next();
                Debug.Log("suits->"+card.GetS(card.num)+"  num->"+card.GetN(card.num));
            }
        }
    }
    
  5. メニューから [Save Scene] を選び Main の名前で保存して終了して下さい。
    一応これで CARD Game の基礎は終了です。
    神経衰弱ぐらいは作成出来るようになったでしょうか?
    本当に面倒なのはこれからで、ゲームに合わせて CARD Class をアップデートして下さい。

[Previous Chapter ↑] Reverse

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(Unity)