#include #include #include #include #include #include int kbhit(void); char getch(void); /*int main(int argc, char ** argv){ printf("wasd or arrows to control snake, q to quit, p to pause game."); while(1){ getInput(); } }*/ /** getInput gets the userinput and reacts to input of w,a,s,d, arrow keys, p or q * utilises getch() and kbhit, no parameters, no returns */ void getInput(){ if(kbhit()){ char key= getch(); if(key == '\033'){ getch(); char key = getch(); switch(key){ case 'A': printf("up"); break; case 'B': printf("down"); break; case 'C': printf("right"); break; case 'D': printf("left"); break; } } else{ switch(key){ case 'w': printf("W"); break; case 'a': printf("A"); break; case 's': printf("S"); break; case 'd': printf("D"); break; case 'q': printf("quit"); break; case 'p': printf("\033[31mgame paused, p to continue"); printf("\033[0m"); pause(); printf("\033[32mgame continued"); printf("\033[0m"); break; } } } } /** getTInput with parameters to test if working correctly * returns char, parameter: char */ char getTInput(char key){ if(key == '\033'){ return 'ar'; } else{ switch(key){ case 'w': return 'w'; case 'a': return 'a'; case 's': return 's'; case 'd': return 'd'; case 'q': return 'q'; case 'p': return 'p'; } } } /** pauses the game until p is pressed again * no parameters, no returns */ pause(){ while(getch()!='p'){ sleep(0.10); } } //khbit und getch aus dem Internet int kbhit(void){ struct termios oldt, newt; int ch; int oldf; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt); oldf = fcntl(STDIN_FILENO, F_GETFL, 0); fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK); ch = getchar(); tcsetattr(STDIN_FILENO, TCSANOW, &oldt); fcntl(STDIN_FILENO, F_SETFL, oldf); if(ch != EOF) { ungetc(ch, stdin); return 1; } return 0; } char getch(void) { char c; system("stty raw"); c= getchar(); system("stty sane"); return(c); }