더북(TheBook)

다음으로 작은 상자에 고양이 5마리를 다 모았는지 확인하는 부분을 작성합니다.

checkCollection()함수 가장 윗부분에 collectAll이라는 정수형 변수를 선언합니다. 이 변수는 고양이 5마리를 다 모았을 때 main()함수에 반환하는 값을 저장합니다. 일단 고양이 5마리를 다 모았다고 가정하고 collectAll 변수를 1로 초기화합니다.

앞에서 고양이가 상자에 없다면 if 문에서 빈 상자를 출력하게 했습니다. 이때 collectAll 변수의 값을 0으로 변경합니다.

함수 실행이 끝나면 마지막에 collectAll 변수를 반환합니다. 모든 고양이를 모았다면 초깃값 그대로 1을 반환하고, 빈 상자가 하나라도 있다면 0을 반환합니다.

고양이를 다 모으면 게임이 끝나므로 이를 안내하는 문구도 출력합니다. 이 부분은 if 문으로 작성하고 collectAll 변수의 값이 1이면 실행하게 합니다. C 언어에서는 1을 참, 0을 거짓으로 인식한다고 했습니다(3.3.3 do-while 문 노트 참고). 따라서 if (1)이면 참이 되어 조건문을 실행합니다. 그래서 collectAllif 문의 조건으로 넣습니다.

9.5 프로젝트.c

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 반환
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.