c언어 뱀게임 키보드 입력 질문드립니다.
좍좍
질문 제목 : c언어 뱀게임 키보드 입력 질문드립니다.키보드 입력 부분에서 왜 여러번 받는지 모르겠습니다.질문 내용 :
c언어 뱀게임에대해서 공부하면서 구현하고 있습니다.
근데수다님 소스를 분석하던 도중에 뱀의 움직임에 대해서 모르는 부분이 생겨서 질문드립니다.
밑에 소스에서 표시한 부분에 대해서질문입니다!!!
void snakemove(void){ char kbd; if (snake_move_flag == 0) { if (kbhit()) { kbd = getch();//////////이부분에서 키에 입력을 받고 밑에 한번더 받는데 이부분에서 모르겠습니다! if (kbd == -32) { /////////왜 키값을 입력 받았는데 -32라면if문이 성립하는지 궁금합니다. kbd = getch(); /////////위에서 키값을 한번 입력 받았는데 또입력받는지 질문입니다ㅣ! switch (kbd) { caseup: if (head-direction != direction_down) { head-direction = direction_up; snake_move_flag = 1; } break; caseright: if (head-direction != direction_left) { head-direction = direction_right; snake_move_flag = 1; } break; casedown: if (head-direction != direction_up) { head-direction != direction_down; snake_move_flag = 1; } break; caseleft: if (head-direction != direction_right) { head-direction != direction_left; snake_move_flag = 1; } break; } } while (kbhit())kbd = getch(); //////////////이 부분에서도 한번더 입력을 받슘쩜?받습니다ㅠㅠ } } if (++snake_speed_delay snake_speed)return; snake_speed_delay = 0; snakeerase(); snakeonestepmove(); snakedraw(); snake_move_flag = 0;}
-
조심해
그건 아무렇게 해도 문제가 되지 않습니다.
-
죄암죄암
int형으로 받으면 224로찍히는데 굳이 char형으로 받으 이유가 있으신가요??
-
핫블랙
참고로 두 번 입력을 받아야 되는 것을 확장키코드라고 부릅니다.
-
감추어왔던
아아 그렇군요 직접찍어보니 -32부터찍히네요
감사합니다 -
길가온
아마 입력을 방향키를 받는거같군요
방향키는 유니코드라 아스키코드처럼 char 1개에 저장할수 없습니다, 2개가 필요하죠
w_char을 사용하는 방법도 있지만 소스처럼 두번에 걸쳐 입력하는 방법도 있습니다.
#include stdio.h
#include conio.h
void main()
{
\tchar a;
\ta=getch();
\tprintf(\%d\\n\