




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
一、讀程序題部分(貪吃蛇)
1、程序的功能設(shè)計游戲界面,包括畫墻、畫蛇、畫食物,并且設(shè)置蛇和食物的屬性,編寫蛇的運動方式和游戲方式。2、主函數(shù)分析主函數(shù)中前兩行與編寫圖形程序有關(guān),第三行中調(diào)用Speed函數(shù),把Speed函數(shù)的返回值付給變量speed;第五行dwall函數(shù)的作用是畫墻,函數(shù)中又調(diào)用wall函數(shù)來畫墻上的磚塊3、函數(shù)的調(diào)用關(guān)系4、數(shù)據(jù)變量定義作用定義食物的橫坐標(biāo)food.x和食物的縱坐標(biāo)food.y可以有效的隨機設(shè)置食物出現(xiàn)在界面的任何地方;定義snake.life表示蛇的生死以否,好判斷是否結(jié)束游戲snake.dir=1;/*方向向右*/定義snake.x[0]和snake.y[0]表示蛇頭的坐標(biāo),在后面蛇撞墻死的問題上用的到蛇頭的坐標(biāo);定義蛇的節(jié)數(shù)snake.node,方便蛇每吃到食物節(jié)數(shù)增加;定義snake.level,顯示蛇的闖關(guān)數(shù)5、主要函數(shù)的功能、流程圖dwall():畫墻wall():畫組成墻的磚Speed():選擇貪吃蛇的速度line():畫線函數(shù),畫磚的線條gotoxy():定位坐標(biāo)Play():調(diào)用各函數(shù),開始完游戲GameOver():結(jié)束游戲6、程序的不足及改進沒有障礙墻,游戲過于簡單;沒有游戲獎勵,游戲趣味性不高;改進:設(shè)置障礙墻,蛇撞到墻也死;代碼:for(j=200;j<=300;j+=10){wall(j,300);/*畫橫的障礙墻*/}for(j=300;j<=350;j+=10){wall(300,j);/*畫豎的障礙墻*/}不足:沒有游戲獎勵,游戲趣味性不高;改進:增加生命值,蛇每吃到三顆食物,則增加一個生命值;代碼:定義food.level,在Play函授中初始化,在設(shè)置蛇每吃到一顆食物就增長一節(jié)身體的代碼后加上if(snake.node%3==0){snake.level++;/*除第一關(guān)外,其余每吃3顆食物,就增加一個生命值*/gotoxy(5,2);printf("Thelevelis%d",snake.level);/*左上角顯示出生命值(級別)*/}7、加上注釋、改進后的完整代碼#include<graphics.h>#include<stdlib.h>#include<dos.h>#include<conio.h>#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011b#defineN100/*貪吃蛇的最大長度*/#defineP0x1970/*定義暫停功能鍵*/inti,key;intspeed;/*游戲速度*/structFOOD{intx;/*食物的橫坐標(biāo)*/inty;/*食物的縱坐標(biāo)*/intflag;/*標(biāo)志是否要出現(xiàn)食物*/}food;structSnake{intx[N];inty[N];intnode;/*蛇的節(jié)數(shù)*/intdir;/*蛇移動方向*/intlife;/*標(biāo)志是死是活*/intlevel;/*定義生命值(級別)*/}snake;voidGameOver();/*結(jié)束游戲*/voidPlay();/*玩游戲過程*/voiddwall();/*畫墻*/voidwall(intx,inty);/*畫組成墻的磚*/intSpeed();/*選擇貪吃蛇的速度*/main(){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");speed=Speed();/*將函數(shù)返回值賦給speed*/cleardevice();/*清屏*/dwall();/*開始畫墻*/Play();/*開始完游戲*/getch();closegraph();/*退出圖形界面*/}voidwall(intx,inty){intsizx=9;intsizy=9;setcolor(15);/*白色畫磚的上邊和左邊*/line(x,y,x+sizx,y);line(x,y+1,x+sizx-1,y+1);line(x,y,x,y+sizy);line(x+1,y,x+1,y+sizy-1);setcolor(4);/*紅色畫磚的右面和下面*/line(x+1,y+sizy,x+sizx,y+sizy);line(x+2,y+sizy-1,x+sizx,y+sizy-1);line(x+sizx-1,y+2,x+sizx-1,y+sizy-1);line(x+sizx,y+1,x+sizx,y+sizy);setfillstyle(1,12);/*用淡紅色填充磚的中間部分*/bar(x+2,y+2,x+sizx-2,y+sizy-2);}voiddwall()/*用前面畫好的磚來畫墻*/{intj;for(j=50;j<=600;j+=10){wall(j,40);/*畫上面墻*/wall(j,451);/*畫下面墻*/}for(j=40;j<=450;j+=10){wall(50,j);/*畫左面墻*/wall(601,j);/*畫右面墻*/}for(j=200;j<=300;j+=10){wall(j,300);/*畫橫的障礙墻*/}for(j=300;j<=350;j+=10){wall(300,j);/*畫豎的障礙墻*/}}intSpeed()/*選擇貪吃蛇運行的速度*/{intm;gotoxy(20,10);printf("level1\n");gotoxy(20,12);printf("level2\n");gotoxy(20,14);printf("level3\n");gotoxy(20,16);/*增加一個速度選項*/printf("level4\n\t\tpleasechoose:");scanf("%d",&m);switch(m){case1:return60000;case2:return40000;case3:return20000;case4:return10000;default:cleardevice();Speed();}}voidPlay(void)/*游戲?qū)崿F(xiàn)過程*/{srand((unsignedlong)time(0));food.flag=1;/*1表示需出現(xiàn)新食物,0表示食物已存在*/snake.life=0;/*標(biāo)志貪吃蛇活著*/snake.dir=1;/*方向向右*/snake.x[0]=300;snake.y[0]=240;/*定位蛇頭初始位置*/snake.x[1]=300;snake.y[1]=240;snake.node=2;/*貪食蛇節(jié)數(shù)*/snake.level=1;/*生命值(級別)初始化*/do{while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/{if(food.flag==1)/*需要出現(xiàn)新食物*/do{food.x=rand()%520+60;food.y=rand()%370+60;food.flag=0;/*標(biāo)志已有食物*/}while(food.x%10!=0||food.y%10!=0);if(food.flag==0)/*畫出食物*/{setcolor(WHITE);/*設(shè)置食物的顏色*/setlinestyle(3,0,3);rectangle(food.x,food.y,food.x+10,food.y+10);}for(i=snake.node-1;i>0;i--)/*實現(xiàn)蛇向前移動*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}switch(snake.dir){case1:snake.x[0]+=10;break;/*向右移*/case2:snake.x[0]-=10;break;/*向左移*/case3:snake.y[0]-=10;break;/*向上移*/case4:snake.y[0]+=10;break;/*向下移*/}for(i=3;i<snake.node;i++){if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])/*判斷蛇是否吃到自己*/{GameOver();/*游戲結(jié)束*/snake.life=1;/*蛇死*/break;}}if(snake.x[0]<60||snake.x[0]>590||snake.y[0]<50||snake.y[0]>440)/*蛇是否撞到墻壁*/{GameOver();/*游戲結(jié)束*/snake.life=1;/*蛇死*/break;}if(snake.y[0]==300&&snake.x[0]>200&&snake.x[0]<=300)/*蛇是否撞到橫的障礙墻*/{GameOver();/*游戲結(jié)束*/snake.life=1;/*蛇死*/break;}if(snake.x[0]==300&&snake.y[0]>300&&snake.y[0]<=350)/*蛇是否撞到豎的障礙墻*/{GameOver();/*游戲結(jié)束*/snake.life=1;/*蛇死*/break;}if(snake.x[0]==food.x&&snake.y[0]==food.y)/*判斷是否吃到食物*/{setcolor(0);/*用背景色遮蓋調(diào)食物*/rectangle(food.x,food.y,food.x+10,food.y+10);snake.node++;/*蛇的身體長一節(jié)*/if(snake.node%3==0){snake.level++;/*除第一關(guān)外,其余每吃3顆食物,就增加一個生命值*/gotoxy(5,2);printf("Thelevelis%d",snake.level);/*左上角顯示出生命值(級別)*/}food.flag=1;/*需要出現(xiàn)新的食物*/}setcolor(YELLOW);/*畫蛇(設(shè)置蛇的顏色)*/for(i=0;i<snake.node;i++){setlinestyle(0,0,1);rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10);}delay(speed);setcolor(0);/*用背景色遮蓋蛇的的最后一節(jié)*/rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]+10);}/*endwhile(!kbhit)*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南施工建設(shè)建設(shè)合同
- 安置房工程合同書
- 技術(shù)入股協(xié)議合同
- 婚宴服務(wù)合同
- 代理記賬管理合同書
- 商鋪租賃經(jīng)營合同書
- 建筑工程機械材料租賃合同
- 教師事業(yè)單位聘用合同
- 房屋維修合同協(xié)議書
- 整車協(xié)議合同
- Unit 3Keep Fit.教案2024-2025學(xué)年人教版(2024)七年級英語下冊
- 保障公路、公路附屬設(shè)施質(zhì)量和安全的技術(shù)評價報告
- 2022年10月自考06779應(yīng)用寫作學(xué)試題及答案
- 年產(chǎn)十萬噸丙烯腈生產(chǎn)工藝設(shè)計
- 人教版高中物理必修二全冊同步課時練習(xí)
- 城市社區(qū)管理中存在的問題及對策研究正文內(nèi)容
- (完整)人教版 高一物理課后習(xí)題答案
- GB/Z 26337.1-2010供應(yīng)鏈管理第1部分:綜述與基本原理
- 幼兒園繪本:《超級細(xì)菌王國》
- 污水處理及配套管網(wǎng)工程-項目管理機構(gòu)配備情況
- 《2022年基礎(chǔ)教育省級教學(xué)成果獎申報書》
評論
0/150
提交評論