본문 바로가기
프로그래밍/C&C++

C++로 즐거운 가위바위보 게임 만들기: 코드 따라하기와 이해하기

by wyatti 2023. 6. 16.

이 포스트에서는 C++를 이용하여 가위바위보 게임을 만드는 방법을 배우게 됩니다. 코드 작성부터 승패 로직까지, 쉽게 따라할 수 있도록 자세히 안내해드립니다. C++와 프로그래밍을 실질적으로 이해하고 실력을 향상시키는데 도움이 될 것입니다.
C++로 즐거운 가위바위보 게임 만들기: 코드 따라하기와 이해하기

안녕하세요, 프로그래밍 학습자 여러분. 오늘은 C++로 가위바위보 게임을 만들어보며 기본적인 프로그래밍 개념을 배워볼 것입니다. C++은 범용 프로그래밍 언어로, 다양한 소프트웨어 개발에 쓰이며 고성능을 필요로 하는 시스템 프로그래밍에도 널리 활용됩니다.

C++를 배우기 시작하는 프로그래머들에게 가위바위보 게임은 매우 적합한 프로젝트입니다. 왜냐하면 이 게임은 변수, 조건문, 반복문, 함수 등과 같은 기본적인 프로그래밍 개념을 체험하고 이해하는데 도움이 되기 때문입니다.

 

 

1. 라이브러리 포함하기

우리의 프로그램에서는 표준 입출력 및 난수 생성을 위한 라이브러리를 포함시켜야 합니다. 다음의 코드를 통해 이 라이브러리들을 포함시킵니다.

#include <iostream>
#include <cstdlib>
#include <ctime>

이렇게 #include를 사용하여 필요한 라이브러리를 포함시키면 해당 라이브러리의 기능들을 우리의 프로그램에서 사용할 수 있게 됩니다.

 

 

 

2. 메인 함수

C++ 프로그램은 항상 main() 함수에서 시작합니다. 이 함수는 프로그램의 진입점 역할을 합니다.

int main() {
    // 여기에 코드 작성
    return 0;
}

 

 

 

3. 변수 선언 및 초기화

이 게임에서는 사용자의 선택과 컴퓨터의 선택을 저장할 변수가 필요합니다. char 타입의 user_choice 변수는 사용자의 선택을 저장하며, int 타입의 comp_choice 변수는 컴퓨터의 선택을 저장합니다.

char user_choice;
int comp_choice;

 

 

4. 난수 생성

컴퓨터의 가위, 바위, 보 선택은 난수를 사용하여 결정됩니다. C++에서는 rand() 함수를 사용해 난수를 생성할 수 있습니다. 이때, srand(time(0)) 코드는 난수 생성의 기반이 되는 '시드(seed)'를 설정하는 역할을 합니다.

srand(time(0));
comp_choice = rand() % 3;

 

 

 

5. 게임 로직 구현

사용자로부터 가위, 바위, 보 중 하나의 입력을 받아, 이를 컴퓨터의 선택과 비교하는 게임 로직을 구현해야 합니다. 이를 위해 while 루프와 if-else 조건문을 사용합니다.

while (true) {
        std::cout << "Enter 'r' for rock, 'p' for paper, 's' for scissors, 'q' to quit: ";
        std::cin >> user_choice;
        
        if (user_choice == 'q') {
            break;
        }

        // 사용자 선택 변환
        if (user_choice == 'r') user_choice = 1;
        else if (user_choice == 'p') user_choice = 2;
        else if (user_choice == 's') user_choice = 0;

        comp_choice = rand() % 3;

        // 승패 결정 로직
        if (user_choice == comp_choice) {
            std::cout << "It's a tie!\n";
        }
        else if ((user_choice + 1) % 3 == comp_choice) {
            std::cout << "You lose!\n";
        }
        else {
            std::cout << "You win!\n";
        }
    }

위의 코드는 '가위', '바위', '보'를 순환적인 관계로 생각하여 승패를 결정하였습니다. 만약 사용자가 '가위'를 선택하고 컴퓨터가 '바위'를 선택하면, (user_choice + 1) % 3은 comp_choice와 같으므로 사용자는 패배합니다. 사용자가 이기거나 비길 경우에는 다른 분기를 통해 처리됩니다. 이와 같이 나머지 연산자를 이용하면 순환적인 관계를 간단히 표현할 수 있습니다.

 

 

 

6. 전체 코드

#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
    // 여기에 코드 작성
    char user_choice;
    int comp_choice;
    srand(time(0));
    comp_choice = rand() % 3;

    while (true) {
        std::cout << "Enter 'r' for r, 'p' for paper, 's' for scissors, 'q' to quit: ";
        std::cin >> user_choice;

        if (user_choice == 'q') {
            break;
        }

        // 사용자 선택 변환
        if (user_choice == 'r') user_choice = 1;
        else if (user_choice == 'p') user_choice = 2;
        else if (user_choice == 's') user_choice = 0;

        comp_choice = rand() % 3;

        // 승패 결정 로직
        if (user_choice == comp_choice) {
            std::cout << "It's a tie!\n";
        }
        else if ((user_choice + 1) % 3 == comp_choice) {
            std::cout << "You lose!\n";
        }
        else {
            std::cout << "You win!\n";
        }
    }
    return 0;
}

 

이 포스팅이 C++에 대한 여러분의 이해를 도와주고, 가위바위보 게임 만들기를 통해 프로그래밍에 대한 흥미를 더욱 끌어올려주길 바라며, 앞으로도 다양한 프로젝트를 통해 여러분의 프로그래밍 실력을 향상해 나가시길 바랍니다.

댓글