다음으로 작은 상자에 고양이 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)이면 참이 되어 조건문을 실행합니다. 그래서 collectAll을 if 문의 조건으로 넣습니다.
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 반환
}