언어 놀이터 (Language Playground)/소프트웨어 (Software Language)

c++) 민준아 축구는 네 인생이 아니야

sosohantry 2024. 9. 17. 23:04

<민준아 축구는 네 인생이 아니야>

 

--------

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.:

https://sosohantry.tistory.com/entry/%EC%B6%95%EA%B5%AC%EA%B3%B5-%ED%95%98%EB%82%98%EB%A1%9C-%EB%B0%94%EB%80%90-%EC%84%B8%EC%83%81

 

축구공 하나로 바뀐 세상

나는 축구공을 바라보며 깊은 한숨을 내쉬었다. 중학교 2학년, 김민준. 축구부 선발전 탈락 후 한 달이 지났지만, 아직도 그날의 기억이 생생했다.  "민준아, 축구는 네 인생이 

sosohantry.tistory.com

 

 

반응형