ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 6장 Open Challenge
    C++ 2018. 11. 2. 19:03

    Up & down 게임 만들기


    Up & Down 게임 프로그램을 작성해보자. 게임에 참석하는 사람은 2명이며, 번갈아 가며 다음과 같이 숨겨진 답에 접근해 간다. Up & Down 게임은 전체적으로 UpAndDownGame 클래스로 작성하고 static 멤버로만 구성하라. 선수를 표현하기 위해 Person 클래스를 작성하고 main() 함수는 프로그램을 시작시키는 기능정도로만 구현하라.


    소스코드


    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    #include <string>
    using namespace std;
    class Person {
        string name;
    public:
        void setName(string n) { name = n; }
        string getName() { return name; }
    };
    class UpAndGame {
        static int n; // 랜덤하게 생성한 숨겨진 답
        static int left, right; // 답은 left와 right 사이에 있다.
    public:
        static void game();
    };
    int UpAndGame::n; // 정답은 0부터 99 사이의 랜덤한 숫자
    int UpAndGame::left = 0;
    int UpAndGame::right = 99;
    void UpAndGame::game() {
        UpAndGame::n = rand() % 100;
        cout << "Up & Down 게임을 시작합니다" << endl;
        Person p[2];
        p[0].setName("김인수");
        p[1].setName("오은경");
        int i = 0;
        bool sw;
        for (;;) {
            sw = true;
            cout << "답은 " << left << "과 " << right << "사이에 있습니다." << endl;
            cout << p[i % 2].getName() << ">>";
            int num;
            cin >> num;
            if (num < UpAndGame::n) // 입력 받은 숫자가 답보다 낮으면 num과 right 사이이므로
                UpAndGame::left = num; // left 를 num으로 변경
            else if (num > UpAndGame::n) // 입력 받은 숫자가 답보다 높으면 left와 num 사이이므로
                UpAndGame::right = num; // right를 num 으로 변경
            else if (num == UpAndGame::n) { // 답과 같다면
                cout << p[i % 2].getName() << "가 이겼습니다!!" << endl; // 해당 플레이어 승리
                break;
            }
            else {
                cout << "입력이 잘못 되었습니다.다시 입력하세요" << endl;
                sw = false;
            }
            if(sw) ++i; // 다음플레이어
        }
    }
    int main() {
        srand((unsigned)time(0));
        UpAndGame::game();
    }


    실행결과



    랜덤으로 숫자를 생성하는 rand 함수는 game() 함수 안에서 해줘야 항상 다른값이 나옵니다.

    staitc 멤버 변수는 외부에서 항상 초기화나 선언해주어야합니다.

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

    명품 C++ 7장 5번  (0) 2018.11.03
    명품 C++ 7장 1번 2번 3번 4번  (0) 2018.11.03
    명품 C++ 6장 9번  (0) 2018.11.02
    명품 C++ 6장 8번  (2) 2018.11.02
    명품 C++ 6장 7번  (0) 2018.11.02

    댓글

© 2018 TISTORY. All rights reserved.