贪吃蛇自动避开障碍物C语言,贪吃蛇的障碍事用c语言肿么写

#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);}

取消

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值