#3 게임 - 카드섞는 거 만들어보기 - (스팀 카드매칭게임 )
안녕하세요. @tcban입니다.
설 연휴로
게임 작업은 머릿속에서만 하고
구현을 지금에서야 하네요.
지금까지 누적 작업시간 : 총 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개씩 나오도록 짝 맞추기는 성공!
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으로 내야할 거 같아요