求各位帮忙看看,把下面Button()函数改掉为什么不行。
我想把下面程序中的button()改成如下,可结果并不能通过wads键来控制蛇头的方向,请问为什么。void Button()
{
int key;
while(kbhit()!=0)
{
key=getch();
}
switch(key)
{
case 'w':now=0;break;
case 's':now=1;break;
case 'a':now=2;break;
case 'd':now=3;break;
}
}
小游戏:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
const int H=8;
const int L=16;
int now;
int over=0;
int win=0;
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
int head_x;
int head_y;
char Head='@';
char Map[H][L];
void Initial();
void Move();
void Show();
void Button();
void Check_Head();
main()
{
Initial();
Show();
return 0;
}
void Initial()
{
int i,j,x,y;
system("title 新游戏");
memset(Map,'.',sizeof(Map));
srand(time(0));
x=rand()%H;
y=rand()%L;
head_x=x;
head_y=y;
now=-1;
Map[x][y]=Head;
for(i=0;i<H;i++)
{for(j=0;j<L;j++)
printf("%c",Map[i][j]);
printf("\n");
}
printf("小游戏\n");
printf("请通过小键盘方向键填满地图");
getch();
}
void Show()
{
int i,j;
while(1)
{
Sleep(500);
Button();
Move();
if(win)
{
printf("游戏成功\n");
printf("\(^o^)/~");
getchar();
break;
}
if(over)
{
printf("游戏失败\n");
printf("(> _ <)");
getchar();
break;
}
system("cls");
for(i=0;i<H;i++)
{for(j=0;j<L;j++)
printf("%c",Map[i][j]);
printf("\n");
}
}
}
void Button()
{
int key;
while(kbhit()!=0)
{
key=getch();
}
switch(key)
{
case 75:now=0;break;
case 77:now=1;break;
case 72:now=2;break;
case 80:now=3;break;
}
}
void Check_Head()
{
int i,j;
for(i=0;i<H;i++)
{for(j=0;j<L;j++)
if(Map[i][j]=='.')
break;
if(Map[i][j]=='.')
break;
}
if(i==H&&j==L)//*因为i++和j++的缘故所以要i<H,j<L*//
{win=1;
}
if(Map[head_x][head_y]=='@'||head_x<0||head_x>=H||head_y<0||head_y>=L)
over=1;
}
void Move()
{
head_x=head_x+dx[now];
head_y=head_y+dy[now];
Check_Head();
Map[head_x][head_y]='@';
}