본문 바로가기

코딩

월남뽕 게임

살면서 처음으로 월남뽕이라는 게임을 알게 되었다...

원래는 화투로 하는 게임이지만, 트럼프 카드를 사용하여하는 게임으로 코드를 만들어봤다.

처음에 너무 어렵게 생각해서인지 만드는데 좀 오래 걸리긴 했다....ㅎㅎ;;

빌드하고 실행해보면서 느낀 점인데, 이기는 횟수보다 지는 횟수가 더 많은 것 같다.

이래서 도박은 돈만 잃는 짓이라는 걸까??...

#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