C语言linux控制蛇的运动,c语言贪吃蛇设置特定键暂停不要任意键暂停(我设置了两条蛇)...

满意回答

检举

|2019/06/09 15:38

基本思路:蛇每吃一个食物蛇身子就增加一格,用UP,DOWN,LEFT,RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。#include#include#include#defineBEG_X2#defineBEG_Y1#defineWID20#defineHEI20HANDLEhout;typedefenum{UP,DOWN,LEFT,RIGHT}DIR;typedefstructSnake_body{COORDpos;//蛇身的位置structSnake_body*next;//下一个蛇身structSnake_body*prev;//前一个蛇身}SNAKE,*PSNAKE;PSNAKEhead=NULL;//蛇头PSNAKEtail=NULL;//蛇尾//画游戏边框的函数voidDrawBorder(){inti,j;COORDpos={BEG_X,BEG_Y};for(i=0;ipos=pos;if(!head){head=tail=pnew;}else{pnew->next=head;//新创建蛇身的next指向原先的蛇头head->prev=pnew;//原先的蛇头的prev指向新创建的蛇身head=pnew;//把新创建的蛇身作为新的蛇头}SetConsoleCursorPosition(hout,head->pos);printf("◎");}//蛇身移动的函数voidMoveBody(DIRdir){PSNAKEptmp;COORDpos=head->pos;switch(dir){caseUP:if(head->pos.Y>BEG_Y+1)--pos.Y;elsereturn;break;caseDOWN:if(head->pos.Ypos.X>BEG_X+2)pos.X-=2;elsereturn;break;caseRIGHT:if(head->pos.Xprev;if(tail)tail->next=NULL;SetConsoleCursorPosition(hout,ptmp->pos);printf("");free(ptmp);}intmain(){intctrl;DIRdir=RIGHT;//初始蛇的方向是向右的COORDpos={BEG_X+2,BEG_Y+HEI/2};system("color0E");system("modeconcols=90lines=30");hout=GetStdHandle(STD_OUTPUT_HANDLE);printf("------------贪吃蛇的移动------------");DrawBorder();//自定义几个蛇的身体AddBody(pos);pos.X+=2;AddBody(pos);pos.X+=2;AddBody(pos);pos.X+=2;AddBody(pos);pos.X+=2;AddBody(pos);pos.X+=2;AddBody(pos);pos.X+=2;AddBody(pos);//控制蛇的移动while(ctrl=getch()){switch(ctrl){case'w':if(dir==DOWN)continue;dir=UP;break;case's':if(dir==UP)continue;dir=DOWN;break;case'a':if(dir==RIGHT)continue;dir=LEFT;break;case'd':if(dir==LEFT)continue;dir=RIGHT;break;case'q':return0;}MoveBody(dir);}return0;}

69dab857bc15c72fd26d0ef27b40ae65.gif 加载中...

a370b6deb434adc48a81484eb36d4a26.gif

大学士

|

采纳率100%

|

回答于 2019/06/09 15:38

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值