|
9#
楼主 |
发表于 2016-8-13 12:34:46
|
只看该作者
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define W 30
#define H 30
int main()
{int map[H][W],x,y,l,size,direction=3,sx[1000],sy[1000],xf,yf,speed,full,score,sleeptime,s1,s2,s3;
char key,stop;
for(x=0;x<H;x++)
{
for(y=0;y<W;y++)
{
if(x==0||y==0||x==H-1||y==W-1)
{map[x][y]=19;}
else{map[x][y]=10;}
}
}
sx[1]=15;sy[1]=15;
sx[2]=15;sy[2]=14;
sx[3]=15;sy[3]=13;
sx[4]=15;sy[4]=12;
printf("贪吃蛇");
printf("操作:a左转,d右转,空格暂停/继续\n请按任意键继续\n");
stop=getch();
printf("请输入游戏速度: 格/秒(正整数,且小于1000)");
scanf("%d",&speed);
printf("请按任意键继续");
stop=getch();
system("cls");
size=4;
sleeptime=1000/speed;
full=0;
for(l=1;l<=size;l++)
map[sx[l]][sy[l]]=11;
do{
srand((unsigned)time(NULL));
xf=rand()%29;
yf=rand()%31;
}
while(map[xf][yf]!=10);
map[xf][yf]=12;
while(sx[1]!=0&&sy[1]!=0&&sx[1]!=H-1&&sy[1]!=W-1)
{ if(kbhit())
key=getch();
switch(key)
{
case'a':if(direction==3)direction=direction+9;
else direction=direction-3;break;
case'd':if(direction==12)direction=direction-9;
else direction=direction+3;break;
case' ':stop=getch();break;
default:break;
}
switch(direction)
{
case 3:sy[0]=sy[1]+1;sx[0]=sx[1];break;
case 6:sx[0]=sx[1]+1;sy[0]=sy[1];break;
case 9:sy[0]=sy[1]-1;sx[0]=sx[1];break;
case 12:sx[0]=sx[1]-1;sy[0]=sy[1];break;
}
if(map[sx[0]][sy[0]]==12)
{
full=1;
score=score+10;
do{
srand((unsigned)time(NULL));
xf=rand()%31;
yf=rand()%29;
}
while(map[xf][yf]!=10);
map[xf][yf]=12;
}
if(map[sx[0]][sy[0]]==11)
break;
for(l=size+1;l>=1;l--)
{sx[l]=sx[l-1];
sy[l]=sy[l-1];}
map[sx[1]][sy[1]]=11;
map[sx[size+1]][sy[size+1]]=10;
system("cls");
for(x=0;x<H;x++)
{
for(y=0;y<W;y++)
{
if(map[x][y]==10)
printf(" ");
else if(map[x][y]==19) printf("■");
else if(map[x][y]==11) printf("■");
else if(map[x][y]==12) printf("◆");
}
printf("\n");
}
Sleep(sleeptime);
key='w';
if(full==1)
size++;
full=0;
}
score=size-4;
s1=score%10;
s2=((score-s1)/10)%10;
s3=((score-s1-s2*10)/100)%10;
for(x=0;x<H;x++)
{
for(y=0;y<W;y++)
{
if(x==0||y==0||x==H-1||y==W-1)
{map[x][y]=9;}
else{map[x][y]=0;}
map[14][10]=103;
map[14][11]=97;
map[14][12]=109;
map[14][13]=101;
map[14][16]=111;
map[14][17]=118;
map[14][18]=101;
map[14][19]=114;
map[16][10]=115;
map[16][11]=99;
map[16][12]=111;
map[16][13]=114;
map[16][14]=101;
map[16][17]=s3;
map[16][18]=s2;
map[16][19]=s1;
}
}
system("cls");
for(x=0;x<H;x++)
{
for(y=0;y<W;y++)
{
if(map[x][y]==0)
printf(" ");
else if(map[x][y]==9) printf("■");
else if(map[x][y]>=97&&map[x][y]<=122)printf("%2c",map[x][y]);
else if(map[x][y]>=0&&map[x][y]<=9)printf("%2d",map[x][y]);
}
printf("\n");
}
system("pause");
}
|
|