1. 문제
Up & down 게임 만들기
Up & Down 게임 프로그램을 작성해보자. 게임에 참석하는 사람은 2명이며, 번갈아 가며 다음과 같이 숨겨진 답에 접근해 간다. Up & Down 게임은 전체적으로 UpAndDownGame 클래스로 작성하고 static 멤버로만 구성하라. 선수를 표현하기 위해 Person 클래스를 작성하고 main() 함수는 프로그램을 시작시키는 기능 정도로만 구현하라.
2. 결과
3. 코드
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
class Person {
string s[2];
int n;
public :
Person(){ s[0] = "류현진"; s[1] = "손연재"; n=-1; }
string getName() {
n++;
if( n == 2) {
n = 0;
return s[n];
}
else return s[n]; }
};
class UpAndDownGame {
static int result;
static int low, high;
public :
UpAndDownGame() { srand( (unsigned)time(0) ); }
static void Game() ;
};
int UpAndDownGame::high = 99;
int UpAndDownGame::low = 0;
int UpAndDownGame::result = 0;
void UpAndDownGame::Game() {
int number; Person p;
cout << "Up & Down 게임을 시작합니다." << endl;
result = rand() % 100;
while(1) {
string name = p.getName();
cout << "답은 " << low << "과 " << high << "사이에 있습니다." << endl;
cout << name << ">>";
cin >> number;
if( number > result )
high = number;
else if( number < result )
low = number;
else {
cout << name << "이(가) 이겼습니다!!" << endl;
break;
}
}
}
int main() {
UpAndDownGame gg;
gg.Game();
}
4. 설명
- Person 클래스는 사람의 이름을 저장하는 클래스 입니다.
-> 생성자에서 이름을 초기화 합니다.
-> getName() 멤버 함수는 저장된 이름들을 호출할 때마다 번갈아가면서 return 합니다.
- UpAndDownGame 클래스는 게임을 전체적으로 관리하는 클래스입니다.
-> static 변수 low, high, result를 선언합니다.
-> static 변수를 이용하기 위하여 game() 멤버 함수도 static으로 선언합니다.
-> 입력받은 값이 정답보다 크다면 high값을 수정하고 작다면 low 값을 수정하고 같다면 종료합니다.
※ 주의하실 점은 랜덤 한 수( result)는 while문 밖에서 한 번만 구해 저장하여야 합니다. 또한 이름은 while안에서 string 변수 하나의 저장을 해놔야지 나중에 종료 시 누가 이겼는지를 이름을 이용할 수 있습니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 7장 2번 (0) | 2019.04.16 |
---|---|
명품 C++ programming 실습문제 7장 1번 (0) | 2019.04.15 |
명품 C++ programming 실습문제 6장 8번 (0) | 2019.04.13 |
명품 C++ programming 실습문제 6장 7번 (0) | 2019.04.13 |
명품 C++ programming 실습문제 6장 6번 (0) | 2019.04.13 |