ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 4장 Open Challenge
    C++ 2018. 10. 30. 02:53

    n명이 하는 한글 끝말잇기 게임을 작성해보자. 아래의 결과와 같이 선수의 수를 입력받고, 선수 각 사람의 이름을 입력받아 게임을 시작한다.


    소스코드


    #include <iostream>
    using namespace std;
    #include <string>
    class Player {
        string name;
    public:
        void setName(string name) { this->name = name; }
        string getName() { return name; }
    };
    class WordGame {
        Player *p;
        int num;
    public:
        WordGame(int num);
        ~WordGame() { delete[] p; }
        void game();
    };
    WordGame::WordGame(int num) {
        this->num = num;
        p = new Player[num];
    }
    void WordGame::game() {
        string n;
        for (int i = 0; i <num; ++i) {
            cout << "참가자의 이름을 입력하세요. 빈칸 없이>>";
            cin >> n;
            p[i].setName(n);
        }
        cout << endl;
        cout << "시작하는 단어는 아버지입니다" << endl;
        string a = "아버지";
        string b;
        int i = 0;
        for (;;) {
            cout << p[i%num].getName() << ">>";
            cin >> b;
            int j = a.size();
            if (a.at(j - 2) == b.at(0) && a.at(j - 1) == b.at(1)) {
                a = b;
            }
            else {
                cout << p[i%num].getName() << "탈락!!"<<endl;
                break;
            }
            ++i;
        }
    }
    int main() {
        cout << "끝말 잇기 게임을 시작합니다" << endl;
        cout << "게임에 참가하는 인원은 몇명입니까?";
        int num;
        cin >> num;
        WordGame wordgame(num);
        wordgame.game();
    }


    실행결과




    WordGame 클래스 - 끝말잇기 게임 전체를 운영하는 클래스

    Player 클래스 - 선수를 표현하는 클래스

    main() 함수 - WordGame 객체를 생성하고 게임을 시작하는 함수


    한글은 2바이트 코드로 저장되므로 string 객체에 저장된 한글 문자열에서 끝 글자를 비교하려면 두 바이트를 함께 비교하여야 합니다.


    if (a.at(j - 2) == b.at(0) && a.at(j - 1) == b.at(1))


    앞 문자열 끝에 두 바이트와 뒷 문자열 앞에 두 바이트를 비교하여 끝말잇기가 성공했는지 확인하는 코드

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

    명품 C++ 5장 2번  (0) 2018.10.31
    명품 C++ 5장 1번  (0) 2018.10.31
    명품 C++ 4장 14번  (1) 2018.10.30
    명품 C++ 4장 13번  (0) 2018.10.30
    명품 C++ 4장 12번  (0) 2018.10.30

    댓글

© 2018 TISTORY. All rights reserved.