ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 하이로세븐_함수버전
    카테고리 없음 2013. 2. 20. 01:50
    반응형

    #include<iostream>
    #include<windows.h>
    using namespace std;
    const int MAX_CARD=52;
    const int MAX_CARD_OPEN=4;
    const int MAX_SHUFFLE = 100;
    const int MAX_PLAY = MAX_CARD-MAX_CARD_OPEN;

    //메뉴 함수
    void ShowMenu();
    //선택입력 함수
    int UserSelect();
    //셔플함수
    void CardShuffle(int*Card);
    //범위선택함수
    int UserSelectScope(void);
    //범위 메뉴출력 함수
    void ShowScopeMenu(void);
    //카드 모양출력함수
    void ShowCardShape(int *Card);
    //카드 숫자 출력함수
    void ShowCardNumber(int *Card);
    //카드 히스토리 출력함수
    void ShowCardHistory(int *Card,int cardhistory);
    //베팅함수
    int Betting(void);
    //숨겨진 카드 출력함수
    void ShowHiddenCard(int *Card,int cardhistory);
    ///유저의 선택여부에 따라 판단하고 돈지급하는 함수
    bool UserSelectNumberCheckMoney(int checknumber,int userselect,int bettingmoney,int usermoney);

    //계속여부확인함수
    int ContinueCheck(void);
    int main(void)
    {
    int Card[MAX_CARD];
    int nUserSelect=-1;
    int UserMoney = 100000;  
    int BettingMoney=0;
    bool win=false;
    //int Win=-1;//맞춤여부판단변수
    while (true)
    {
    int nSelectMenu = -1;
    int CardHistory=0,NowPlay=0;//카드의 히스토리와 카드플레이횟수를 저장할 변수
    system("cls");
    ShowMenu();//메뉴보여주기
    nSelectMenu= UserSelect();//유저가 선택한 번호를 호출
    if (nSelectMenu==2)
    {
    cout<<"게임을 종료합니다.";
    break;
    }
    cout<<"카드를 섞는 중입니다..."<<endl;
    Sleep(2000);
    CardShuffle(Card);//카드를 섞는 함수
    while (NowPlay<MAX_PLAY)//남은카드장수만큼 플레이하기
    {
    int nUserSelectScope=-1;
    int nContinueSelect=-1;//계속여부 
    ShowCardHistory(Card,CardHistory);//카드히스토리 보여주기
    cout<<"[?]"<<endl;
    BettingMoney=Betting();//배팅금액입력
    nUserSelectScope=UserSelectScope();//유저 하이로우세븐 선택
    //숨겨진 카드 출력
    ShowHiddenCard(Card,CardHistory);
    //< 맞춤 여부 판단.
    int nCheckNumber = Card[MAX_CARD_OPEN + CardHistory] % 13 + 1;
    win=UserSelectNumberCheckMoney(nCheckNumber,nUserSelectScope,BettingMoney,UserMoney);//유저가 선택한 숫자를 체크하여 그에 맞는 돈지급하고,돈이없는경우 끝내기
    nContinueSelect=ContinueCheck();//계속여부확인
    if (nContinueSelect==2)
    {
    break;
    }
    if (win ==true)
    {
    system("cls");
    cout<<"돈없다...게임종료하고 다시 시작한다..."<<endl;
    Sleep(2000);
    break;
    }
    NowPlay++;//
    CardHistory++;
    }
    }
    return 0;
    }
    //메뉴출력함수
    void ShowMenu()
    {
    cout<<"1. 게임시작 2. 게임 종료"<<endl;
    cout<<"선택 :";
    }
    //유저메뉴선택함수
    int UserSelect()
    {
    int nSelect;
    cin>>nSelect;
    return nSelect;
    }
    //카드 셔플 함수
    void CardShuffle(int*Card)
    {
    if (Card==NULL)
    {
    return;
    }
    int Dest,Src;
    for (int i=0;i<MAX_CARD;i++)
    {
    Card[i]=i+1;
    }
    for (int i=0;i<MAX_SHUFFLE;i++)
    {
    Dest = rand()%MAX_CARD;
    Src = rand()%MAX_CARD;
    swap(Card[Dest],Card[Src]);
    }

    }
    //범위 선택함수
    int UserSelectScope(void)
    {
    int nSelectScope;
    ShowScopeMenu();//범위선택메뉴함수 호출
    cin>>nSelectScope;
    return nSelectScope;
    }
    //범위 메뉴 출력함수
    void ShowScopeMenu(void)
    {
    cout<<"1. 하이 2. 로우 3. 세븐"<<endl;
    cout<<"범위 선택 : ";
    }
    //카드 모양 출력함수
    void ShowCardShape(int *Card)
    {
    //널포인터 체크 
    if (Card==NULL)
    {
    return;
    }
    int nShape = *Card/13;
    // ♠ ◆ ♥ ♣
    switch( nShape )
    {
    case 0:
    {
    cout << "♠";
    }
    break;
    case 1:
    {
    cout << "◆";
    }
    break;
    case 2:
    {
    cout << "♥";
    }
    break;
    case 3:
    {
    cout << "♣";
    }
    break;
    default:
    {
    cout << "먼소리???" << endl;
    }
    break;
    }
    }
    //카드 숫자 출력
    void ShowCardNumber(int *Card)
    {
    if (Card==NULL)
    {
    return;
    }
    int nNumber = *Card%13;
    //
    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;
    }
    break;
    }
    }
    //카드 히스토리 출력
    void ShowCardHistory(int *Card,int cardhistory)
    {
    if (Card==NULL)
    {
    return;
    }
    for (int i=cardhistory;i<cardhistory+MAX_CARD_OPEN;i++)
    {
    ShowCardShape(&Card[i]);
    ShowCardNumber(&Card[i]);
    cout<<" "<<endl;
    }
    }
    //배팅함수
    int Betting(void)
    {
    int nBettingMoney=0;
    cout<<"배팅금액 입력 :";
    cin>>nBettingMoney;
    return nBettingMoney;
    }
    void ShowHiddenCard(int *Card,int cardhistory)
    {
    if (Card==NULL)
    {
    return;
    }
    int nHiddenShape = Card[cardhistory+MAX_CARD_OPEN]/13;
    int nHiddenNumber = Card[cardhistory+MAX_CARD_OPEN]%13;
    cout<<"숨김카드 :";
    switch( nHiddenShape )
    {
    case 0:
    {
    cout << "♠";
    }
    break;
    case 1:
    {
    cout << "◆";
    }
    break;
    case 2:
    {
    cout << "♥";
    }
    break;
    case 3:
    {
    cout << "♣";
    }
    break;
    default:
    {
    cout << "먼소리???" << endl;
    }
    break;
    }
    switch( nHiddenNumber )
    {
    case 0:
    {
    cout << "A";
    }
    break;
    case 10:
    {
    cout << "J";
    }
    break;
    case 11:
    {
    cout << "Q";
    }
    break;
    case 12:
    {
    cout << "K";
    }
    break;
    default:
    {
    cout << nHiddenNumber+1;
    }
    break;
    }
    cout<<endl;
    }
    //계속여부확인함수
    int ContinueCheck(void)
    {
    int nContinueSelect=-1;
    cout<<"1. 계속 2. 끝내기"<<endl;
    cout<<"계속? :";
    cin>>nContinueSelect;
    return nContinueSelect;
    }
    ///유저의 선택여부에 따라 판단하고 돈지급하는 함수
    bool UserSelectNumberCheckMoney(int checknumber,int userselect,int bettingmoney,int usermoney)
    {
    bool nWin = false;
    if( userselect == 1 )
    {
    if( 7 < checknumber )
    {
    cout <<"맞췄다."<< endl;
    cout<<"지급금액:"<<bettingmoney*2<<endl;
    }
    else
    {
    cout <<"틀렸다."<< endl;
    usermoney=usermoney-bettingmoney*2;
    cout<<"차감금액:"<<bettingmoney*2<<endl;
    if (usermoney<0)
    {
    return true;
    }
    }
    }
    else if( userselect == 2 )
    {
    if( checknumber < 7 )
    {
    cout <<"맞췄다."<< endl;
    cout<<"지급금액:"<<bettingmoney*2<<endl;
    }
    else
    {
    cout <<"틀렸다."<< endl;
    usermoney=usermoney-bettingmoney*2;
    if (usermoney<0)
    {
    return true;
    }
    cout<<"차감금액:"<<bettingmoney*2<<endl;
    }
    }
    else
    {
    if( 7 == checknumber )
    {
    cout <<"맞췄다."<< endl;
    cout<<"지급금액:"<<bettingmoney*5<<endl;
    }
    else
    {
    cout <<"틀렸다."<< endl;
    usermoney=usermoney-bettingmoney*5;
    if (usermoney<0)
    {
    return true;
    }
    cout<<"차감금액:"<<bettingmoney*5<<endl;
    }
    }

    return false;
    }

    반응형
Designed by Tistory.