《贪吃蛇游戏代码(c++)》由会员分享,可在线阅读,更多相关《贪吃蛇游戏代码(c++)(7页珍藏版)》请在金锄头文库上搜索。
1、#include#include#include#include#includeusing namespace std;int GameOver=0;struct Body/蛇身(链表结构)int x,y;/蛇身结点坐标Body *next;/下一个结点;void SetPos(int i,int j)/设定光标位置COORD pos=i-1,j-1;/坐标变量HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);/获取输出句柄 SetConsoleCursorPosition(Out,pos);/设定光标位置class Sneak/贪吃蛇类 private:B
2、ody *head;/蛇头指针int Direction;/移动方向。1,2,3,4对应上左下右int Count;/蛇长 int Speed;/速度(等级)int FoodExist;/食物存在标记int Food_x;/食物X坐标int Food_y;/食物Y坐标 public:Sneak(int a=3,int b=4,int c=1,int d=0)/构造函数 FoodExist=d;/起始不存在食物 Body *temp1,*temp2; head=new(Body);/申请起始蛇身3节 head-x=4; head-y=2; temp1=new(Body); temp1-x=3;
3、temp1-y=2; temp2=new(Body); temp2-x=2; temp2-y=2; head-next=temp1; temp1-next=temp2; temp2-next=NULL; Direction=b;/方向为右 Count=a;/长为3 Speed=c;/等级1void Map();/画界面函数void Paint();/画蛇身函数void Food();/生成食物int Over();/判断游戏是否结束void Gaming();/游戏进程函数void Move();/移动;void Sneak:Map()/使用int i;for(i=1;i=50;i+)SetP
4、os(i,1);cout-;for(i=2;i=25;i+)SetPos(1,i);cout|;SetPos(50,i);cout|;for(i=1;i=50;i+)SetPos(i,25);cout-;SetPos(54,3);cout贪吃蛇;SetPos(54,5);cout贪吃蛇长度为:Count;SetPos(54,7);cout等级:x=Food_x&p-y=Food_y)InBody=1;break;p=p-next;if(InBody=0)/食物不在蛇身。生成成功break;InBody=0;int Sneak:Over()Body *p;p=head;if(head-x)=50
5、|(head-x)y)y)=25)/是否撞到边缘return 1;p=head-next;while(p!=NULL)/是否撞到蛇身if(head-x=p-x)&(head-y=p-y)return 1;p=p-next;return 0;void Sneak:Paint()Body *p;p=head;while(p!=NULL)SetPos(p-x,p-y);coutnext;SetPos(Food_x,Food_y);coutx=head-x; New-y=head-y-1; New-next=head; head=New;if(Direction=2) New-x=head-x-1;
6、New-y=head-y; New-next=head; head=New;if(Direction=3) New-x=head-x; New-y=head-y+1; New-next=head; head=New;if(Direction=4) New-x=head-x+1; New-y=head-y; New-next=head; head=New;void Sneak:Gaming()system(cls);/刷新屏幕char x;Body *p; Map();/画界面的先 Paint();/再画蛇身 while(1)if(_kbhit()/_kbhit()判断是否有键盘操作x=_get
7、ch();/重缓冲区读出一个字符赋给xif(x=W|x=w)&Direction!=3)/改变蛇的方向(不可以是反方向)Direction=1;if(x=S|x=s)&Direction!=1)Direction=3;if(x=A|x=a)&Direction!=4)Direction=2;if(x=D|x=d)&Direction!=2)Direction=4;while(_kbhit()/读掉这之后所有的键盘输入_getch();if(FoodExist=0)/如果食物被吃了或刚开始游戏,要生成新的食物 Food(); FoodExist=1;Move();/移动蛇if(head-x=Fo
8、od_x&head-y=Food_y)/如果蛇吃到了食物 FoodExist=0; Count+;/蛇身+1 SetPos(54,5); cout贪吃蛇长度:Count;/改变界面信息 if(Count%10=0)/每十个蛇身升一级 Speed+; SetPos(54,7); coutLEVEL:next)-next!=NULL) p=p-next;SetPos(p-next-x,p-next-y); coutnext); p-next=NULL;if(Over()/判断是否游戏结束break;Sleep(500-Speed*50);/等待,具体时间和等级有关system(cls);if(Sp
9、eed=10)/通关SetPos(25,25);cout恭喜你,你已经通关了endl;system(pause);else/失败SetPos(25,10);coutgameover,最终长度为 Countendl;system(pause);int main()system(color 6a);Sneak game;system(cls);cout*endl;cout* 极品贪吃蛇小游戏 *endl;cout*endl;cout* 说明: *endl;cout* W,A,S,D控制移动 *endl;cout* 每10节蛇身升一级,并提高速度,10级通关 *endl;cout*endl;cout* 制作人12计科01班 魏梦阳 *endl;cout* 按任意键开始 *