오랜만에 다시 왔네요.

 

이번에 만들 카드 게임은 다들 한번쯤은 해보셨을 블랙잭을 만들어볼거에요.

 

필요로하는 헤더는 이렇게 되겠습니다.

#include <iostream>
#include <time.h>
#include <stdlib.h>

그리고 카드는 조커를 제외하고 52장이므로, 카드 갯수를 선언해줍니다.

#define CARD_COUNT	52

또한 남은 카드도 글로벌로 선언해줍니다.

int Remain = CARD_COUNT;

이제 남은 필요한 변수들을 생각해봅시다.

 

카드의 문양과 숫자를 지정해줄 문자열변수, 무슨 카드가 뽑혔는지 알려줄 정수형 변수, 코인, 다시할건지 물어볼 bool형 변수 이렇게 4개가 주로 사용될 변수겠죠?

 

그러면 이제 그 변수들을 선언을 해줍시다.

const char* m_card[CARD_COUNT] = {	"♠1", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7", "♠8", "♠9", "♠10", "♠11", "♠12", "♠13",
					"◆1", "◆2", "◆3", "◆4", "◆5", "◆6", "◆7", "◆8", "◆9", "◆10", "◆11", "◆12", "◆13",
					"♥1", "♥2", "♥3", "♥4", "♥5", "♥6", "♥7", "♥8", "♥9", "♥10", "♥11", "♥12", "♥13", 
					"♣1", "♣2", "♣3", "♣4", "♣5", "♣6", "♣7", "♣8", "♣9", "♣10", "♣11", "♣12", "♣13"};
int m_index[CARD_COUNT];
int m_coin = 0; 
bool m_reGame = true;

이제 카드 섞기와 코인 입력 등 초기화 부분의 함수를 만들어 볼겁니다.

void InitGame(int index[CARD_COUNT], int &coin, bool &reGame)

함수의 인수부터 설명하자면, 왼쪽부터 카드 체크용 변수, 코인값, 다시 게임할지 물어봐주는 변수입니다.

for (int i = 0; i < CARD_COUNT; i++)
{
	index[i] = i;
}

먼저 카드를 처음부터 정렬해줍니다.

srand(time(NULL));
int temp;
int rn;
for (int i = 0; i < CARD_COUNT - 1; i++)
{
	rn = rand() % (CARD_COUNT - 1 - i) + i;
	temp = index[i];
	index[i] = index[rn];
	index[rn] = temp;
}

그 후 카드를 섞어줍시다. 이러면 초기화는 끝났습니다.

 

그러면 이제 인게임을 만들차례가 됬죠?

int temp[4];
for (int i = 0; i < 4; i++)
{
	temp[i] = rand() % CARD_COUNT;
	for (int j = 0; j < i; j++)
	{
		if (temp[i] == temp[j])
		{
			i--;
			break;
		}
	}
	if (index[temp[i]] == -1)
		i--;
}
for (int i = 0; i < 4; i++)
{
	index[temp[i]] = -1;
}

Remain -= 4;

카드를 이제 딜러(CPU)와 플레이어꺼 카드 총 4장을 뽑아야 하는데 카드가 중복이 되면 안되겠죠?

 

그래서 그 부분의 예외처리하는 부분과 남은 카드장수를 체크하는 부분의 코드입니다.

 

남은 코드와 내용은 다음주에 이어서 업로드 됩니다.

 

남은 부분은 블랙잭의 규칙과 배팅, 다시할지 여부가 남았습니다. 다음주에 뵈요

'프로그래밍 > C, C++ ' 카테고리의 다른 글

C,C++ 응용 - 콘솔 카드게임 만들기(후편)  (0) 2020.12.07
C, C++ 기초 - 생성자, 소멸자  (0) 2020.05.06
C,C++ 기초 - 클래스  (0) 2020.05.06
C, C++ 기초 - 포인터  (0) 2020.04.20
C, C++ 기초 - 함수  (0) 2019.08.25
Posted by 서융
: