8.4.6 게임 종료하기
사용자가 모든 동물을 찾으면 게임을 끝내야겠죠. 그런데 모든 동물을 다 찾았는지 어떻게 알 수 있을까요? checkAnimal[x][y] 배열의 값이 0이면 뒤집히지 않은 카드라는 뜻입니다. 이를 이용해 foundAllAnimals라는 이름의 함수로 처리하겠습니다.
➊ foundAllAnimals()함수 정의부터 살펴봅시다. 카드 20장을 모두 확인해야 하므로 이중 for 문을 사용합니다. checkAnimal[x][y] 배열의 값이 0인 경우가 하나라도 있다면 게임을 계속해야 하므로 0을 반환하고 함수 실행을 마칩니다. 그 이후는 확인할 필요가 없습니다. checkAnimal[x][y] 배열의 값이 0인 경우가 하나도 없다면 모든 카드를 뒤집었다는 뜻이므로 반복문을 빠져나와 1을 반환합니다. 반환하는 값이 0과 1이므로 반환형은 int로 합니다.
➋ main()함수 위에서 foundAllAnimals()함수를 선언합니다.
➌ main()함수에서 foundAllAnimals()함수를 호출합니다. 이때 함수의 반환값이 1이면 모든 동물을 찾았다는 뜻입니다. 이를 확인하기 위해 if 문의 조건으로 foundAllAnimals()함수의 반환값을 판단합니다. foundAllAnimals()함수가 1을 반환하면 성공 메시지를 출력하고 몇 번 실패했는지도 알려 줍니다. 그리고 break 문으로 while 문을 빠져나옵니다.