<민준아 축구는 네 인생이 아니야>
--------
code
--------
#include <iostream>
#include <string>
#include <vector>
// 선수 클래스
class Player {
private:
std::string name;
int age;
std::string school;
int skillLevel;
public:
Player(std::string n, int a, std::string s)
: name(n), age(a), school(s), skillLevel(0) {}
void showStatus() {
std::cout << name << "의 현재 기술 수준은 " << skillLevel << "입니다." << std::endl;
}
void increaseSkill(int amount) {
skillLevel += amount;
std::cout << name << "의 기술 수준이 " << amount << "만큼 향상되었습니다." << std::endl;
}
int getSkillLevel() {
return skillLevel;
}
std::string getName() {
return name;
}
};
// 코치 클래스
class Coach {
private:
std::string name;
public:
Coach(std::string n) : name(n) {}
void advise(Player &player, const std::string &message) {
std::cout << "코치 " << name << ": \"" << player.getName() << "아, " << message << "\"" << std::endl;
}
void train(Player &player) {
std::cout << "코치 " << name << "가 " << player.getName() << "를 훈련시킵니다." << std::endl;
player.increaseSkill(10);
}
};
// 훈련 단계 열거형
enum TrainingStage {
MINI_PRACTICE, // 축소판 연습
TECHNICAL_ANALYSIS, // 기술화 단계
DUAL_PERSPECTIVE, // 두 개의 관점 훈련
OVERCOMING_ERRORS, // 틀과 오류 극복
SKILL_AND_IMAGINATION // 기술과 상상력 결합
};
// 훈련 클래스
class Training {
public:
static void startTraining(Player &player, Coach &coach) {
std::vector<TrainingStage> stages = {
MINI_PRACTICE,
TECHNICAL_ANALYSIS,
DUAL_PERSPECTIVE,
OVERCOMING_ERRORS,
SKILL_AND_IMAGINATION
};
for (auto stage : stages) {
switch (stage) {
case MINI_PRACTICE:
std::cout << "=== 축소판 연습 시작 ===" << std::endl;
coach.advise(player, "좁은 공간에서 집중 연습을 해보자.");
player.increaseSkill(5);
break;
case TECHNICAL_ANALYSIS:
std::cout << "=== 기술화 단계 시작 ===" << std::endl;
coach.advise(player, "왜 그렇게 찼는지 생각해보자.");
player.increaseSkill(5);
break;
case DUAL_PERSPECTIVE:
std::cout << "=== 두 개의 관점 훈련 시작 ===" << std::endl;
coach.advise(player, "선수와 관중의 입장에서 경기를 보자.");
player.increaseSkill(5);
break;
case OVERCOMING_ERRORS:
std::cout << "=== 틀과 오류 극복 시작 ===" << std::endl;
coach.advise(player, "고정관념을 버리고 유연하게 생각해보자.");
player.increaseSkill(5);
break;
case SKILL_AND_IMAGINATION:
std::cout << "=== 기술과 상상력 결합 시작 ===" << std::endl;
coach.advise(player, "창의적인 플레이를 시도해보자.");
player.increaseSkill(10);
break;
default:
break;
}
player.showStatus();
}
}
};
int main() {
// 주인공 생성
Player minjun("김민준", 14, "중학교");
// 코치 생성
Coach coach("새로운 체육 선생님");
// 선생님의 조언
coach.advise(minjun, "축구는 네 인생이 아니야. 다른 걸 찾아보는 게 어때?");
coach.advise(minjun, "넌 재능이 있어. 하지만 그걸 깨우치는 방법을 모르는 것 같구나.");
// 훈련 시작
Training::startTraining(minjun, coach);
// 선발전
std::cout << "=== 축구부 선발전 ===" << std::endl;
if (minjun.getSkillLevel() >= 30) {
std::cout << minjun.getName() << "은(는) 축구부에 합격했습니다!" << std::endl;
} else {
std::cout << minjun.getName() << "은(는) 축구부에 불합격했습니다." << std::endl;
}
// 미래의 포부
std::cout << minjun.getName() << "은(는) 고등학교 축구부 주장이 되어 프로 무대를 꿈꿉니다." << std::endl;
return 0;
}
--------
output
--------
코치 새로운 체육 선생님: "김민준아, 축구는 네 인생이 아니야. 다른 걸 찾아보는 게 어때?"
코치 새로운 체육 선생님: "김민준아, 넌 재능이 있어. 하지만 그걸 깨우치는 방법을 모르는 것 같구나."
=== 축소판 연습 시작 ===
코치 새로운 체육 선생님: "김민준아, 좁은 공간에서 집중 연습을 해보자."
김민준의 기술 수준이 5만큼 향상되었습니다.
김민준의 현재 기술 수준은 5입니다.
=== 기술화 단계 시작 ===
코치 새로운 체육 선생님: "김민준아, 왜 그렇게 찼는지 생각해보자."
김민준의 기술 수준이 5만큼 향상되었습니다.
김민준의 현재 기술 수준은 10입니다.
=== 두 개의 관점 훈련 시작 ===
코치 새로운 체육 선생님: "김민준아, 선수와 관중의 입장에서 경기를 보자."
김민준의 기술 수준이 5만큼 향상되었습니다.
김민준의 현재 기술 수준은 15입니다.
=== 틀과 오류 극복 시작 ===
코치 새로운 체육 선생님: "김민준아, 고정관념을 버리고 유연하게 생각해보자."
김민준의 기술 수준이 5만큼 향상되었습니다.
김민준의 현재 기술 수준은 20입니다.
=== 기술과 상상력 결합 시작 ===
코치 새로운 체육 선생님: "김민준아, 창의적인 플레이를 시도해보자."
김민준의 기술 수준이 10만큼 향상되었습니다.
김민준의 현재 기술 수준은 30입니다.
=== 축구부 선발전 ===
김민준은(는) 축구부에 합격했습니다!
김민준은(는) 고등학교 축구부 주장이 되어 프로 무대를 꿈꿉니다.
--------
explain
--------
- Player 클래스: 주인공인 김민준의 정보를 담고 있으며, 기술 수준을 관리합니다.
- Coach 클래스: 새로운 체육 선생님으로, 조언과 훈련을 제공합니다.
- Training 클래스: 다양한 훈련 단계를 통해 김민준의 기술을 향상시킵니다.
- TrainingStage 열거형: 이야기에서 언급된 훈련 단계들을 정의합니다.
- main 함수: 이야기의 흐름을 따라 김민준과 코치의 상호 작용, 훈련, 선발전 결과 등을 출력합니다.
ref.:
반응형