카드 게임 만들기
규칙
1. ◆, ♠, ♥, ♣ 의 문양을 가진 카드가 있다.
2. 각각 13장이 있으며 1 = A, 11 = J, 12 = Q, 13 = K 로 표시한다.
3. 두 장의 카드를 뽑아 확인하고 세번째 카드를 뽑을 것이다.
4. 세번째 카드를 뽑기 전에 배팅을 건다. (최소 금액이 있음)
5. 세번째 카드가 두 장의 카드 사이의 숫자면 배팅 금액의 2배를 얻는다.
6. 두 장의 카드 사이의 숫자가 아니라면 현재 금액에서 배팅금 차감.
7. 두 장의 카드의 숫자가 같거나 1밖에 차이가 안나더라도 최소 배팅금액은 걸어야 한다.
#include <iostream>
#include <time.h>
using namespace std;
struct card
{
int Num;
char *Image;
};
void main()
{
srand(time(NULL));
int i, j;
int count = 0;
int A, B;
card cardSet[52];
card temp;
int fullCount = 52;
char YesNo;
int N=0;
int minMoney = 100000;
int myMoney = 1000000;
int btMoney = 0;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 13; j++)
{
if (i == 0)
{
cardSet[count].Image = "◆";
}
else if (i == 1)
{
cardSet[count].Image = "♥";
}
else if (i == 2)
{
cardSet[count].Image = "♠";
}
else if (i == 3)
{
cardSet[count].Image = "♣";
}
cardSet[count].Num = j+1;
count++;
}
}
for (i = 0; i < 100; i++)
{
A = rand() % 52;
B = rand() % 52;
temp = cardSet[A];
cardSet[A] = cardSet[B];
cardSet[B] = temp;
}
cout << " 카드가 준비 되었습니다. " << endl;
while (true)
{
cout << " ----- ----- ----- ----- " << endl;
cout << " 남은 카드 수 : " << fullCount << endl;
cout << " 나의 잔고 : " << myMoney << endl;
cout << " 첫번째 카드를 뽑으시겠습니까? ( y , n ) " << endl;
cout << " - > ";
cin >> YesNo;
if (YesNo == 'y')
{
cout << " 첫번째 카드 : " << cardSet[N].Image << cardSet[N].Num << endl;
fullCount--;
}
else if (YesNo == 'n')
{
system("cls");
continue;
}
YesNo = 'a';
system("cls");
cout << " ----- ----- ----- ----- " << endl;
cout << " 남은 카드 수 : " << fullCount << endl;
cout << " 나의 잔고 : " << myMoney << endl;
cout << " 첫번째 카드 : " << cardSet[N].Image;
if ( cardSet[N].Num == 1 )
{
cout << "A" << endl;
}
else if ( cardSet[N].Num == 11 )
{
cout << "J" << endl;
}
else if ( cardSet[N].Num == 12 )
{
cout << "Q" << endl;
}
else if ( cardSet[N].Num == 13 )
{
cout << "K" << endl;
}
else
{
cout << cardSet[N].Num << endl;
}
cout << " 두번째 카드를 뽑으시겠습니까? ( y , n ) " << endl;
cout << " - > ";
cin >> YesNo;
if (YesNo == 'y')
{
cout << "두번째 카드 : " << cardSet[N + 1].Image << cardSet[N + 1].Num << endl;
fullCount--;
}
else if (YesNo == 'n')
{
system("cls");
fullCount++;
continue;
}
YesNo = 'a';
system("cls");
cout << " ----- ----- ----- ----- " << endl;
cout << " 남은 카드 수 : " << fullCount << endl;
cout << " 나의 잔고 : " << myMoney << endl;
cout << " 첫번째 카드 : " << cardSet[N].Image;
if ( cardSet[N].Num == 1 )
{
cout << "A" << endl;
}
else if ( cardSet[N].Num == 11 )
{
cout << "J" << endl;
}
else if ( cardSet[N].Num == 12 )
{
cout << "Q" << endl;
}
else if ( cardSet[N].Num == 13 )
{
cout << "K" << endl;
}
else
{
cout << cardSet[N].Num << endl;
}
cout << " 두번째 카드 : " << cardSet[N+1].Image;
if ( cardSet[N+1].Num == 1 )
{
cout << "A" << endl;
}
else if ( cardSet[N+1].Num == 11 )
{
cout << "J" << endl;
}
else if ( cardSet[N+1].Num == 12 )
{
cout << "Q" << endl;
}
else if ( cardSet[N+1].Num == 13 )
{
cout << "K" << endl;
}
else
{
cout << cardSet[N+1].Num << endl;
}
while (1)
{
cout << " 최소 배팅 금액 : " << minMoney << endl;
cout << " 배팅 금액 입력 : ";
cin >> btMoney;
cout << " 나의 카드 : " << cardSet[N + 2].Image << cardSet[N + 2].Num << endl;
cout << " ----- ----- ----- ----- " << endl;
if (cardSet[N].Num > cardSet[N + 2].Num && cardSet[N + 1].Num < cardSet[N + 2].Num ||
cardSet[N].Num < cardSet[N + 2].Num && cardSet[N + 1].Num > cardSet[N + 2].Num)
{
cout << " 승리 하셨습니다. " << endl;
myMoney += btMoney;
cout << " 배팅 금액의 2배를 얻으셨습니다! (" << btMoney * 2 << ")" << endl;
cout << " 현재 잔고 : " << myMoney << endl << endl;;
}
else
{
cout << " 패배 하였습니다. " << endl;
myMoney -= btMoney;
cout << " 배팅 금액을 잃어버리셨습니다! (" << btMoney << ")" << endl;
cout << " 현재 잔고 : " << myMoney << endl <<endl;
}
fullCount--;
N += 3;
if ( myMoney > 5000000 )
{
cout << " 목표 달성 500만원! 성공! " << endl;
break;
break;
}
if (N == 51)
{
cout << " 필요한 카드 수 3개보다 적습니다. " << endl;
break;
break;
}
if (myMoney < minMoney)
{
cout << " 보유한 돈이 최소 배팅 금액보다 적습니다. " << endl;
cout << " 게임을 종료합니다. " << endl;
exit(1);
}
cout << " 계속 진행하시겠습니까? ( y , n ) " << endl;
cout << " -> ";
cin >> YesNo;
if ( YesNo = 'y' )
{
system("cls");
break;
}
else if ( YesNo = 'n' )
{
cout << " " << myMoney << "원을 가지고 집으로 돌아가다." << endl;
}
else
{
cout << " 잘못 입력하셨습니다. 강제종료입니다. " << endl;
exit(1);
}
system("cls");
}
}
}
----- 소스 첨부 -----
질문은 따로 메일을 보내주시면 답변 드리겠습니다.
'- Programming > - C++' 카테고리의 다른 글
★ 16. 포인터의 활용 방법 (0) | 2015.12.29 |
---|---|
★ 15. 포인터의 사용 방법 (0) | 2015.12.29 |
★ 14. 숫자 빙고 게임 만들기 (0) | 2015.12.29 |
★ 13. 숫자 야구 게임 만들기 (3) | 2015.12.29 |
★ 12. 랜덤 함수를 이용한 로또 번호 뽑기 - 2 (0) | 2015.12.28 |