살면서 처음으로 월남뽕이라는 게임을 알게 되었다...
원래는 화투로 하는 게임이지만, 트럼프 카드를 사용하여하는 게임으로 코드를 만들어봤다.
처음에 너무 어렵게 생각해서인지 만드는데 좀 오래 걸리긴 했다....ㅎㅎ;;
빌드하고 실행해보면서 느낀 점인데, 이기는 횟수보다 지는 횟수가 더 많은 것 같다.
이래서 도박은 돈만 잃는 짓이라는 걸까??...
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
srand(time(NULL));
int card[52]; //카드덱
int money = 50000, coin; //소지금, 배팅금
int index = 0; //배열 index값 조절용 변수
int low, high; //카드 2장 중 크고 작은 것 구분할 변수
cout << "~~~월남뽕 게임~~~" << endl;
//카드 생성(총 53장의 트럼프 카드)
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
card[index] = j + 1;
index++;
}
}
//카드 섞어주기(셔플)
for (int i = 0; i < 100; i++)
{
int temp;
int num1 = rand() % 52;
int num2 = rand() % 52;
temp = card[num1];
card[num1] = card[num2];
card[num2] = temp;
}
index = 0; //다시 쓰기위해서 초기화
while (true)
{
//섞어둔 카드덱 위에서부터 3장씩 뽑아쓴다.
//카드 크기 비교
if (card[index] <= card[index + 1])
{
low = card[index];
high = card[index + 1];
}
else
{
low = card[index + 1];
high = card[index];
}
//본문
cout << low << ", " << high << ", ?" << endl;
cout << "내 소지금 : " << money << endl;
cout << "배팅 금액을 입력하세요 -> ";
cin >> coin;
if (coin < 1000) //배팅금액 확인
{
cout << "배팅 금액이 적습니다. 다시 배팅해주세요." << endl << endl;;
continue;
}
//승패 비교
if (low < card[index + 2] && card[index + 2] < high)
{
cout << "이겼다" << endl;
cout << "히든카드 : " << card[index + 2] << endl << endl;
money += coin;
}
else
{
cout << "졌다" << endl;
cout << "히든카드 : " << card[index + 2] << endl << endl;
money -= coin;
}
//반복 유무 확인
if ((index + 2) >= 48)
{
cout << "카드를 다 사용했습니다." << endl;
cin >> coin;
break;
}
else if (money <= 0)
{
cout << "소지금을 다 사용했습니다." << endl;
cin >> coin;
break;
}
else
{
index += 3;
}
}
}
조금 더 코드를 줄여서 최적화함.
카드덱을 생성하는 세가지 방법을 추가함.
배팅금의 예외처리를 하나 더 추가함.
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
srand(time(NULL));
int card[52];
int money = 50000, coin, count = 0;
cout << "~~~월남뽕 게임~~~" << endl;
//카드 생성 첫번째 방법
for (int i = 0; i < 52; i++)
{
card[i] = i % 13 + 1;
}
//카드 생성 두번째 방법
for (int i = 0; i < 52; i++)
{
card[i] = i / 4 + 1;
}
//카드 생성 세번째 방법
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
card[i * 13 + j] = j + 1;
}
}
//카드 섞어주기(셔플)
for (int i = 0; i < 100; i++)
{
int num1 = rand() % 52;
int num2 = rand() % 52;
int temp = card[num1];
card[num1] = card[num2];
card[num2] = temp;
}
while (true)
{
//섞어둔 카드덱 위에서부터 3장씩 뽑아쓴다.
//2장은 공개, 마지막 1장은 히든카드
//카드 크기 비교(셔플사용)
if (card[count] > card[count + 1])
{
int temp = card[count];
card[count] = card[count + 1];
card[count + 1] = temp;
}
cout << card[count] << ", " << card[count + 1] << ", ?" << endl;
cout << "내 소지금 : " << money << endl;
cout << "배팅 금액을 입력하세요 -> ";
cin >> coin;
if (coin < 1000) //배팅금액 확인
{
cout << "배팅 금액이 적습니다. 다시 배팅해주세요." << endl << endl;
continue;
}
else if (coin > money)
{
cout<<"금액이 부족합니다. 다시 배팅해주세요" << endl << endl;
continue;
}
//승패 비교
if (card[count] < card[count + 2] && card[count + 2] < card[count + 1])
{
cout << "이겼다" << endl;
cout << "히든카드 : " << card[count + 2] << endl << endl;
money += coin;
}
else
{
cout << "졌다" << endl;
cout << "히든카드 : " << card[count + 2] << endl << endl;
money -= coin;
}
count += 3;
//반복 유무 확인
if (count > 47 || money <= 0)
{
cout << "게임을 종료합니다." << endl;
cin >> coin;
break;
}
}
}
'코딩' 카테고리의 다른 글
슬라이드 게임 (0) | 2022.10.24 |
---|---|
Low High Seven 게임 (0) | 2022.10.19 |
별찍기 / 숫자야구게임 (0) | 2022.10.18 |
로또번호 자동 생성기 (2) | 2022.10.15 |
가위바위보 게임 (2) | 2022.10.13 |