#include#include#include#include#include#include#defineN21intapple[3],num;charscore[3];chartail[3];voidgotoxy(intx,inty)//输出坐标{COORDpos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}voidcolor(intb)//颜色函数{HANDLEhConsole=GetStdHandle((STD_OUTPUT_HANDLE));SetConsoleTextAttribute(hConsole,b);}intBlock(charhead[2])//判断出界{if((head[0]N)||(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]*10);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,tail[0]);if(tail[2]){color(num);printf("★");color(num);}elseprintf("■");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':--snake[0][1];break;case'd':case'D':++snake[0][1];break;default:;}if(full){snake=(char**)realloc(snake,sizeof(char*)*((*len)+1));snake[(*len)]=(char*)malloc(sizeof(char)*2);memcpy(snake[(*len)],tail,2);++(*len);++score[0];if(score[3]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;i8)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);}
取消
评论