...其实就是很简单的代码,可是运行结果不对(控制笑脸自动移动,像贪吃蛇...
发布网友
发布时间:2023-11-26 02:38
我来回答
共3个回答
热心网友
时间:2024-07-21 22:26
第一个问题:如第个人所说的,if判断不正确,key
=
'a'
是把'a'赋值给key,所有if(key
=
'a')这句话总是正确的。一般进行判断是,我们这样写:if('a'
==
key),这样就避免把常量赋值给变量了,而造成总是执行TRUE的这个语句块。
第二个问题:在control()这个函数的中的while大循环的前面,有个key=getch();这样,每次执行的都是你第一次输入的字母,例如'w',程序将一直操作'w'这个操作,即向下运行。因为getch()这个函数总是从输入流中得到你输入的字母,因为你第一输入了,但是没清空,所有会重复得到你输入的第一个操作。所有要清空输入流中的缓存内容。做法如下:
while(1)
{
fflush(stdin);
key=getch();
switch(key)
;
……
}
第三个问题:改过之后,左右可以正常操作,但是上下操作有问题。原因是在'w’和'd'的判断中有问题。
‘w’的判断中,将(p->y)++;改为
(p->y)--;
例如:
else
if(key=='w')
{
for(key,i=0;1;i++)
{
gotoxy(p->x,p->y);
printf("%c%c",2,2);
(p->y)++;
Sleep(200);
system("cls");
gotoxy(p->x,p->y);
if(key=='s'||'a'||'d')
break;
}
}
改为:
else
if(key=='w')
{
for(key,i=0;1;i++)
{
gotoxy(p->x,p->y);
printf("%c%c",2,2);
(p->y)--;
Sleep(200);
system("cls");
gotoxy(p->x,p->y);
if(key=='s'||'a'||'d')
break;
}
}
热心网友
时间:2024-07-21 22:23
for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
注释已经解释的很清楚了,不知道你还要问什么?
热心网友
时间:2024-07-21 22:27
==写成=是个很容易犯得错误,另外绘图方式有问题,移动是可以实现不过一闪就没了