더북(TheBook)

레벨을 올리는 부분까지 작성했습니다. 이제 무엇이 남았을까요? 앞에서 게임을 종료하는 조건이 무엇이었죠? 첫 번째 조건은 물고기가 한 마리라도 살아 있는데 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이 아니라면 물고기가 아직 살아 있다고 출력하고 게임을 계속 진행합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.