getch() 관련 질문있습니다
세이
질문 제목 : getch() 관련 질문입니다질문 요약 :while 루프속에다 제한시간이 매초마다 줄어들면서키보드 입력을 받아야 하는데 getch() 함수가 무한대로
대기하는 함수라 시간이 줄어들지않습니다질문 내용 : 리눅스상에서 게임을 만들고있습니다.
아래처럼 게임이 시작되면 메인루프에서 키보드 입력을 받아서 커서를 움직이고있습니다
코드는 중요한 부분만 간추려서 적겠습니다while ( 1 )
{
switch ( input_char = getch() )
{
case KEY_UP:
y--;
break;
case KEY_DOWN:
y++;
break;
case KEY_LEFT:
x--;
break;
case KEY_RIGHT:
x++;
break;
case 32:
..............
break;
case 0x1b:
return;
}
}여기서 제한시간 기능을 추가하려고 하는데요.
제가 원하는 것은 게임 시작 시 1분정도를 주고 while 루프속에서 1초씩 줄어들게 하면서
키보드 입력을 받아 게임을 진행하는 겁니다저기 윗부분이 메인루프라서 그 속에다 아래와 같은 코드를 추가하려고 합니다.if ( Edtime.tv_sec - Sttime.tv_sec = 1 )
{
gettimeofday( &Sttime, NULL );
nTime--;
}여기서 문제는 while 속에서 키보드 입력을 받는 getch() 함수가
입력을 받기전까지 무한대로 대기하는 함수라서
위의 제한시간 함수를 while 안에다 추가해도 동작을 하지 않습니다.
정확히는 키보드를 계속 누르고 있는 동안에만 동작을 하는데요..제한시간 기능을 다른 스레드속에서 돌아가게 해야하는지
아니면 제 접근방법이 잘 못된건지
일반적으로 이럴경우 어떻게 하는지 알려주시면 감사하겠습니다.