syncKeyState(VK_SPACE))
{
pause();
}
if (score==levelup&&speed>=10)//判断成绩,每累积30分速度变快
{
speed-=10;
levelup+=30;
POS(75,12);
printf("当前速度:每隔%d毫秒移动向前移动",speed);
}
move();
}
}
void move()//移动函数,上下左右箭头操作,w前s后a左d右(符号说明),函数包含吃食物计分功能
{
StayAwayFromWall();
DonnotBiteYouself();
p=(snake*)malloc(sizeof(snake));
switch(key)
{
case 'd':
{
p->next=head;
p->x=head->x+2;
p->y=head->y;
POS(p->x,p->y);
printf("■");
head=p;
Sleep(speed);
if (p->x==foodx&&p->y==foody)
{
createfood();
score+=10;
POS(75,11);
printf("得分:%d",score);
break;
}
while(p->next->next!=NULL)
{
p=p->next;
if(p->next->next==NULL)
{
POS(p->x,p->y);
printf(" ");
free(p->next);
p->next=NULL;
p=head;
break;
}
}
break;
}
case 'w':
{
p->next=head;
p->x=head->x;
p->y=head->y-1;
POS(p->x,p->y);
printf("■");
head=p;
Sleep(speed);
if (p->x==foodx&&p->y==foody)
{
createfood();
score+=10;
POS(75,11);
printf("得分:%d",score);
break;
}
while(p->next->next!=NULL)
{
p=p->next;
if(p->next->next==NULL)
{
POS(p->x,p->y);
printf(" ");
free(p->next);
p->next=NULL;
p=head;
break;
}
}
break;
}
case 's':
{
p->next=head;
p->x=head->x;
p->y=head->y+1;
POS(p->x,p->y);
printf("■");
head=p;
Sleep(speed);
if (p->x==foodx&&p->y==foody)
{
createfood();
score+=10;
POS(75,11);
printf("得分:%d",score);
break;
}
while(p->next->next!=NULL)
{
p=p->next;
if(p->next->next==NULL)
{
POS(p->x,p->y);
printf(" ");
free(p->next);
p->next=NULL;
p=head;
break;
}
}
break;
}
case 'a':
{
p->next=head;
p->x=head->x-2;
p->y=head->y;
POS(p->x,p->y);
printf("■");
head=p;
Sleep(speed);
if (p->x==foodx&&p->y==foody)
{
createfood();
score+=10;
POS(75,11);
printf("得分:%d",score);
break;
}
while(p->next->next!=NULL)
{
p=p->next;
if(p->next->next==NULL)
{
POS(p->x,p->y);
printf(" ");
free(p->next);
p->next=NULL;
p=head;
break;
}
}
break;
}
}
}
void pause()//暂停函数,bug:暂停之后会出现蛇短一格。。继续蛇身恢复正常,不会解决
{
do//额外增加的语句,解决上面说的bug,不知道暂停次数多了会不会崩溃,表面上问题是解决了的
{
p=p->next;
}while(p->next!=NULL);
POS(p->x,p->y);
printf("■");
while(1)//暂停语句
{
Sleep(100);
if (GetAsyncKeyState(VK_SPACE))
{
break;
}
}//不能用system("pause");会出现按任意键继续字样
POS(p->x,p->y);
printf(" ");
}
void welcome()
{
POS(28,10);
printf("欢迎来到贪吃蛇");
POS(28,11);
printf("游戏规则:");
POS(28,12);
printf("1、不能撞墙");
POS(28,13);
printf("2、不能撞自己");
POS(28,14);
printf("3、空格可以暂停,再次按下继续游戏");
POS(28,15);
printf("4、要玩的开心");
POS(28,16);
printf("5、别按空格开始游戏!!!你按别的键都可以继续,就是别按空格");
POS(28,17);
printf("作者:屈振宇");
POS(28,18);
printf("别问我为什么和c语言网上的贪吃蛇那么像");
POS(28,19);
printf("因为结构体和地图包括坐标的使用都是参照他做的");
POS(28,20);
system("pause&qu |