더북(TheBook)

7.4.4 어항 물 높이 줄이기

게임이 시작되면 끝날 때까지 어항의 물은 계속 증발합니다. 최근 경과 시간을 활용해 증발한 물의 양을 계산하고 어항의 물 높이를 줄이겠습니다. 이 부분은 decreaseWater()라는 함수를 만들어 처리합니다.

decreaseWater()함수는 최근 경과 시간으로 증발한 물의 양을 계산합니다. 따라서 prevElapsedTime 변수의 값을 전달받아야 합니다. 이 값을 매개변수 elapsedTime으로 받는데, 시간 값이므로 long형으로 선언합니다. 물 높이만 낮추면 돼서 반환값은 없습니다.

decreaseWater()함수를 정의해 봅시다. decreaseWater()함수는 어항 6개에서 물을 증발시켜야 합니다. 어항 6개에서 동일한 작업을 수행하니 for 문을 사용합니다.

어항 6개의 물 높이는 arrayFish 배열에 저장되어 있습니다. 여기서 증발한 물의 양을 빼면 현재 어항의 물 높이가 됩니다. 이때 증발하는 물의 양은 물을 준 시간 간격에 비례합니다. 또한, 레벨에 따라 게임이 어려워져야 하므로 증발하는 물의 양은 레벨에도 비례하게 설정합니다. 따라서 기본으로 증발하는 양에 레벨(level)과 최근 경과 시간(elapsedTime)을 곱합니다. 이때 기본으로 증발하는 물의 양은 난이도 조절을 위해 3으로 정합니다. 그리고 elapsedTime 변수는 long형입니다. 그래서 int형인 다른 값과 곱하기 위해 앞에 int를 붙여 정수형으로 형변환해야 합니다. 예를 들어, 1레벨에서 직전에 물을 주고 10초가 지났다면 1(level) × 3 × 10(elapsedTime) = 30만큼 물 높이가 줄어듭니다.

그림 7-14 어항 속 물이 줄어드는 속도에 영향을 주는 요인

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