레벨을 올리는 부분까지 작성했습니다. 이제 무엇이 남았을까요? 앞에서 게임을 종료하는 조건이 무엇이었죠? 첫 번째 조건은 물고기가 한 마리라도 살아 있는데 5레벨까지 끝나는 것이고, 두 번째 조건은 5레벨이 끝나기 전에 물고기가 모두 죽는 것이었습니다. 레벨업에서 첫 번째 조건은 확인했으니 이제 물고기가 모두 죽었는지 확인하면 됩니다. 이 부분도 checkFishAlive()라는 함수를 작성해 처리하겠습니다.
➊ 여기서는 checkFishAlive()함수가 어떤 구조일지부터 생각해 봅시다. 구조는 간단합니다. 6개 어항에 물고기가 살아 있는지 확인해야 하므로 for 문을 사용합니다. 6개 어항에서 하나라도 물 높이가 0보다 높으면 물고기는 한 마리 이상 살아 있습니다. 따라서 다른 어항을 확인할 필요 없이 바로 1을 반환해 게임을 계속 진행합니다. 1을 반환하면 참(true)이라고 했죠. 그러나 6개 어항 중 물 높이가 0보다 높은 어항이 하나도 없으면 물고기는 모두 죽었습니다. if 문을 실행하지 못하고 for 문이 바로 끝나므로 for 문 뒤에서 0을 반환합니다.
➋ main()함수 위에 checkFishAlive()함수를 선언합니다. 0 또는 1을 반환하므로 int로 선언하고, arrayFish 배열의 값만 확인하므로 전달값은 없습니다.
➌ main()함수로 돌아가서 checkFishAlive()함수를 호출하고 반환값에 따라 처리합니다. 함수가 반환하는 값이 0이면 물고기가 모두 죽은 거고, 아니면 한 마리라도 산 겁니다. 따라서 조건에서 checkFishAlive()함수의 반환값을 비교합니다. 반환값이 0이면 물고기가 모두 죽었으므로 이를 사용자에게 알려 주고 exit(0)으로 게임을 끝냅니다. 0이 아니라면 물고기가 아직 살아 있다고 출력하고 게임을 계속 진행합니다.