반응형
#include <iostream>
#include <windows.h>
#include <ctime>
using namespace std;
// 셔플
void Shuffle( int nCard[], int nCardMax );
// 지난 카드 보기
void PrevCardOutput( int nCard[], int nNowCardPos, int nViewCount );
// 메뉴 출력
void MenuOutput(void);
// 입력
int Input( const char *pMent );
// 카드 출력
void CardOutput( int nCard );
// 판별
bool CheckCard( int nInput, int nNumber, int *pMoney, int nBettingMoney, int nBetting_Percent );
// 결과 출력
bool ResultOutput( bool bIsWin );
int main(void)
{
srand( (unsigned int)time(NULL) );
//////////////////////////////////////////////////////////////////////////
// 상수
// 카드 갯수
const int CARDMAX = 52;
// 기본 소지금
const int BASEMONEY = 100;
// 지난 카드 보여주는 개수
const int VIEW_PREVCARD = 5;
// 하이로우배율
const int BETTING_PERCENT = 2;
//////////////////////////////////////////////////////////////////////////
// 변수
// 카드 배열
int nCard[CARDMAX] = {};
// 소지금
int nMoney = BASEMONEY;
// 베팅머니
int nBettingMoney = 0;
// 입력변수
int nInput = 0;
// 판별 변수
bool bIsWin = false;
// 지난 카드 확인 변수
int nNowCardPos = 0;
// 게임 플레이 여부
bool bIsPlay = true;
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 소스
// 셔플
Shuffle( nCard, CARDMAX );
// 게임시작
while( bIsPlay )
{
system("cls");
// 지난 카드 보기
PrevCardOutput( nCard, nNowCardPos, VIEW_PREVCARD );
cout << "현재 소지금 : " << nMoney << endl;
cout << "=====================================" << endl;
// 메뉴출력
MenuOutput();
// 베팅입력
nInput = Input( "입력 : " );
// 나가기
if( nInput == 4 )
{
break;
}
// 베팅금액입력
nBettingMoney = Input( "베팅 금액 입력 : " );
// 베팅금 차감
nMoney -= nBettingMoney;
// 카드 보여주기
cout << "결과 발표!!" << endl;
cout << "카드 : ";
// 카드 출력
CardOutput( nCard[nNowCardPos] );
int nNumber = nCard[nNowCardPos] % 13;
// 결과 판별
bIsWin = CheckCard( nInput, nNumber, &nMoney, nBettingMoney, BETTING_PERCENT );
// 결과 체크
bIsWin = ResultOutput(bIsWin);
// 확인 카드 증가
nNowCardPos++;
Sleep(1000);
// 게임 종료 여부
if( nMoney <= 0 )
{
cout << "노숙자" << endl;
break;
}
}
//////////////////////////////////////////////////////////////////////////
return 0;
}
// 셔플
void Shuffle( int nCard[], int nCardMax )
{
// 카드값 대입
for( int i = 0; i < nCardMax; i++ )
{
nCard[i] = i;
}
// 카드 섞기
for( int i = 0; i < nCardMax * 3; i++ )
{
int nDev = rand()%nCardMax;
int nSrc = rand()%nCardMax;
int nTemp = nCard[nDev];
nCard[nDev] = nCard[nSrc];
nCard[nSrc] = nTemp;
}
}
// 지난 카드 보기
void PrevCardOutput( int nCard[], int nNowCardPos, int nViewCount )
{
cout << "=====================================" << endl;
// 지난 카드 보여주기
for( int i = 0; i < nViewCount; i++ )
{
int nPrevCard_Index = nNowCardPos - i - 1;
if( nPrevCard_Index < 0 )
{
break;
}
// 카드 출력
cout << i + 1 << "회전 카드 : ";
// 카드 출력
CardOutput( nCard[nPrevCard_Index] );
}
cout << "=====================================" << endl;
}
// 메뉴 출력
void MenuOutput(void)
{
cout << "하이로우세븐" << endl;
cout << "1. 하이" << endl;
cout << "2. 로우" << endl;
cout << "3. 세븐" << endl;
cout << "4. 나가기" << endl;
}
// 입력
int Input( const char *pMent )
{
int nInput = 0;
cout << pMent;
cin >> nInput;
return nInput;
}
// 카드 출력
void CardOutput( int nCard )
{
// 문양
int nMark = nCard / 13;
int nNumber = nCard % 13;
switch( nMark )
{
case 0:
{
cout << "♠";
}
break;
case 1:
{
cout << "◇";
}
break;
case 2:
{
cout << "♡";
}
break;
case 3:
{
cout << "♣";
}
break;
}
// 숫자
switch( nNumber )
{
case 0:
{
cout << "A";
}
break;
case 10:
{
cout << "J";
}
break;
case 11:
{
cout << "Q";
}
break;
case 12:
{
cout << "K";
}
break;
default:
{
cout << nNumber + 1;
}
}
cout << endl;
}
// 판별
bool CheckCard( int nInput, int nNumber, int *pMoney, int nBettingMoney, int nBetting_Percent )
{
// 판별
switch( nInput )
{
// 하이
case 1:
{
if( nNumber > 6 )
{
*pMoney += nBettingMoney * nBetting_Percent;
return true;
}
}
break;
// 로우
case 2:
{
if( nNumber < 6 )
{
*pMoney += nBettingMoney * nBetting_Percent;
return true;
}
}
break;
// 세븐
case 3:
{
if( nNumber == 6 )
{
*pMoney += nBettingMoney * nBetting_Percent * 2;
return true;
}
}
break;
}
return false;
}
// 결과 출력
bool ResultOutput( bool bIsWin )
{
if( bIsWin == true )
{
cout << "이겼다" << endl;
}
else
{
cout << "졌다" << endl;
}
return false;
}
반응형