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 변수 하나의 저장을 해놔야지 나중에 종료 시 누가 이겼는지를 이름을 이용할 수 있습니다.

 

 

 

 

+ Recent posts