강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이정완님의 프로필 이미지
이정완

작성한 질문수

C 프로그래밍 - 입문부터 게임 개발까지

프로젝트

섹션6. 프로젝트 소스코드 올려드려요.

작성

·

40

·

수정됨

0

소스코드 필요하신분들 보고하세요!
저두 강의 많이 돌려봤습니다 ㅋㅋㅋㅋ

 

저는 맥환경이라서 Visual Studio Code를 마이크로소프트에서 다운이 안되더라구요 ㅠ

그래서 인터넷에서 VScode를 사용하구 있는데요. 저와 동일하게 맥 환경을 사용하시는 분은 랜덤함수 사용하실때

#include <> 이 부분에서 3가지 추가해주셔야 랜덤함수 오류없이 올바르게 사용가능합니다.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{

    srand(time(NULL));
    printf("\n\n === 아빠는 대머리 게임 === \n\n");
    int answer;                 // 사용자 입력값
    int treatment = rand() % 4; // 발모제 상태 (0-3)

    int cntShowBottle = 0;    // 이번 게임에 보여줄 병 갯수
    int preCntShowBottle = 0; // 앞 게임에 보여준 병 갯수
    // 서로보여주는 병 갯수를 다르게 하여 정답률 향상 (처음에 2개 -> 다음엔 3개)

    // 3번의 기회 (3번의 발모제 투여 시도)
    for (int i = 1; i <= 3; i++)
    {
        int bottle[4] = {0, 0, 0, 0}; // 4개의 병
        do
        {
            cntShowBottle = rand() % 2 + 2; // 보여줄 병 갯수(0-1, + 2 -> 2, 3)
        } while (cntShowBottle == preCntShowBottle);
        preCntShowBottle = cntShowBottle;

        int isIncluded = 0; // 보여줄 병 중에 발모제가 포함되었느지 여부 (1 포함)
        printf("> %d 번째 시도 : ", i);

        // 보여줄 병 종류를 선택
        for (int j = 0; j < cntShowBottle; j++)
        {
            int randBottle = rand() % 4; // 0-3

            // 아직 선택되지 않은 병이면, 선택 처리
            if (bottle[randBottle] == 0)
            {
                bottle[randBottle] = 1;
                if (randBottle == treatment)
                {
                    isIncluded = 1;
                }
            }
            // 이미 선택된 병이면, 중복이므로 다시 선택
            else
            {
                j--;
            }
        }
        // 사용자에게 문제 표시
        for (int k = 0; k < 4; k++)
        {
            if (bottle[k] == 1)
            {
                printf("%d ", k + 1);
            }
        }
        printf(" 물약을 머리에 바릅니다. ");

        if (isIncluded == 1)
        {
            printf(" >> 성공 ! 머리가 났어요 !! \n");
        }
        else
        {
            printf(" >> 실패 ! 머리가 나지 않았어요 !! \n");
        }

        printf("\n . . . 계속 하려면 아무키나 누르세요 . . .");
        getchar();
    }

    printf("\n\n 발모제는 몇 번일까요? ");
    scanf("%d", &answer);

    if (answer == treatment + 1)
    {
        printf("\n >> 정답입니다.");
    }

    else
    {
        printf("\n >>땡! 틀렸어요. 정답은 %d 입니다\n", treatment + 1);
    }
    return 0;
}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
이정완 님이 공유해주신 “아빠는 대머리 게임” 프로젝트의 C 코드 잘 보았습니다. 맥에서의 개발 환경 때문에 어려움을 겪으셨군요. 맥에서 Visual Studio Code를 설치하고 사용할 수 있는 방법에 대해서 설명드리겠습니다.

Visual Studio Code는 맥에서도 설치가 가능합니다. 아래의 링크를 통해 다운로드 받으실 수 있습니다: Visual Studio Code

랜덤 함수 관련해서 언급해 주신 내용도 중요합니다. C 프로그래밍에서 랜덤함수를 사용할 때 #include <stdlib.h>#include <time.h>가 필요합니다. 이 두 라이브러리는 srand()rand() 함수를 사용할 때 꼭 포함되어야 합니다.

아래는 코드에서 중요한 부분입니다:
- srand(time(NULL));는 랜덤 시드를 설정하여 매번 프로그램 실행 시마다 다른 결과를 얻게 해줍니다.
- rand() % 4는 0부터 3까지의 숫자를 랜덤하게 생성합니다.

마지막으로 getchar(); 함수로 게임 진행의 별도 입력을 대기하여 주는 점도 게임의 진행에 있어서 사용자 친화적입니다.

Mac에서 기본적으로 코드가 제대로 실행되지 않을 경우의 해결책이나 추가적인 환경설정이 필요하다면, 아래 링크를 통해 보다 자세한 개발 환경 설정 정보를 확인해보시기 바랍니다: Spring Boot Reference Documentation v3.1.5

이정완님의 프로필 이미지
이정완

작성한 질문수

질문하기