Q. n명이 하는 한글 끝말잇기 게임을 작성해 보자. 아래의 결과와 같이 선수의 수를 입력받고, 선수 각 사람의 이름을 입력받아 게임을 시작한다.
<실행화면>
<소스코드>
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
class Player {
string name;
public:
void setName(string tmp) { name = tmp; }
string getName() { return name; }
};
class WordGame {
Player* player;
int num;
public:
WordGame();
~WordGame() { delete[] player; }
void gameStart(); // 게임 시작 위한 초기 작업
void gameProgess(); // 끝말잇기 게임 진행
};
WordGame::WordGame() {
cout << "끝말 잇기 게임을 시작합니다" << endl;
while(true) {
cout << "게임에 참가하는 인원은 몇명입니까?";
cin >> num;
if (isdigit(num) || num <= 0) { // 오류 방지 코드
cout << "올바른 값을 입력하세요" << endl;
continue;
}
else {
player = new Player[num];
break;
}
}
}
void WordGame::gameStart() {
for (int i = 0; i < this->num; i++) {
cout << "참가자의 이름을 입력하세요. 빈칸 없이>>";
string tmp;
cin >> tmp;
player[i].setName(tmp);
}
}
void WordGame::gameProgess() {
cout << "시작하는 단어는 아버지입니다" << endl;
string a = "아버지";
string b;
int i = 0;
while (true) {
int lenA = a.size(); //a 스트링의 길이
cout << player[i].getName() << ">>";
cin >> b;
if (a.at(lenA - 2) == b.at(0) && a.at(lenA - 1) == b.at(1)) { // 끝말잇기 성공
a = b;
i = (i + 1) % num;
}
else {
cout << player[i].getName() << "님이 패배하였습니다. 게임 종료" << endl;
return;
}
}
}
int main() {
WordGame w;
w.gameStart();
w.gameProgess();
return 0;
}
[객체지향언어1] 명품 C++ Programming 5장 실습 문제 (0) | 2025.04.27 |
---|---|
[객체지향언어1] 명품 C++ Programming 3장 실습 문제 (0) | 2025.04.08 |
[객체지향언어1] 명품 C++ Programming 2장 실습 문제 (0) | 2025.04.06 |