ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 4장 14번
    C++ 2018. 10. 30. 02:32

    14. 갬블링 게임을 만들어보자. 두 사람이 게임을 진행하며, 선수의 이름을 초기에 입력 받는다. 선수가 번갈아 자신의 차례에서 <Enter> 키를 치면 랜덤한 3개의 수가 생성되고 모두 동일한 수가 나오면 게임에서 이기게 된다. 숫자의 범위가 너무 크면 3개의 숫자가 일치할 가능성이 낮아 숫자의 범위를 0~2로 제한한다. 랜덤 정수 생성은 문제 3번의 힌트를 참고하라. 선수는 Player 클래스로 작성하고, 2명의 선수는 배열로 구성하라. 그리고 게임은 GamblingGame 클래스로 작성하라.


    소스코드


    #include <iostream>
    using namespace std;
    #include <cstdlib>
    #include <ctime>
    #include <string>
    class Player {
        string name;
    public:
        void setName(string name) { this->name = name; }
        string getName() { return name; }
    };
    class GamblingGame {
        Player *p;
    public:
        GamblingGame();
    ~GamblingGame() { delete p; }
        void start();
        void game();
        bool drawCard();
    };
    GamblingGame::GamblingGame() {
        srand((unsigned)time == 0);
        p = new Player[2];
        cout << "***** 갬블링 게임을 시작합니다. *****" << endl;
    }
    void GamblingGame::start() {
        cout << "첫번째 선수 이름>>";
        string name;
        cin >> name;
        p[0].setName(name);
        cout << endl;
        cout << "두번째 선수 이름>>";
        cin >> name;
        p[1].setName(name);
        cout << endl;
    }
    bool GamblingGame::drawCard() {
        int card[3];
        for (int i = 0; i < 3; ++i) {
            int n = rand() % 3;
            card[i] = n;
            cout << card[i] << "\t";
        }
        if (card[0] == card[1] && card[0] == card[2])
            return true;
        else
            return false;
    }
    void GamblingGame::game() {
        string n;
        int i = 0;
        for (;;) {
            cout << p[i % 2].getName()<<endl;
            getline(cin, n);
            if (this->drawCard()) {
                cout << p[i % 2].getName() << "님의 승리" << endl;
                break;
            }
            else
                cout << "아쉽군요!"<<endl;
            ++i;
        }
    }
    int main() {
        GamblingGame g;
        g.start();
        g.game();
    }


    실행결과



    Player 에는 선수 이름을 넣고 GamblingGame 클래스에서 난수를 발생시켜 출력 후 세수가 같은지 판단하여 결과를 출력했습니다.

    'C++' 카테고리의 다른 글

    명품 C++ 5장 1번  (0) 2018.10.31
    명품 C++ 4장 Open Challenge  (3) 2018.10.30
    명품 C++ 4장 13번  (0) 2018.10.30
    명품 C++ 4장 12번  (0) 2018.10.30
    명품 C++ 4장 11번  (0) 2018.10.30

    댓글

© 2018 TISTORY. All rights reserved.