팀프로젝트를 진행하면서 내가 만든 카드만들기 세팅이다

 

첫번째로는 기본 List를 생성해주고, 해당 List에 사용할 이미지의 이름들을 넣어주었다

그리고 총 카드의 사이즈 int형을 생성해 주었고 , 카드를 뒤섞고 넣어줄 비어있는 List도 생성해주었다

//예시 List 카드 생성
List<string> cards = new List<string>
{
	"a_0",
	"a_1",
	"a_2",
	"a_3",
	"a_4",
	"a_5",
	"a_6",
	"a_7"
};

//List 카드 사이즈
public int Card_size = 0;

//총 카드 갯수
public int leftCards = 0;

//비어있는 카드 리스트 생성
List<string> MainCard = null;

 

그리고 인스턴스 초기화를 해주었다

  private void Awake()
  {
      if(Instance == null)
          Instance = this;
      isCanInput = true;
  }

 

Start에서

switch 구문을 사용하여 GameManager 스크립트의 stageLevel을 가져와 난이도 별로 카드의 개수를 설정해 주었다

void Start()
{

    //Card Size Set
    // *enen num plz*
    switch(GameManager.stageLevel)
    {
        case 0:
            //ezsy Size Set
            Card_size = 12;
            break;

        case 1:
            //Normal Card Size Set
            Card_size = 20;
            break;

        case 2:
            //hard Size Set
            Card_size = 30;
            break;

        case 3:
            //Hidden Card Size Set
            Card_size = 10;
            break;
    }
    GameStartSetting(Card_size);

}

 

그 다음으로 void GameStartSetting(int MaxCard) 를 생성하여

빈 리스트 Maincard 에 Card_size만큼의 리스트를 생성해 주었고

카드 맞추기는 카드가 2개 맞추는 게임이니, 최대 장수 / 2 를 해주었다

그리고 맨처음 만든 자료가 들어간 cards 리스트에서 Random을 넣어 카드를 뒤섞게 만든다음

Maincard 리스트에 cards 리스트를 최대장수/2 만큼 넣어준다

Maincard 리스트는 같은카드가 2장이 되야 하므로, 자기 자신을 복사해서 한번더 넣어준다

cards 리스트에 Random을 넣은것 처럼 Maincard에 Random을 넣어 뒤섞게 만든다

그 후 게임 난이도에 맞게 position 값을 적용하여 카드 개수만큼 카드를 생성해주었다

    void GameStartSetting(int MaxCard)
    {
        Maincard = new List<string>(Card_size);
        
        Debug.Log(Maincard.Count);

        MaxCard = MaxCard / 2;

        cards = cards.OrderBy(x => Random.Range(0f, 8f)).ToList();

        Maincard = cards.Take(MaxCard).ToList();
        for (int j = 0; j < MaxCard; j++)
        {
            Maincard.Add(Maincard[j]);
        }

        //Test disable
        Maincard = Maincard.OrderBy(x => Random.Range(0f, 24f)).ToList();
        //

        for (int i = 0; i < Maincard.Count; i++)
        {
            GameObject go = Instantiate(card, this.transform);

            float x = 0.0f;
            float y = 0.0f;

            switch(GameManager.stageLevel)
            {
                case 0:
                    //ezsy Size Set
                    x = (i % 3) * 1.4f - 1.4f;
                    y = (i / 3) * 1.3f - 2.4f;
                    break;

                case 1:
                    x = (i % 4) * 1.4f - 2.1f;
                    y = (i / 4) * 1.3f - 3.0f;
                    break;

                case 2:
                    x = (i % 5) * 1.1f - 2.2f;
                    y = (i / 5) * 1.3f - 4.0f;
                    break;

                case 3:
                    x = 0.0f;
                    y = 0.0f;
                    break;
            }

            go.transform.position = new Vector2(x, y);
            go.GetComponent<Card>().Setting(Maincard[i]);

        }
        //Card Full Count
        leftCards = Maincard.Count;
    }

 

기존에 배웠던 array로 카드 만드는 방식이 아닌 List로 생성을 했고

if, else if문이 아닌 switch 문을 사용하였다

 

+ Recent posts