Up & down 게임 만들기
Up & Down 게임 프로그램을 작성해보자. 게임에 참석하는 사람은 2명이며, 번갈아 가며 다음과 같이 숨겨진 답에 접근해 간다. Up & Down 게임은 전체적으로 UpAndDownGame 클래스로 작성하고 static 멤버로만 구성하라. 선수를 표현하기 위해 Person 클래스를 작성하고 main() 함수는 프로그램을 시작시키는 기능정도로만 구현하라.
소스코드
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
class Person {
public:
Person();
~Person();
string name;
int num;
};
Person::Person() {};
Person::~Person() {};
int main() {
cout << "Up & Down 게임을 시작합니다." << endl;
Person p1;
Person p2;
p1.name = "김인수";
p2.name = "오은경";
srand((unsigned)time(0)); // 항상 다른 랜덤수를 발생시키기 위한 seed 설정
int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수가 n에 발생
n = n % 100; // n은 0에서 99 사이의 정수
int start = 0, end = 99;
int count = 0;
bool tof = true;
while (true) {
cout << "답은 " << start << "과 " << end << " 사이에 있습니다." << endl << endl;
if (count % 2 == 0) {
cout << p1.name << ">> ";
cin >> p1.num;
if (p1.num < start || p1.num > end)
tof = false;
if (tof == true) {
if (n < p1.num) // n이 입력받은 숫자보다 작다면
end = p1.num; // n이 될 수 있는 최댓값은 p1.num
else if (n > p1.num) // n이 입력받은 숫자보다 크다면
start = p1.num; // n이 될 수 있는 최솟값은 p1.num
else if (n == p1.num) { // n과 입력받은 숫자가 같다면
cout << p1.name << "가 이겼습니다!!";
return 0; // 프로그램 종료
}
}
else {
cout << p1.name << " 플레이어는 범위에 해당되지 않는 값을 입력했습니다. 다음 플레이어로 차례가 넘어갑니다." << endl << endl;
}
}
else {
cout << p2.name << ">> ";
cin >> p2.num;
if (p2.num < start || p2.num > end)
tof = false;
if (tof == true) {
if (n < p2.num) // n이 입력받은 숫자보다 작다면
end = p2.num; // n이 될 수 있는 최댓값은 p2.num
else if (n > p2.num) // n이 입력받은 숫자보다 크다면
start = p2.num; // n이 될 수 있는 최솟값은 p2.num
else if (n == p2.num) { // n과 입력받은 숫자가 같다면
cout << p2.name << "가 이겼습니다!!";
return 0; // 프로그램 종료
}
}
else {
cout << p2.name << " 플레이어는 범위에 해당되지 않는 값을 입력했습니다. 다음 플레이어로 차례가 넘어갑니다." << endl << endl;
}
}
tof = true;
count++;
}
}
문제를 해결하기는 했으나 문제의 목적인 '여러 클래스 만들기', 'static 멤버를 가진 클래스 만들기 및 활용'이라는 주제에서 벗어났다. 코드를 수정할 필요가 있겠다. 문제의 목적을 잘 파악하도록 하자.
'Coding > C++' 카테고리의 다른 글
C++ ios_base::sync_with_stdio(false); cin.tie(NULL); (0) | 2022.09.17 |
---|---|
연산자 중복 - '숫자' + '객체' (0) | 2019.08.19 |