#3 게임 - 카드섞는 거 만들어보기 - (스팀 카드매칭게임 )

in #kr-game8 years ago (edited)

안녕하세요. @tcban입니다.

설 연휴로

게임 작업은 머릿속에서만 하고
구현을 지금에서야 하네요.
지금까지 누적 작업시간 : 총 2시간 (반성합니다..)

혼자 게임 만들면 정리하느라 어질어질하옵니다.. 왜냐고요?
사실 기획서가 마무리 안되었기 때문이죠.

그래서 기획서 없이는 키보드 치지 말자고 다짐해도
머릿속에 있는 그림으로 한 번 해보려는 습관이 발동했어요.
(일종의 방황? 반항 그런 거 같아요)

게임제작 정식 일지로 기록하고 싶지는 않지만
책상 위 스탠드 불빛이 예뻐요.
괜히 감성수치 올라와 기록해봅니다.

앞으로 할 일

  1. 나도 모르겠는 아래 이 코드는 구조화 (반성합니다.)
  2. 기획안 정리 먼저 하자 다짐해 봅니다.

첫번째 해야할 일은

  • 약 20개 카드를 랜덤으로 섞어서 나타나게 하는 것입니다.

고려할 점

  • 20개 카드 배열을 만들어 놓았습니다.
  • 사실 똑같은 카드를 뒤집어 찾는 것이니 실제 카드는 10개만 있으면 되겠죠
  • 배열을 2개로 분리해 봅니다.

배열 정리

  • 첫번째, 두번째 배열에 1~10까지 숫자를 랜덤으로 뽑아 저장 (2회)
  • 세번째 배열에 첫번째와 두번째 배열을 합쳐 숫자열을 만듭니다.

카드 이미지 불러오기

  • 위에서 만든 세번째 배열 순서가 있습니다. (1~20까지 랜덤으로 섞인)
  • 배열 순서에 따라 이미 정해진 카드 이미지를 불러옵니다

일단 첫번째 배열만 구현해봅니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;`

//함수 
public class questionBox : MonoBehaviour {
    public static questionBox instace; //싱글톤 선언
    public int[] questionBoxArray;  //첫번째 배열 - 인스펙터에서 10으로 설정
    public List<Sprite> questionImages = new List<Sprite>(); //카드 이미지 배열

// 싱글톤 호출
    void Awake()
    {
        if (questionBox.instace == null)
            questionBox.instace = this;
    }

// 첫번째 카드 생성 -> 불러오기

    void firstQBoxDisplay ()
    {
        firstBoxCheckSum = 0;

        for (int i=0; i<questionBoxArray.Length; i++)
        {
            questionBoxArray[i] = Random.Range(1, questionBoxArray.Lengt+1); 

// 랜덤으로 뽑은 함수에 이미지 대입하기, ShapeManager 별도)

            if (questionBoxArray[i] == 1)
            {
                int randomImageNum = Random.Range(0, shapeManager.instace.randomimages.Length);
                shapeManager.instace.firstBoxImages[i].sprite = shapeManager.instace.randomimages[randomImageNum];
            }
            else
            {
                shapeManager.instace.firstBoxImages[i].sprite = null;
            }
        }
        checkTheFirstQBox();
    }

 // Use this for initialization
       void Start () {
        firstQBoxDisplay();
        checkTheFirstQBox();      
       } 

       void Update () {     
       }
}

카드 이미지 Manager

  • 배열로 카드 이미지 관리해 두었습니다. 임시로요.. 임시 temp.. tmp..
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class shapeManager : MonoBehaviour {
    public static shapeManager instace;
    public Sprite [] randomimages;
    public Image[] firstBoxImages;
    void Awake()
    {
        if (shapeManager.instace == null) shapeManager.instace = this;
    }
   
  
  
    void Start () {
 
    }
       
       void Update () {
              
       }
}

똑같은 숫자를 뽑았을때 처리

  • 스트링으로 테스트 진행했습니다.
  • 사실 이미 라이브러리에 완성된 거 있습니다.
  • 머릿속으로 만든 거 구현해 봅니다.
public void randomNumberCheck()
    {

        int tmp1;
        int tmp2;

                 //ES2는 내부 데이터 베이스 Asset
        if (!ES2.Exists ("chatInt")) {

            //카드 하나를 뽑는다 
            tmp1 = Random.Range (0, _stringTemp.Count);

            //뽑은 번호를 저장한다 
            ES2.Save (tmp1, "chatInt");

            //랜덤으로 뽑은 카드를 뿌린다 
            _charText.text = _stringTemp [tmp1];

        } else {

            //랜덤으로 번호를 뽑는다 
            tmp2 = Random.Range (0, _stringTemp.Count);

            //이미 뽑은 번호를 가져온다 
            tmp1 = ES2.Load<int> ("chatInt");

            // 둘 이 같 으 면 
            while (tmp1 == tmp2) {

                // 한 번 더 뽑는다 
                tmp2 = Random.Range (0, _stringTemp.Count);

                // 그리고 같지 않으면 끝낸 다 
                if (!(tmp1 == tmp2)) {

                    break;
                }

            }

            // 같 지 않은 새 로 생긴 번호의 스트링을  출력 한 다 
            _charText.text = _stringTemp [tmp2];

            // 새로 뽑은 번호를 과거 스트링 셋으로 저장한다. 
            ES2.Save (tmp2, "chatInt");


        }
    }

결과

  • 테스트 하느라 카드는 3개 밖에 없습니다만,
  • 카드 2개씩 나오도록 짝 맞추기는 성공!

지난 이야기

#1 게임 - 카드매칭게임 컨셉
#2 게임 - 카드매칭게임 - 메인화면 샘플

follow me!

Sort:  

You got a 3.13% upvote from @ipromote courtesy of @tcban!
If you believe this post is spam or abuse, please report it to our Discord #abuse channel.

If you want to support our Curation Digest or our Spam & Abuse prevention efforts, please vote @themarkymark as witness.

Sneaky Ninja Attack! You have been defended with a 1.23% vote... I was summoned by @tcban! I have done their bidding and now I will vanish...Whoosh

ㅎㅎㅎ 카드매칭 게임이군요.
내보내신다면 재밌게 해보겠습니다 ㅎㅎ

아직 공정률이 많이 멀었지만, 포스팅 통해서 알려드릴게요. 감사합니다.

책상 위 스탠드 불빛이 예뻐요.
괜히 감성수치 올라와 기록해봅니다.

히히 잊었는데 이거 꽤나 중요하더라구요
나도 다시 설치 ㅎㅎ

네, 너무 이쁘네요 ㅠㅠ ㅎㅎㅎ
괜히 감성 생겨서,, ㅎㅎㅎ

사천성 코인버전!

들려주셔서 감사합니다.~ 저도 팔로하고 가요

뚝딱 만드시네요~ㅎㅎ역시 개발자분들이 세상에서 제일 부럽습니다 ㅠㅜ

저는.. 디자이너 분들이 부러워요 ㅎㅎㅎ ^^; 들려주셔서 감사합니다.

개발자시군요~ 포스팅에서 바로 플레이되는 건가요?! 완전 기대!!

개발은 취미로 하고 있어요 ~ ^^ 포스팅에서 플레이는 안될 것 같고, APP으로 내야할 거 같아요

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.078
BTC 61890.78
ETH 1628.33
USDT 1.00
SBD 0.40