7.4.3 경과 시간 표시하기
지금까지 시간이 얼마나 흘렀는지 알아보겠습니다. 실제 게임에서는 막대가 채워지면서 시간 경과를 표시하지만, 여기서는 막대를 표시할 수 없으니 시간을 직접 출력해 표시하겠습니다.
➊ 막대가 다 채워지는 데 20초가 걸리고 20초가 지나면 레벨이 오른다고 했죠? 따라서 시작 시간에서 얼마나 흘렀는지 알아야 합니다. 이를 계산하기 위해 총 경과 시간을 저장할 totalElapsedTime 변수를 선언합니다. totalElapsedTime 변수는 시간을 다루므로 long형으로 선언하고 0으로 초기화합니다.
➋ 총 경과 시간은 현재 시간에서 시작 시간을 빼면 됩니다. 시작 시간은 startTime 변수에 저장했습니다. 프로그램 수행 이후 현재까지 흐른 시간은 clock()함수로 알 수 있습니다. 따라서 clock()함수의 반환값에서 startTime 변수의 값을 빼면 됩니다. 그런데 두 값은 모두 밀리초 단위라서 직관적으로 알기 어렵습니다. 이 값을 CLOCKS_PER_SEC로 나눕니다. CLOCKS_PER_SEC는 C 언어에서 제공하는 매크로인데, 나눈 값을 초 단위로 보여 줍니다. 그러면 게임을 시작할 때부터 지금까지 총 몇 초가 지났는지 알 수 있습니다. 이렇게 계산한 결과를 앞에서 선언한 totalElapsedTime 변수에 저장합니다.
➌ 총 경과 시간을 출력합니다. totalElapsedTime 변수가 long형이므로 서식 지정자는 %ld를 사용합니다.