資源描述:
《貪吃蛇游戲代碼(C++)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、#include#include#include#include#includeusingnamespacestd;intGameOver=0;structBody//蛇身(鏈表結(jié)構(gòu)){intx,y;//蛇身結(jié)點坐標Body*next;//下一個結(jié)點};voidSetPos(inti,intj)//設(shè)定光標位置{COORDpos={i-1,j-1};//坐標變量HANDLEOut=GetStdHandle(STD_OUTPUT_HANDLE);//獲取輸出句柄SetConsoleCurs
2、orPosition(Out,pos);//設(shè)定光標位置}classSneak//貪吃蛇類{private:Body*head;//蛇頭指針intDirection;//移動方向。1,2,3,4對應(yīng)上左下右intCount;//蛇長intSpeed;//速度(等級)intFoodExist;//食物存在標記intFood_x;//食物X坐標intFood_y;//食物Y坐標public:Sneak(inta=3,intb=4,intc=1,intd=0)//構(gòu)造函數(shù){FoodExist=d;//起始不存在食物Body*temp1,*temp2;head=new(Body);//申請
3、起始蛇身3節(jié)head->x=4;head->y=2;temp1=new(Body);temp1->x=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;//長為3Speed=c;//等級1}voidMap();//畫界面函數(shù)voidPaint();//畫蛇身函數(shù)voidFood();//生成食物intOver();//判斷游戲是否結(jié)束voidGaming();//游戲進程函數(shù)v
4、oidMove();//移動};voidSneak::Map()//使用{inti;for(i=1;i<=50;i++){SetPos(i,1);cout<<"-";}for(i=2;i<=25;i++){SetPos(1,i);cout<<"
5、";SetPos(50,i);cout<<"
6、";}for(i=1;i<=50;i++){SetPos(i,25);cout<<"-";}SetPos(54,3);cout<<"貪吃蛇";SetPos(54,5);cout<<"貪吃蛇長度為:"<7、k::Food(){Body*p;intInBody=0;//判斷食物是否產(chǎn)生在蛇體內(nèi)srand((int)time(0));//用系統(tǒng)時間來做隨機數(shù)種子while(1){Food_x=rand()%48+2;//隨機出食物的坐標Food_y=rand()%23+2;p=head;while(p!=NULL)//判斷食物是否產(chǎn)生在蛇體內(nèi){if(p->x==Food_x&&p->y==Food_y){InBody=1;break;}p=p->next;}if(InBody==0)//食物不在蛇身。生成成功break;InBody=0;}}intSneak::Over(){Body*p
8、;p=head;if((head->x)>=50
9、
10、(head->x)<=1
11、
12、(head->y)<=1
13、
14、(head->y)>=25)//是否撞到邊緣return1;p=head->next;while(p!=NULL)//是否撞到蛇身{if((head->x==p->x)&&(head->y==p->y))return1;p=p->next;}return0;}voidSneak::Paint(){Body*p;p=head;while(p!=NULL){SetPos(p->x,p->y);cout<<"*";p=p->next;}SetPos(Food_x,Food_y);c
15、out<<"*";}voidSneak::Move(){Body*New;New=new(Body);//新的蛇身結(jié)點if(Direction==1)//確定新蛇頭的坐標{New->x=head->x;New->y=head->y-1;New->next=head;head=New;}if(Direction==2){New->x=head->x-1;New->y=head->y;New->next=head;head=New;}if(Direction==3){Ne