-
명품 C++ 6장 Open ChallengeC++ 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