2014-03-03 2 views
0

안녕하세요. 저는 C로 게임을 만들고 있어요.입력을 위해 최대 X 시간을 대기 한 다음 프로그램을 계속 진행 하시겠습니까?

0.1 초마다 프레임이 인쇄되기를 원합니다. 이 시간 동안 사용자는 getch()를 사용하여 입력 할 수도 있고 입력하지 않을 수도 있습니다.

어떻게 이러한 프로그램을 작성합니까? 내가 너희에게 일할 수있는 것을 제공 할 수있는 것을 열망한다.

do{ 
usleep(100000); // simple 100 mili second delay 
if (getch()==32) (ASCII for a space) // may or may not be inputed in 0.1 second timeframe. 
playerJumps; 
// even if user inputs early, I still want game printed exactly every 0.1 sec not sooner/later. 
printGame; 
}while(notDead); 

나는 정말, 당신은 당신이 어떤 플랫폼에 대해 이야기해야 할 것 코드 좋은 내가 전에 이런 짓을 한

답변

0

명확를 유지 바랍니다. 모든 C 라이브러리 입력 함수는 입력 대기를 차단합니다. 스레드를 사용하는 한 가지 방법은 사용자 입력에 하나의 스레드 블록을두고 다른 하나는 게임을 수행하고 입력이있을 때 입력 스레드가이를 알립니다. 다른 방법은 리눅스에서 poll()과 같은 함수를 사용하는 것입니다.이 함수는 내가 사용했던 것입니다. 기본적으로 대기 기간을 지정하거나 입력이 있는지 확인하고 즉시 반환 할 수 있습니다. 티. 비록 내가 select()도 작동해야한다고 생각하지만, 나는 상대적으로 크로스 플랫폼이어야한다고 생각한다.