본문 바로가기
카테고리 없음

로우하이세븐(함수) 2Ver

by ByteBridge 2013. 2. 20.
반응형

#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;
}

반응형