2016-08-21 4 views
-3

나는 게임을 시작하고 게임을 시작한 후 5 초 후에 간단한 게임을하고 char 생성을 시도합니다. 이것은 내 코드의 일부이며 time.h 나 loop 함수를 사용해야하는지 잘 모르겠습니다. 누구든지 조언을 해줄 수 있습니까? 고마워요시간 경과 후 산란 C

char * image = 
/**/ "H H" 
/**/ "H H" 
/**/ "HHHHH" 
/**/ "H H" 
/**/ "H H"; 

#define HERO_WIDTH (5) 
#define HERO_HEIGHT (5) 

void setup_hero(void) { 
    // Set up the hero at the centre of the screen. 
    int hero_x = (screen_width() - HERO_WIDTH)/2; 
    int hero_y = (screen_height() - HERO_HEIGHT)/2; 
    hero = sprite_create(hero_x, hero_y, HERO_WIDTH, HERO_HEIGHT, image); 

    wait(5); // not working 
    sprite_draw(image); 
    show_screen(); 
} 
+0

시스템 콜은 일반적으로'sleep'가 아닌'wait'이라고 x 초 동안 정지하는 것입니다. – PSkocik

+0

그러면 캐릭터가 재생되는 동안 게임이 계속 실행되는 동안 잠자기 기능이 작동합니까? – lufee

+1

컴파일러에서 경고를 받아야합니다. 그 중 하나는'대기'가 선언되지 않았거나'int'를 취하지 않는다는 것입니다. 당신이 그들을 얻지 못한다면, 당신의 빌드 시스템을 조정할. – PSkocik

답변

1

일반적으로 게임은 이벤트 지향적입니다. 그들은 거의 아무것도하지 않고 사용자 입력을 폴링하고, 타이머를 업데이트하고, 장면의 모든 엔티티를 업데이트/렌더링하는 메인 루프를 가지고 있습니다.

메인 루프에 의해 업데이트 된 타이머는 루프의 마지막 반복 이후 경과 된 밀리 초 수를 추적하며 '델타'시간이라고도합니다. 델타 시간은 애니메이션 및 사운드의 속도를 조정하는 데 매우 유용합니다. 주 루프가 완료되는 데 걸리는 시간은 많은 요인에 따라 달라지기 때문입니다.

수행하려는 작업을 수행하는 한 가지 방법은 엔티티에 처음 생성 될 때 0으로 설정된 카운터를 제공하는 것입니다. 엔티티가 업데이트 될 때마다 델타 시간을 카운터에 추가하십시오. 카운터가 5000ms보다 크거나 같으면 5 초가 경과 한 것입니다.

C에서 델타 시간을 구현하는 가장 좋은 방법은 <time.h>clock 함수를 사용하는 것입니다. 프로그램 시작 후 경과 한 CPU주기 수를 반환합니다. 이 값을 CLOCKS_PER_SEC/1000으로 나누면 경과 한 밀리 초 수가 표시됩니다. 델타 시간을 얻기 위해 현재 시간에서 마지막 반복 시간을 뺍니다.

은 다음을 참조하십시오 http://www.tutorialspoint.com/c_standard_library/c_function_clock.htm