if((key=bioskey(1))!=0) { switch(key) { case ESC: return false; case UP: if(CurrentDirection!=down) CurrentDirection=up; ClearKeyBuf(); break; case DOWN: if(CurrentDirection!=up) CurrentDirection=down; ClearKeyBuf(); break; case LEFT: if(CurrentDirection!=right) CurrentDirection=left; ClearKeyBuf(); break; case RIGHT: if(CurrentDirection!=left) CurrentDirection=right; ClearKeyBuf(); break; case PAGEUP:speed=speed-100; if(speed<100) speed=100; ClearKeyBuf(); break; case PAGEDOWN:speed=speed+100; if(speed>500) speed=500; ClearKeyBuf(); break; default :break; } } int headx=snake.tail->x; int heady=snake.tail->y; switch(CurrentDirection) { case up: heady-=BlockHeight;break; case down: heady+=BlockHeight;break; case left: headx-=BlockWidth;break; case right: headx+=BlockWidth;break; } if(Hit(headx,heady)) //whether the snake hit the wall or itself return GameOver();