반응형

 

오늘은 아래 C언어 독학 시리즈를 잘 따라오신 여러분을 위하여 간단한 숫자 맞추기 게임을 만들어볼겁니다.

C언어 독학 완전 기초부터 마스터까지  #1 (기초, 쉬운 설명, Hello world)

C언어 독학 완전 기초부터 마스터까지 #2 (변수, 자료형, 연산자, 기본 입출력, 실습 예제)

C언어 독학 완전 기초부터 마스터까지 #3 (조건문과 반복문, 조건문과 반복문을 이용한 실습 예제)

C 언어 독학 시리즈 #4: 함수(Function)의 이해와 활용


지금까지 학습한 C 언어의 기초를 활용하여 간단한 숫자 맞추기 게임을 만들어보겠습니다.

이 게임은 컴퓨터가 무작위로 선택한 숫자를 사용자가 추측하는 방식으로 진행됩니다.

이를 통해 변수, 자료형, 연산자, 조건문, 반복문, 함수 등의 개념을 실습할 수 있습니다.

 

숫자 맞추기 게임 구현

 

1. 헤더 파일 포함 및 함수 선언

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

void playGame();

stdio.h: 표준 입출력 함수를 사용하기 위해 포함합니다.

stdlib.h: 난수 생성을 위한 rand() 함수 사용을 위해 포함합니다.

time.h: 현재 시간을 기반으로 난수 생성을 초기화하기 위해 포함합니다.

playGame 함수: 게임의 주요 로직을 처리하는 함수입니다.

 

2. 메인 함수 작성

int main() {
    char playAgain;

    do {
        playGame();
        printf("다시 플레이하시겠습니까? (y/n): ");
        scanf(" %c", &playAgain);
    } while (playAgain == 'y' || playAgain == 'Y');

    printf("게임을 종료합니다.\n");
    return 0;
}

main 함수: 게임의 시작점으로, 사용자가 게임을 반복해서 플레이할 수 있도록 합니다.

do-while 문: 최소 한 번은 게임을 실행하고, 사용자의 입력에 따라 반복 여부를 결정합니다.

 

3. 게임 로직 구현

void playGame() {
    int secretNumber, guess, attempts = 0;

    srand(time(0)); // 난수 초기화
    secretNumber = rand() % 100 + 1; // 1부터 100 사이의 난수 생성

    printf("1부터 100 사이의 숫자를 맞춰보세요!\n");

    do {
        printf("추측한 숫자를 입력하세요: ");
        scanf("%d", &guess);
        attempts++;

        if (guess > secretNumber) {
            printf("너무 높습니다!\n");
        } else if (guess < secretNumber) {
            printf("너무 낮습니다!\n");
        } else {
            printf("축하합니다! %d번 만에 맞췄습니다.\n", attempts);
        }
    } while (guess != secretNumber);
}

srand(time(0)): 현재 시간을 시드로 사용하여 난수를 초기화합니다.

rand() % 100 + 1: 1부터 100 사이의 무작위 숫자를 생성합니다.

do-while 문: 사용자가 정답을 맞출 때까지 반복하여 숫자를 입력받습니다.

조건문(if-else): 사용자의 추측이 정답보다 높은지, 낮은지, 맞는지 판단하여 피드백을 제공합니다.

 

코드 전체

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

void playGame();

int main() {
    char playAgain;

    do {
        playGame();
        printf("다시 플레이하시겠습니까? (y/n): ");
        scanf(" %c", &playAgain);
    } while (playAgain == 'y' || playAgain == 'Y');

    printf("게임을 종료합니다.\n");
    return 0;
}

void playGame() {
    int secretNumber, guess, attempts = 0;

    srand(time(0)); // 난수 초기화
    secretNumber = rand() % 100 + 1; // 1부터 100 사이의 난수 생성

    printf("1부터 100 사이의 숫자를 맞춰보세요!\n");

    do {
        printf("추측한 숫자를 입력하세요: ");
        scanf("%d", &guess);
        attempts++;

        if (guess > secretNumber) {
            printf("너무 높습니다!\n");
        } else if (guess < secretNumber) {
            printf("너무 낮습니다!\n");
        } else {
            printf("축하합니다! %d번 만에 맞췄습니다.\n", attempts);
        }
    } while (guess != secretNumber);
}

실행 방법

 

1. 코드 작성: 위의 코드를 텍스트 편집기나 통합 개발 환경(IDE)에 복사하여 붙여넣습니다. 파일 이름은 number_guessing_game.c로 저장합니다.

2. 컴파일: 터미널이나 명령 프롬프트를 열고, 해당 파일이 저장된 디렉토리로 이동한 후 다음 명령어를 입력합니다.

gcc number_guessing_game.c -o number_guessing_game

gcc: GNU C 컴파일러를 호출합니다.

number_guessing_game.c: 소스 코드 파일입니다.

-o number_guessing_game: 컴파일된 실행 파일의 이름을 지정합니다.

 

3. 실행: 컴파일이 완료되면 다음 명령어로 프로그램을 실행합니다.

./number_guessing_game

./number_guessing_game: 생성된 실행 파일을 실행합니다.

 

4. 게임 플레이: 프로그램의 지시에 따라 숫자를 추측하고 입력합니다. 정답을 맞출 때까지 반복하며, 게임 종료 후에는 재시작 여부를 묻습니다.

1부터 100 사이의 숫자를 맞춰보세요!
추측한 숫자를 입력하세요: 50
너무 높습니다!
추측한 숫자를 입력하세요: 25
너무 낮습니다!
추측한 숫자를 입력하세요: 37
축하합니다! 3번 만에 맞췄습니다.

다시 플레이하시겠습니까? (y/n): n
게임을 종료합니다.

 

이러한 과정을 통해 C 언어의 기본 개념을 복습하고, 실제로 적용해볼 수 있습니다.

더 나아가, 게임의 난이도를 조절하거나 기능을 추가하여 자신만의 버전을 만들어보는 것도 좋은 연습이 될 것입니다.


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

구독 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형

+ Recent posts