版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C一.程序功能介紹10假設(shè)蛇在移動中撞到墻或身體穿插蛇頭撞倒自己身體玩耍完畢。二.程序整體設(shè)計(jì)說明是一體的〕。矩形塊數(shù)據(jù)構(gòu)造設(shè)計(jì)及用法說明開頭局部:包括繪制玩耍運(yùn)行時的背景,對玩耍某些重要變量的初始化。運(yùn)行局部:吃;同樣在不明緣由的狀況下,食物從天而降,惋惜的是沒有落到嘴邊;饑餓的它超出想象的同化力量讓食物很快的成為自己身體的一局部,它的身子變長啦。身不便,連續(xù)吃下去,現(xiàn)在它是直接把巴張大,好讓食物有個綠色通道。但是在某天的下午,它咬到了自己,它才想起自己是一條毒蛇,于是暈死過去〔不是毒死〕;又或者它往食物沖鋒的時候,它失去掌握,撞到了墻上。撞到自己或墻壁;由第四步起玩耍有兩條支線〔A、B〕:A推斷蛇是否吃到食物,假設(shè)蛇吃到食物,身子變長,原來的食物消逝;第六步,輪循環(huán)的第一步,重復(fù)第一輪的步驟;完畢局部:玩耍完畢時,顯示“GAMEOVER”,已經(jīng)是商定俗成的規(guī)律了,我的玩耍也13+2據(jù)構(gòu)造。C語言中數(shù)據(jù)構(gòu)造集中表達(dá)在數(shù)據(jù)類型上,因此在進(jìn)展C語言程序設(shè)計(jì)時,重要的,假設(shè)在此期間選擇不適宜的變量或者數(shù)組,將來修改就格外困難。蛇:根本描述:長度,顏色,位置。顏色--整型;位置--X,Y增加的描述:蛇運(yùn)動的方向,蛇的生命。個整型數(shù):3、4、2、101。食物:根本描述:顏色,位置。對應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:由于顏色設(shè)成固定的,所以不再爭論。位置—X、Y坐標(biāo)。增加的描述:食物的存在。函數(shù)有聯(lián)系。只有兩個值:01〔沒有食物或有食物〕明實(shí)際的墻壁就是四條直線組成的邊框,由坐標(biāo)描述。的速度〕。各模塊的功能及程序說明主要模塊的實(shí)現(xiàn)思路和算法的流程圖說明:關(guān)鍵所在——蛇不停移動的Snakemove:一組坐標(biāo)對應(yīng)一節(jié)的位置,假設(shè)有i+10i節(jié),第ii-1i-1i-2100的這種坐標(biāo)輪換需要循環(huán)語句使其連續(xù)下去。兩節(jié)表示:玩耍完畢時,顯示“GAMEOVER”三.程序源代碼及注釋:#defineN200#include<graphics.h>#include<stdlib.h>#include<dos.h>#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011binti,key;intscore=0;/*得分*/intgamespeed=50000;/*玩耍速度自己調(diào)整*/structFood{intx;/*食物的橫坐標(biāo)*/inty;/*食物的縱坐標(biāo)*/intyes;/*推斷是否要消滅食物的變量*/}food;/*食物的構(gòu)造體*/structSnake{intx[N];inty[N];intnode;/*蛇的節(jié)數(shù)*/intdirection;/*蛇移動方向*/intlife;/*蛇的生命,0活著,1死亡*/}snake;voidInit(void);/*圖形驅(qū)動*/voidClose(void);/*圖形完畢*/voidDrawK(void);/*開頭畫面*/voidGameOver(void);/*完畢玩耍*/voidGamePlay(void);/*玩玩耍具體過程*/voidPrScore(void);/*輸出成績*//*主函數(shù)*/voidmain(void){Init;/*圖形驅(qū)動*/DrawK;/*開頭畫面*/GamePlay;/*玩玩耍具體過程*/Close;/*圖形完畢*/}/*圖形驅(qū)動*/voidInit(void){intgd=DETECT,gm;initgraph(&gd,&gm,“c:\\tc“);cleardevice;}/*開頭畫面,左上角坐標(biāo)為〔50,40610,460〕的圍墻*/voidDrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/for(i=50;i<=600;i+=10)/*畫圍墻*/{rectangle(i,40,i+10,49);/*上邊*/rectangle(i,451,i+10,460);/*下邊*/}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10);/*左邊*/rectangle(601,i,610,i+10);/*右邊*/}}/*玩玩耍具體過程*/voidGamePlay(void){randomize;/*隨機(jī)數(shù)發(fā)生器*/food.yes=1;/*1表示需要消滅食物,0表示已經(jīng)存在食物*/snake.life=0;/*活著*/snake.direction=1;/*方向往右*/snake.x[0]=100;snake.y[0]=100;/*蛇頭*/snake.x[1]=110;snake.y[1]=100;snake.node=2;/*節(jié)數(shù)*/PrScore;/*輸出得分*/while(1)/*可以重復(fù)玩玩耍,ESC鍵完畢*/{while(!kbhit)/*在沒有按鍵的狀況下,蛇自己移動身體*/{if(food.yes==1)/*需要消滅食物*/{food.x=rand%400+60;food.y=rand%350+60;while(food.x%10!=0)/*食物隨機(jī)消滅后必需讓食物能夠在整格內(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é)往前移動,也就是貪吃蛇的關(guān)鍵算法*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四個方向,通過這個推斷來移動蛇頭*/switch(snake.direction){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++)/*三節(jié)不行能拐過來*/{if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){GameOver;/*顯示失敗*/snake.life=1;break;}}if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)/*蛇是否撞到墻壁*/{GameOver;/*本次玩耍完畢*/snake.life=1;/*蛇死*/}if(snake.life==1)/*以上兩種推斷以后,假設(shè)蛇死就跳出內(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;/*畫面上需要消滅的食物*/score+=10;PrScore;/*輸出得分*/}setcolor(4);/*畫出蛇*/for(i=0;i<snake.node;i++)rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);delay(gamespeed);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〕*/if(snake.life==1)/*假設(shè)蛇死就跳出循環(huán)*/break;key=bioskey(0);/*接收按鍵*/if(key==ESC)/*ESC鍵退出*/break;elseif(key==UP&&snake.direction!=4)/*推斷是否往相反的方向移動*/snake.direction=3;elseif(key==RIGHT&&snake.direction!=2)snake.direction=1;elseif(key==LEFT&&snake.direction!=1)snake.direction=2;elseif(key==DOWN&&snake.direction!=3)snake.direction=4;}/*endwhile(1)*/}/*玩耍完畢*/voidGameOver(void){cleardevice;PrScore;setcolor(RED);settextstyle(0,0,4);outtextxy(200,200,“GAMEOVER“);getch;}/*輸出成績*/voidPrScore(void){charstr[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,“score:%d“,score);outtextxy(55,20,str);}/*圖形完畢*/voidClose(v
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深度解析(2026)《GBT 25658.1-2010數(shù)控仿形定梁龍門鏜銑床 第1部分:精度檢驗(yàn)》(2026年)深度解析
- 國際關(guān)系中的“韌性”(resilience)話語霸權(quán)化批判-基于2023–2025年歐盟、北約、聯(lián)合國戰(zhàn)略文件共現(xiàn)分析
- 2025年江西移動第四季度社會招聘備考筆試題庫及答案解析
- 2025年西安市雁塔區(qū)第一小學(xué)教師招聘考試筆試備考試題及答案解析
- 2025云南農(nóng)業(yè)生產(chǎn)資料股份有限公司及下屬公司招聘考試參考試題及答案解析
- 2025四川宜賓市消防救援局第五次招聘政府專職消防員35人模擬筆試試題及答案解析
- 2026河北滄州醫(yī)學(xué)高等??茖W(xué)校高層次人才選聘50人備考筆試試題及答案解析
- 《人口普查》數(shù)學(xué)課件教案
- 2025安徽六安霍邱老年大學(xué)旅游專業(yè)教師招聘1人備考考試題庫及答案解析
- 2025年下半年武警江西總隊(duì)醫(yī)院社會招聘5人考試備考題庫及答案解析
- 2025西部機(jī)場集團(tuán)航空物流有限公司招聘筆試備考重點(diǎn)試題及答案解析
- 2025年1月黑龍江省普通高中學(xué)業(yè)水平合格性考試語文試卷(含答案)
- 衛(wèi)健系統(tǒng)2025年上半年安全生產(chǎn)工作總結(jié)
- 2026屆安徽省皖南八校高三第二次大聯(lián)考化學(xué)試卷
- 元旦聯(lián)歡會:瘋狂動物城
- 期末綜合測評卷一(試卷)2025-2026學(xué)年三年級語文上冊(統(tǒng)編版)
- 數(shù)據(jù)資產(chǎn)管理實(shí)踐指南8.0
- 2025年非遺文化(文化傳承)項(xiàng)目可行性研究報告
- 2025年6月浙江省高考物理試卷真題(含答案解析)
- 2025年廣西公需真題卷及答案
- 行政案例分析-終結(jié)性考核-國開(SC)-參考資料
評論
0/150
提交評論