
哈嘍,大家好~~~我是小編田甜,關(guān)于C語言貪吃蛇實驗報告總結(jié),c語言貪吃蛇這個很多人還不知道,那么現(xiàn)在讓田甜帶著大家一起來看看吧!
1、#include #include #include #include /*引用的庫函數(shù)*/#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b/*宏定義鍵名*/#define N 200int i,key;int level;/*游戲等級*/int score=0;/*得分*/int gamespeed;/*游戲速度*/struct Food{int x;/*食物的橫坐標*/int y;/*食物的縱坐標*/int yes;/*判斷是否要出現(xiàn)食物的變量*/}food;/*食物的結(jié)構(gòu)體*/struct Snake{int x[N];int y[N];int node;/*蛇的節(jié)數(shù)*/int direction;/*蛇移動方向*/int life;/* 蛇的生命,0活著,1死亡*/}snake;/*蛇的結(jié)構(gòu)體*/void Choicelevle(void);/*選擇游戲等級*/void Init(void);/*圖形驅(qū)動*/void Close(void);/*圖形結(jié)束*/void DRAW(void);/*游戲區(qū)域*/void GameOver(void);/*結(jié)束游戲*/void GamePlay(void);/*玩游戲具體過程*/void PrScore(void);/*輸出成績*//*主函數(shù)*/void main(void){Init();/*圖形驅(qū)動*/Choicelevle();/*選擇游戲等級*/DRAW();/*游戲區(qū)域*/GamePlay();/*玩游戲具體過程*/Close();/*圖形結(jié)束*/}/*圖形驅(qū)動*/void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"\turboc2"); /*初始化圖形系統(tǒng)*/cleardevice(); /*清除圖形界面*/}/*選擇游戲等級*/void Choicelevle(void){char name[20];setcolor(YELLOW);settextstyle(0,0,6);outtextxy(150,150,"Snake");setcolor(GREEN);settextstyle(0,0,1);outtextxy(200,250,"please put in your English name:");outtextxy(200,270,"Choice levle from 1-9.");outtextxy(300,320,"name:yangzilong");/*制作人姓名*/outtextxy(300,350,"number:0902060226");/*制作人學號*/outtextxy(300,380,"class:computer science 0602");/*制作人班級*/getch();printf("please putin your name:");gets(name);printf("please choice levle:");scanf("%d",&level);gamespeed=100000-400*level-300*level*level;if(level>9||level<1){cleardevice(); /*清除圖形界面*/setcolor(YELLOW); /*設(shè)置字體顏色*/settextstyle(0,0,2); /*設(shè)置字體類型*/outtextxy(150,200,"level input error"); /*顯示文本*/getch();level=1;}}void DRAW(void){cleardevice(); /*清屏*/setcolor(2);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/rectangle(45,45,465,325);}/*玩游戲具體過程*/void GamePlay(void){setcolor(5);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/randomize();/*隨機數(shù)發(fā)生器*/food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/***.life=0;/*活著*/snake.direction=1;/*方向往右*/snake.x[0]=320;snake.y[0]=240;/*蛇頭*/snake.x[1]=330;snake.y[1]=240; /*蛇的第二節(jié)位置*/snake.node=3;/*節(jié)數(shù)*/PrScore();/*輸出得分*/while(1)/*可以重復玩游戲,壓ESC鍵結(jié)束*/{while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/{if(food.yes==1)/*需要出現(xiàn)新食物*/{food.x=rand()%360+70;food.y=rand()%250+60;while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*畫面上有食物了*/}if(food.yes==0)/*畫面上有食物了就要顯示*/{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)/*蛇的每個環(huán)節(jié)往前移動*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四個方向,通過這個控制來移動蛇頭*/switch(snake.direction){case 1: snake.x[0]+=10;break;case 2: snake.x[0]-=10;break;case 3: snake.y[0]-=10;break;case 4: snake.y[0]+=10;break;}for(i=3;i2、蛇頭從對面墻出來*/if(snake.x[0]<50){snake.x[0]=450;/*如果蛇頭越過左邊界,則從右邊界進入*/snake.y[0]=snake.y[0];/*縱坐標不變*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進*/}{setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/}}elseif(snake.x[0]>450){snake.x[0]=50;/*如果蛇頭越過右邊界,則蛇頭從左邊界進入*/snake.y[0]=snake.y[0];/*縱坐標不變*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進*/}{setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/}}elseif(snake.y[0]<60){snake.y[0]=320;/*如果蛇頭越過上邊界,則從下邊界進入*/snake.x[0]=snake.x[0];/*橫坐標不變*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進*/}{setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色。
3、0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/}}elseif(snake.y[0]>320){snake.y[0]=60;/*如果蛇頭越過下邊界,則從上邊界進入*/snake.x[0]=snake.x[0];/*橫坐標不變*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進*/}{setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/}}if(***.life==1)/*如果蛇死就跳出內(nèi)循環(huán),重新開始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/{setcolor(0);/*把畫面上的食物東西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10); /*用當前線型和顏色畫一矩形*/snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/snake.node++;/*蛇的身體長一節(jié)*/food.yes=1;/*畫面上需要出現(xiàn)新的食物*/score+=10; /*每吃掉一食物,得分累加10分*/if(score%100==0){level++;gamespeed=100000-400*level-300*level*level;/*每吃掉10食物提升一級,速度加快*/PrScore();/*輸出新得分*/setcolor(YELLOW); /*設(shè)置字體顏色*/settextstyle(0,0,4); /*設(shè)置字體類型*/outtextxy(150,200,"LEVEL UP"); /*顯示文本*/if(level==10){level=1,gamespeed=100000-400*level-300*level*level;}delay(6000000); delay(6000000); delay(6000000); delay(6000000); delay(6000000);delay(6000000); delay(6000000);bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/}PrScore();/*輸出新得分*/ } setcolor(4);/*畫出蛇*/ for(i=0;i本文分享完畢,希望對大家有所幫助哦。
免責聲明:本文為轉(zhuǎn)載,非本網(wǎng)原創(chuàng)內(nèi)容,不代表本網(wǎng)觀點。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關(guān)內(nèi)容。