您的位置 首页 百科知识

求 贪吃蛇C语言代码

问题补充说明:求大神给我一份贪吃蛇的代码,不要用到图形库函数的,只用time,stlib,stdio就好了,谢谢!

求 贪吃蛇C语言代码

#include

#include

#include

#include

#include

#include

#defineN21

intapple[3],num;

char来自score[3];

cha360问答rtail[3];

voidgotoxy(intx,inty毛完参)//输出坐标

{

COORDpos;

pos.X=x;

pos.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

voidcolor(intb)//颜色函数

{

HANDLEhConsole=GetStdHa让吃振席什合威渐班频攻ndle((STD_OUTPUT_HANDLE));

SetConsoleTextAttribute(hConsole,b);

}

intBlock(char低工矿技济吗背水皇城head[2])//判断出界

{

if((head[优0]<1)||(head[0]>N)||(head[1]<1)||(head[1]>N))

return1;

return0;

}

intEat(charsnake[2])//吃了苹果

{

if((snake[0]==apple[0])&&(snake[1]==染调居粮神官要一apple[1]))

{

apple[0]=apple[1]=apple[2]=0;

gotoxy(N+44,10);

color(13);

printf("%d",score[0]*1告考地义艺卫么技留础杆0);

color(11);

return1;

}

return0;

}

voidDraw(char**snake,intlen)//蛇移动

{

if(apple[2])

{

gotoxy(apple[1]*2,apple[0]);

color(12);

printf("●");

color(仅希万货11);

}

gotoxy(tail[1]*2,t期容血界跟判死ail[0]);

if(tail终仍费互兰烧它井[2])

{

color(nu展命现培善误安蒸直m);

printf("★");

color(num);

}

else

printf("■");

gotoxy(snake[0][1]*2,snake[0][0]);

color(num);

printf("★");

color(num);

putchar('\n');

}

char**Move线(char**snake,chardirx,int*len)//控制方向

{

inti,full=Eat(snake[0]);

memcpy(tail,snake[(*len)-1],2);

for(未县随初小i=(*len)-1;i>0;--i)

memcpy(snake[i]训核做司终念永,snake[i-1],2);

switch(dirx)

{

case'w':case'W':--snake[0][0];break;

case's':case'S':++snake[0][0];break;

case'a':case'A':--s后天考下铁劳改谓宪nake[0][1];break;

case'd':case'D':++snake[0][1];break;

洲会如想都汽台间训实default:;

}

if(full)

{

snake=(char**)realloc(snake,sizeof(cha支介群神县权裂局r*)*((*len)+1));

snake[(*len)]=(char*)malloc(sizeof(char)*2);

memcpy(snake[(*len)],tail,2);

++(*len);

++score[0];

if(score[3]<16)

++score[3];

tail[2]=1;

}

else

tail[2]=0;

returnsnake;

}

voidinit(charplate[N+2][N+2千加居天金费民亲强],char***snake_x,int*len)//初始化

{

inti,j;

cha斯路r**snake=NULL;

*len=3;

score[0]=score[3]=3;

snake=(char**)realloc(snake,sizeof(char*)*(*len));

for(i=0;i<*len;++i)

snake[i]=(char*)malloc(sizeof(char)*2);

for(i=0;i<3;++i)

{

snake[i][0]=N/2+1;

snake[i][1]=N/2+1+i;

}

for(i=1;i<=N;++i)

for(j=1;j<=N;++j)

plate[i][j]=1;

apple[0]=rand()%N+1;apple[1]=rand()%N+1;

apple[2]=1;

for(i=0;i

{

gotoxy(0,i);

for(j=0;j

{

switch(plate[i][j])

{

case0:

color(12);printf("□");color(11);continue;

case1:printf("■");continue;

default:;

}

}

putchar('\n');

}

for(i=0;i<(*len);++i)

{

gotoxy(snake[i][1]*2,snake[i][0]);

printf("★");

}

putchar('\n');

*snake_x=snake;

}

voidManual()

{

gotoxy(N+30,2);

color(10);

printf("按WSAD移动方向");

gotoxy(N+30,4);

printf("按space键暂停");

gotoxy(N+30,8);

color(11);

printf("历史最高分为:");

color(12);

gotoxy(N+44,8);

printf("%d",score[1]*10);

color(11);

gotoxy(N+30,12);

printf("你现在得分为:0");

}

intFile_in()//取记录的分数

{

FILE*fp;

if((fp=fopen("C:\\tcs.txt","a+"))==NULL)

{

gotoxy(N+18,N+2);

printf("文件不能打开\n");

exit(0);

}

if((score[1]=fgetc(fp))!=EOF);

else

score[1]=0;

return0;

}

intFile_out()//存数据

{

FILE*fp;

if(score[1]>score[0])

{gotoxy(10,10);

color(12);

puts("闯关失败加油耶");

gotoxy(0,N+2);

return0;

}

if((fp=fopen("C:\\tcs.txt","w+"))==NULL)

{

printf("文件不能打开\n");

exit(0);

}

if(fputc(--score[0],fp)==EOF)

printf("输出失败\n");

gotoxy(10,10);

color(12);

puts("恭喜您打破记录");

gotoxy(0,N+2);

return0;

}

voidFree(char**snake,intlen)//释放空间

{

inti;

for(i=0;i

free(snake[i]);

free(snake);

}

intmain(void)

{

intlen;

charch='g';

chara[N+2][N+2]={{0}};

char**snake;

srand((unsigned)time(NULL));

color(11);

File_in();

init(a,&snake,&len);

Manual();

while(ch!=0x1B)//按ESC结束

{

Draw(snake,len);

if(!apple[2]){

apple[0]=rand()%N+1;

apple[1]=rand()%N+1;

apple[2]=1;

num++;

if(num>8)

num=0;

}

Sleep(200-score[3]*10);

setbuf(stdin,NULL);

if(kbhit())

{

gotoxy(0,N+2);

ch=getche();

}

snake=Move(snake,ch,&len);

if(Block(snake[0])==1)

{

gotoxy(N+2,N+2);

puts("你输了");

File_out();

Free(snake,len);

getche();

exit(0);

}

}

Free(snake,len);

exit(0);

}

上一篇 杨贵妃与杨国忠的关系?
下一篇 贯彻落实《关于进一步激励广大干部新时代新担当新作为的意见》,完善工会干部培养、交流和使用制度,注重在基层一线和职工群众中...
扫一扫,手机访问

扫一扫,手机浏览