9.5.4 전체 코드 확인하기

    완성된 코드는 다음과 같습니다. 실행해서 결과를 확인해 봅시다.

    9.5 프로젝트.c

    #include <stdio.h>
    #include <time.h> // 헤더 파일 추가
    #include <stdlib.h> // 헤더 파일 추가
    
    typedef struct { // 고양이 구조체 정의
        char * name; // 이름
        int age; // 나이
        char * character; // 특징
        int level; // 레벨(1~5, 5가 가장 키우기 어려움)
    } CAT;
    
    CAT cats[5]; // 큰 상자에 있는 전체 고양이 목록
    // 고양이를 담는 작은 상자, 보유한 고양이 표시(있으면 1, 없으면 0)
    int collection[5] = { 0, 0, 0, 0, 0 }; 
    // 함수 선언
    void initCats(); 
    void printCat(int selected);
    int checkCollection(); 
    
    int main(void) {
        srand(time(NULL)); 
        initCats(); // 고양이 정보 초기화 함수 호출
        while (1) {
            printf("두근두근! 어느 고양이의 집사가 될까요?\nEnter를 눌러 확인하세요!");
            getchar(); // Enter 입력받기
            int selected = rand() % 5; // 고양이 뽑기, 0~4 숫자 반환
            printCat(selected); // 뽑은 고양이 정보 출력 함수 호출
            collection[selected] = 1; // 뽑은 고양이를 작은 상자에 넣었다고 표시
            int collectAll = checkCollection(); // 모은 고양이 확인 함수 호출
            if (collectAll == 1) { // 고양이 5마리를 다 모으면 무한 반복문 탈출
                break;
            }
        }
        return 0;
    }
    
    void initCats() { // 고양이 정보 초기화 함수
        cats[0].name = "깜냥이";
        cats[0].age = 5;
        cats[0].character = "온순함";
        cats[0].level = 1;
        cats[1].name = "귀요미";
        cats[1].age = 3;
        cats[1].character = "까칠함";
        cats[1].level = 2;
        cats[2].name = "수줍이";
        cats[2].age = 7;
        cats[2].character = "잠이 많음";
        cats[2].level = 3;
        cats[3].name = "까꿍이";
        cats[3].age = 2;
        cats[3].character = "시끄러움";
        cats[3].level = 4;
        cats[4].name = "돼냥이";
        cats[4].age = 1;
        cats[4].character = "늘 배고픔";
        cats[4].level = 5;
    }
    
    void printCat(int selected) { // 뽑은 고양이 정보 출력 함수 
        printf("\n\n===당신은 다음 고양이의 집사가 됐어요! ===\n\n");
        printf(" 이름 : %s\n", cats[selected].name);
        printf(" 나이 : %d\n", cats[selected].age);
        printf(" 특징 : %s\n", cats[selected].character);
        printf(" 레벨 : ");
        for (int i = 0; i < cats[selected].level; i++) { // 레벨을 별 모양으로 출력
            printf("%s", "★");
        }
        printf("\n\n");
    }
    
    int checkCollection() { // 모은 고양이 확인 함수
        int collectAll = 1; // 상자에 모두 고양이가 있는지 표시, 모두 있음 상태로 초기화
        printf("\n\n===보유한 고양이 목록이에요. ===\n\n"); 
        for (int i = 0; i < 5; i++)  { // 상자 수만큼 반복
            if (collection[i] == 0) { // 고양이 없음
                printf("%10s", "(빈 상자)");
                collectAll = 0; // 고양이를 다 모으지 못한 상태
            } else { // 고양이 있음
                printf("%10s", cats[i].name);
            }
        }
        printf("\n==================================================\n\n");
        if (collectAll) {
            printf("\n\n축하합니다! 고양이 5마리를 모두 모았어요. 열심히 키워 주세요.\n\n");
        }
        return collectAll; // 고양이 5마리를 다 모았으면 1, 아니면 0 반환
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.