版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、測控技術與儀器專業(yè)課程設計題單班級0982021學生劉某某課程名稱計算機課程設計課題貪吃蛇游戲程序設計設計要求1.學習游戲設計有關知識.2 .設計貪吃蛇游戲程序.3 .調(diào)試并修改程序.4 .完成課程設計論文.課題發(fā)給日期2021年6月25日課程設計完成日期2021年7月09日指導教師余某某評語:貪吃蛇游戲?qū)W生姓名:劉某某班級:0882021指導老師:余某某摘要:編寫C語言程序?qū)崿F(xiàn)貪吃蛇游戲,貪吃蛇游戲是一個深受人們喜愛的游戲,一條蛇在密閉的圍墻內(nèi),在圍墻內(nèi)隨機出現(xiàn)一個食物,通過按鍵盤上的四個光標鍵限制蛇向上下左右四個方向移動,蛇頭撞到食物,那么表示食物被蛇吃掉,這時蛇的身體長一節(jié),同時計10分
2、,接著又出現(xiàn)食物,等待被蛇吃掉,如果蛇在移動過程中,撞到墻壁或身體交叉蛇頭撞到自己的身體游戲結(jié)束.作為一個完整的程序,必須考慮人機交流與用戶體驗.游戲的界面不能太丑,更不能連個簡單的界面都沒有.游戲應該有個比擬漂亮的界面,在有必要硬件支持和軟件的支持下,游戲開發(fā)者必須最大限度的使游戲美觀.游戲的美觀是一方面,游戲的內(nèi)在素質(zhì)是另一方面.一個游戲的優(yōu)劣,最終由玩家決定.在游戲與玩家見面之前,游戲開發(fā)者要設計一種讓玩家投入的游戲模式,并且在一定的游戲規(guī)那么下進行.關鍵詞:貪吃蛇流程圖c語言源程序1前言12課設內(nèi)容32.1 課設目的32.2 設計功能32.3 結(jié)構(gòu)設計73結(jié)論11參考文獻15附錄A16
3、C語言是一種易學易懂的通用程序設計語言,由于它具有功能性強,運用簡潔,靈活兼有高級語言與低級語言的優(yōu)點,以及“目標程序效率高可移植性和能在各種系統(tǒng)上普遍實現(xiàn)等特點使它成為當今世界上的主流程序設計語言之一,同時被選作目前全世界廣泛應用,同時也是大學生必修的科目.作為一位當代的大學生更要很好的利用它,學好一門設計語言,實現(xiàn)學以至用.制作C程序報告,可以穩(wěn)固和加深自己對C語言課程的根本知識的理解和掌握,并且能夠掌握C語言編程和程序調(diào)試的根本技能.通過游戲程序的設計練習可以提升自己的根本技能,更好地掌握字符串的表示方法和字符串函數(shù)的功能、Tc圖形操作的根本知識、鍵盤上特殊鍵的獲取以及圖形方式下光標的顯
4、示,提升自己編程興趣與編程水平,學會如何正確的書寫程序設計說明文檔,提升運用C語言解決實際問題的能力,穩(wěn)固C語言語法規(guī)那么的理解和掌握,學會通過源程序?qū)懗隽鞒虉D,提高自學以及查閱資料的水平.C語言課程應注重邊學邊練,但由于課堂教學和實驗的深度和廣度有限,練習的深度也受到一定限制.為了彌補這一點,學校開設了本課程設計.它比教學實驗復雜一些,涉及的深度廣些并更加接近實用.目的是通過課程設計的綜合練習,培養(yǎng)我們實際分析問題、編程和動手水平,最終目標是想通過這種形式,幫助我們系統(tǒng)地掌握程序設計的主要內(nèi)容,更好地完成學業(yè).這次課程設計的主要特點如下:1 .函數(shù)定義是要做到顧名思義是很重要的,它對讀程序的
5、人正確熟悉程序十分重要,在修改這個程序的過程中也能很快找到程序各模塊的作用,大大增加了程序的可讀性.2 .分析函數(shù)先從main()函數(shù)入手.Main()函數(shù)是C源程序編譯時的開始,從main()函數(shù)開始讀函數(shù)可將其他函數(shù)的功能理解得更透徹.3 .在做程序的時候先列框架,將這個程序所要到達的目的(功能)分析出來,選擇正確的數(shù)據(jù)結(jié)構(gòu)然后在將程序模塊化,根據(jù)模塊編寫函數(shù)更加簡單合理.4 .我還了解了很多的庫函數(shù)的作用,如字符串函數(shù)中有很多對字符串進行處理的函數(shù),起功能我都有所了解.5 .它獨立于具體的C語言教科書,重點放在C語言的根本特征上,以"不變"應"萬變"
6、;,涵蓋C語言的重要根底知識,讓我們熟練掌握C語言的實際使用.6 .結(jié)合實際應用的要求,使課程設計既覆蓋知識點,又接近工程實際需要.激發(fā)學習興趣,調(diào)動我們主動學習的積極性,并會根據(jù)實際編程要求,練習自己實際分析問題的水平及編程水平,并養(yǎng)成良好的編程習慣.7 .提供綜合的課程設計理念,以期進一步鍛煉學生的動手水平.同時讓同學合作完成這些實驗,以便鍛煉互相合作精神,培養(yǎng)團隊意識.8 .通過觀察網(wǎng)絡的實例,循序漸進地啟發(fā)學生完成設計.課程設計將要求、算法和源程序分開,為學生創(chuàng)造獨立思考的條件.學生在充分理解要求和算法的前提下,設計自己的應用程序.同時我也獲得了許多珍貴的經(jīng)驗:1)在設計程序之前,務必
7、要對你所設計的題目和內(nèi)容有一個系統(tǒng)的了解,知道所設計的題目和內(nèi)容包含那些資源.2)設計程序采用什么編程語言并不是非常重要,關鍵要有一個清楚的思路和一個完整的軟件流程圖,因而,要先把設計原理與思路搞清楚,再把流程圖畫出來,這樣設計起來就簡單多了3在設計程序時,不能妄想一次就將整個程序設計好,反復修改,不斷改進是程序設計的必經(jīng)之路,發(fā)現(xiàn)錯誤也是取得成績的一種.4要養(yǎng)成注釋程序的好習慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便.2課設內(nèi)容2.1 設計目的通過課程設計的綜合練習,培養(yǎng)我們實際分析問題、編程和動手水平,據(jù)課堂講授內(nèi)容,學生做相
8、應的自主練習,消化課堂所講解的內(nèi)容;通過調(diào)試典型例題或習題積累調(diào)試C程序的經(jīng)驗;通過完成輔導教材中的編程題,逐漸培養(yǎng)學生的編程水平、用計算機解決實際問題的水平.最終目標是想通過這種形式,幫助我們系統(tǒng)地掌握程序設計的主要內(nèi)容,更好地完成學業(yè).2.2 設計功能在這次課射中,我選擇的是貪吃蛇游戲的制作,游戲是人們生活中不可或缺的,一個人從小到大,真正伴隨他成長的東西,游戲占有著很重要的地位.不管是一個玩具,還是一個能和伙伴一起開心的小游戲,都是能給我們留下很多美好的回憶.所以不管是什么樣的游戲,只要它能迎合人們內(nèi)心的某種需求,它的市場總會是好的,而貪吃蛇是一個深受人們喜愛的游戲,一條蛇在密閉的圍墻內(nèi)
9、,在圍墻內(nèi)隨即出現(xiàn)一個食物,通過按鍵上的四個光標鍵限制向上下左右四個方向移動,蛇頭撞到食物,那么表示食物被吃掉,這時蛇身體長一節(jié),同時計10分,接著又出現(xiàn)食物,等待被蛇吃掉,如果蛇在移動過程中,撞到墻壁或身體交叉蛇頭撞到自己的身體那么游戲結(jié)束.本程序運行實現(xiàn)的主要技巧在二維數(shù)組的應用上,程序運行時,游戲界面如下列圖所示,邊框表示圍墻,黑色單獨方塊表示食物:二二口匚匚=iIIIfII'IIFIII圖2.1游戲界面2.3 結(jié)構(gòu)設計程序關鍵在于表示蛇的圖形及蛇的移動.用一個小矩形快表示蛇的一節(jié)身體,身體每長一節(jié),增加一個矩形塊,蛇頭用倆節(jié)表示.移動時必須從蛇頭開始,所以蛇不能向相反的方向移動
10、,如果不按任意鍵,蛇自行在當前方向上前移,但按下有效方向鍵后,蛇頭朝著該方向移動,一步移動一節(jié)身體,所以按下有效方向鍵后,先確定蛇頭的位置,而后蛇的身體隨蛇頭移動,圖形的實現(xiàn)是從蛇頭新位置開始畫出蛇,這時,由于未清屏的原因,原來的蛇的位置和新蛇的位置差一個單位,所以看起來蛇多一節(jié)身體,所以將蛇的最后一節(jié)用背景色覆蓋.食物的出現(xiàn)與消失也是畫矩形塊和覆蓋矩形塊.為了便于理解,定義兩個結(jié)構(gòu)體:食物與蛇.2.3.1 數(shù)據(jù)結(jié)構(gòu)表示食物和蛇的矩形都設計為10X10個像素單位,食物的根本數(shù)據(jù)域為它所出現(xiàn)的位置,用X和y坐標表示,那么矩形塊用函數(shù)rectangle(x,y,x+10,y+10)或rectang
11、le(x,y,x+10,y-10)可以畫出.由于每次只出現(xiàn)一個食物,而食物被吃掉后,才出現(xiàn)下一個食物,所以設定yes表示是否要出現(xiàn)一個食物的變量.蛇的一節(jié)身體為一個矩形塊,這樣表示每個矩形塊只需起點坐標x和y.身體是不斷增長的,所以用數(shù)組存放每一節(jié)的坐標,最大設定為N=200,node表示當前節(jié)數(shù).另外還需要保存蛇移動方向的變量direction和表示生命的變量life,一但life為1,那么蛇死,游戲結(jié)束.所以程序功能的實現(xiàn)就是數(shù)組的操作.#defineN200structFoodintx/*食物的橫坐標*/inty;/*食物的縱坐標*/intyes;/*判斷是否出現(xiàn)食物的變量*/food;
12、/*食物的結(jié)構(gòu)體*/structsnake(intxN;/*蛇的橫坐標*/intyN;/*蛇的縱坐標*/intnode;/*蛇的節(jié)數(shù)*/intdirection;/*蛇移動方向*/intlife;/*蛇生命,0活著,1死亡*/snake;2.3.2 main()主函數(shù)主函數(shù)是程序的主流程,首先定義使用到的常數(shù)、全局變量及函數(shù)原型說明,然后初始化圖形系統(tǒng),調(diào)用函數(shù)DrawK()畫出開始畫面,調(diào)用函數(shù)GamePlay(),即玩游戲的具體過程,游戲結(jié)束后調(diào)用Close()關閉圖形系統(tǒng),結(jié)束程序voidmain(void)/*主函數(shù)*/(Init();/*圖形驅(qū)動*/DrawK();/*開始畫面*/G
13、amePlay();/*玩游戲具體過程*/Close();/*圖形結(jié)束*/voidInit(void)/*圖形驅(qū)動*/(intgd=DETECT,gm;initgraph(&gd,&gm,"c:tc");/*第一個參數(shù)表示圖形適配器的類型,第二個為在該類型下列圖形的顯示模式,第三個參數(shù)指定驅(qū)動程序所在目錄.*/cleardevice();2.3.3 畫界面函數(shù)DrawK()主界面就是一個密封的圍墻,用兩個循環(huán)語句分別在水平方向和垂直方向輸出連續(xù)的寬度和高度均為10個單位的矩形小方塊,圍成密閉圖形,表示圍墻,為了醒目,設置淡青顏色,用函數(shù)setlinestyl
14、e(SOLD_LINE,0,THICK_WIDTH設置線型寬度為3個像素.設置3個像素的圍墻線,蛇在貼墻走的時候,會擦掉局部圍墻線,使線變細,圖形變得不好看,如果不想這種情況出現(xiàn),那么將線型寬度設置為1個像素.voidDrawK(void)/*開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍墻*/setbkcolor(0);/*設置當前背景顏色*/setcolor(YELLOW);/*設置當前畫線顏色*/setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設置線型*/for(i=50;i<=600;i+=10)/*畫圍墻*/recta
15、ngle(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);/*右邊*/2.3.4 游戲具體過程函數(shù)GamePlay()這個函數(shù)是游戲的主要局部,難點在表示蛇的新位置并消除前一次的圖形.采用的方法是每次移動的時候從最后一節(jié)開始到倒數(shù)第二節(jié)(因蛇頭為兩節(jié)),將前一節(jié)的坐標賦值給最后一節(jié)的坐標,移動后只要把最后一節(jié)用背景色去除即可,由于新的位置0到n-1節(jié)還是要出現(xiàn)在畫面上的.然后蛇頭
16、根據(jù)方向來更改位置.另外,食物的隨機出現(xiàn)要保證它的位置在10的倍數(shù)位置上,由于蛇的坐標都是以10為模的,這樣的話就可以讓蛇吃到,蛇吃到食物的判斷是蛇頭的坐標和食物的坐標相等.算法過程如下:設置初始值.為預防食物出現(xiàn)在同一個位置上,要設置隨機數(shù)發(fā)生器,真正產(chǎn)生隨機數(shù).初始時,蛇只有蛇頭,設定一個開始的方向.循環(huán)執(zhí)行,直到按ESC鍵退出.1)沒有按鍵的情況下,循環(huán)執(zhí)行.如果沒有食物,隨機出現(xiàn)食物;如果有食物,那么顯示食物,蛇移動身體,根據(jù)蛇的方向改變坐標值,并判斷蛇是否撞到自己或自己吃了自己,如果出現(xiàn)這兩種情況之一,那么蛇死,調(diào)用游戲結(jié)束函數(shù)GameOver()結(jié)束本次游戲,重新開始.假設蛇吃到了
17、食物,蛇身體長一節(jié),數(shù)組元素增加一個,身體節(jié)數(shù),分數(shù)都進行相應的改變.在新的位置出蛇.2)如果有按鍵,那么識別鍵值.如果按鍵為ESC鍵那么結(jié)束游戲,程序運行結(jié)束;如果所按鍵為方向鍵,那么根據(jù)該鍵改變代表蛇方向的變量direction的值,要考慮相反方向鍵無效.randomize.;/*隨機數(shù)發(fā)生器*/food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/snake.life=0;/*活著*/snake.direction=1;/*方向往右*/snake.x0=100;snake.y0=100;/*蛇頭*/snake.x1=110;snake.y1=100;/*蛇第二節(jié)*/sna
18、ke.node=2;/*節(jié)數(shù)*/PrScore();/*輸出得分*/while(1)/*可以重復玩游戲,壓ESCi束*/while(!kbhit()/*在沒有按鍵的情況下,蛇自己移動身體*/if(food.yes=1)/*需要出現(xiàn)新食物*/food.x=rand()%400+60;food.y=rand()%350+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)/*畫面上有食物了就要顯示*/se
19、tcolor(GREEN);/*食物的顏色*/rectangle(food.x,food.y,food.x+10,food.y-10);for(i=snake.node-1;i>0;i-)/*蛇的每個環(huán)節(jié)往前移動,貪吃蛇的關鍵算法*/snake.xi=snake.xi-1;snake.yi=snake.yi-1;)switch(snake.direction)/*定義1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/(case1:snake.x0+=10;break;case 2: snake.x0-=10;break;case 3: snake.y0-=10;brea
20、k;case 4: snake.y0+=10;break;)for(i=3;i<snake.node;i+)/*從蛇的第四節(jié)開始判斷是否撞到自己了,由于蛇頭為兩節(jié),第三節(jié)不可能拐過來*/(if(snake.xi=snake.x0&&snake.yi=snake.y0)(GameOver();/*顯示失敗*/snake.life=1;break;)if(snake.x0<55|snake.x0>595|snake.y0<55|snake.y0>455)/*蛇是否撞到墻壁*/(GameOver();/*本次游戲結(jié)束*/snake.life=1;/*蛇死
21、*/)if(snake.life=1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始*/break;if(snake.x0=food.x&&snake.y0=food.y)/*吃到食物以后*/(setcolor(0);/*把畫面上的食物東西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.xsnake.node=-20;snake.ysnake.node=-20;/*-20表示尾巴長一節(jié)*/*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/snake.node+;/*蛇的身體長一節(jié)*/food.yes=1
22、;/*畫面上需要出現(xiàn)新的食物*/score+=10;PrScore();/*輸出新得分*/)setcolor(4);for(i=0;i<snake.node;i+)/*畫出蛇*/rectangle(snake.xi,snake.yi,snake.xi+10,snake.yi-10);delay(gamespeed);setcolor(0);/*用黑色去除蛇的的最后一節(jié)*/rectangle(snake.xsnake.node-1,snake.ysnake.node-1,snake.xsnake.node-1+10,snake.ysnake.node-1-10);/*endwhile(!k
23、bhit)*/if(snake.life=1)/*如果蛇死就跳出循環(huán)*/break;key=bioskey(0);/*接收按鍵*/if(key=ESC)/*按ESC1退出*/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
24、(key=DOWN&&snake.direction!=3)snake.direction=4;/*endwhile(1)*/2.3.5 游戲結(jié)束函數(shù)GameOver()游戲結(jié)束,去除屏幕,輸出分數(shù),顯示游戲結(jié)束信息voidGameOver(void)/*游戲結(jié)束*/cleardevice();PrScore();setcolor(RED);settextstyle(0,0,4);outtextxy(200,200,"guojian");getch();)voidPrScore(void)/*輸出成績*/(charstr10;setfillstyle(SOL
25、ID_FILL,WHITE);bar(50,15,200,35);setcolor(6);settextstyle(0,0,2);sprintf(str,"score:%d,score);outtextxy(55,20,str);)voidClose(void)/*圖形結(jié)束*/(getch();closegraph();)2.3.6 輸出分數(shù)函數(shù)PrScore()在指定的位置利用sprintf()將整數(shù)轉(zhuǎn)換為字符串,用outtextxy()輸出,bar()函數(shù)的應用是為了覆蓋原來的值.2.3.7 圖形結(jié)束函數(shù)Close()在顯示游戲結(jié)束信息的畫面時,按任意鍵關閉圖形系統(tǒng),程序結(jié)束.2
26、.3.8 系統(tǒng)總體方案介紹貪吃蛇原理:游戲貪吃蛇就是在液晶屏幕上畫出蛇,同時隨機地給出食物.游戲者通過鍵盤操作限制貪吃蛇的移動,去吃食物,吃到后食物消失,然后再隨機給出食物同時蛇的身體增長.畫蛇的原理就是利用人眼的視覺效應先將蛇頭向前移動一格,然后所有蛇身依次向前移動一格,最后再擦除蛇尾.這樣在人眼看來好似蛇在向前移動.食物的給出,首先需要產(chǎn)生一個隨機數(shù),然后通過這個隨機數(shù)計算得到食物的橫縱坐標,在液晶屏上顯示出來.限制蛇的移動方向,需要掃描鍵盤,然后根據(jù)鍵值改變蛇的移動方向2.3.9 游戲流程圖c開始In-j.白兄苜求11Lp'P'1I加進入嬴L圖2.2游戲流程圖3結(jié)論(1)
27、設計知識點* 采用了數(shù)組元素為結(jié)構(gòu)體的數(shù)組應用:查找速度快.缺點:大小固定,不適合動態(tài)存儲,不方便動態(tài)添加.* 全局變量的應用:在所有的函數(shù)之外定義的變量稱為外部變量(或叫做全局變量),其作用范圍是從變量定義的位置開始,直到根源文件的結(jié)束.* 按鍵的處理:功能鍵的問題在于,用戶界面并非固定的,用戶功能鍵的選擇將使屏幕畫面處于不同的顯示狀態(tài)下.通過這種方式,WIN32有效的組織了不同的窗口,并處理不同窗口情況下的消息.* 圖形方式:視頻BIOS(BasicI/OSystemS本輸入/輸出系統(tǒng))是與顯示卡配套的一個重要組成局部.用戶通過調(diào)用它可以完成一些與顯示有關的限制功能.對于要用到顯示系統(tǒng)的一
28、般程序設計都可以通過調(diào)用視頻BIOs或視頻函數(shù)庫來完成.但要想獲得更高性能的顯示程序,還需要在C中對顯示卡的存放器和顯示內(nèi)存直接進行編程.(2)程序的特點* 設計中步奏鮮明,結(jié)構(gòu)緊密,段落間銜接良好,語句簡單易懂.* 游戲操作簡單,并富有趣味性,有商業(yè)價值.* 個人感覺在增加delay()函數(shù)可以提升游戲速度增加趣味性.通過游戲程序的設計練習可以提升自己的根本技能,更好地掌握字符串的表示方法和字符串函數(shù)的功能、Tc圖形操作的根本知識、鍵盤上特殊鍵的獲取以及圖形方式下光標的顯示,提升自己編程興趣與編程水平,學會如何正確的書寫程序設計說明文檔,提升運用C語言解決實際問題的能力,穩(wěn)固C語言語法規(guī)那么
29、的理解和掌握,學會通過源程序?qū)懗隽鞒虉D,提高自學以及查閱資料的水平.回憶起此次課程設計,至今我仍感慨頗多,從理論到實踐,在整整兩個星期的日子里,我學到很多很多的東西,不僅穩(wěn)固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的內(nèi)容.通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才是真正的知識,才能提升自己的實際動手水平和獨立思考的水平.在設計的過程遇到了各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的缺乏之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢周,通過這次課程設計,把以前所學過的知識重新溫故
30、,穩(wěn)固了所學的知識,并在網(wǎng)友和老師的指導下,終將此程序設計出來.盡管不是自己獨立完成,但仍然很快樂,由于在設計的過程中,讓我了解到要設計一個大型程序,查找資料是至關重要的,在他人的根底上,再根據(jù)自己所學進行修改與調(diào)試,最后設計出自己想要的程序,這過程艱辛,但只要你持之以恒,成功指日可待.總之,這次設計程序讓我受益良多,感悟很深,真心感謝老師給予的這次時機.參考文獻1潘云鶴,董金祥.計算機圖形學一一原理、方法及應用M.北京:高等教育出版社,20032孫家廣.計算機圖形學第三版M.北京:清華大學出版社,20043陳元琰.計算機圖形學實用技術M.北京:科學出版社,20004和青芳.計算機圖形學原理及
31、算法教程M.北京:清華大學出版社5陸潤民.C語言繪圖教程M.北京:清華大學出版社,1996#defineN200#include<graphics.h>#include<stdlib.h>#include<dos.h>#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011binti,key;intscore=0;/*得分*/intgamespeed=50000;/*游戲速度自己調(diào)整*/structFoodintx;/*食物的橫坐標*/inty;/*食
32、物的縱坐標*/intyes;/*判斷是否要出現(xiàn)食物的變量*/food;/*食物的結(jié)構(gòu)體*/structSnakeintxN;intyN;intnode;/*蛇的節(jié)數(shù)*/intdirection;/*蛇移動方向*/intlife;/*蛇的生命,0活著,1死亡*/snake;voidInit(void);/*圖形驅(qū)動*/voidClose(void);/*圖形結(jié)束*/voidDrawK(void);/*開始畫面*/voidGameOver(void);/*結(jié)束游戲*/voidGamePlay(void);/*玩游戲具體過程*/voidPrScore(void);/*輸出成績*/*主函數(shù)*/void
33、main(void)Init();/*圖形驅(qū)動*/DrawK();/*開始畫面*/GamePlay();/*玩游戲具體過程*/Close();/*圖形結(jié)束*/*圖形驅(qū)動*/voidInit(void)intgd=DETECT,gm;initgraph(&gd,&gm,"c:tc");cleardevice();voidDrawK(void)/*setbkc010r(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設置線型*/上邊*/下邊*/for(i=50;i<=6
34、00;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.;/*隨機數(shù)發(fā)生器*/food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/snake.life=0;/*活著*/snake.direction=1;/*方向往右*/snake.x0=
35、100;snake.y0=100;/*蛇頭*/snake.x1=110;snake.y1=100;snake.node=2;/*節(jié)數(shù)*/PrScore();/*輸出得分*/while(1)/*可以重復玩游戲,壓ESCi束*/(while(!kbhit()/*在沒有按鍵的情況下,蛇自己移動身體*/(if(food.yes=1)/*需要出現(xiàn)新食物*/(food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內(nèi)這樣才可以讓蛇吃到*/food.x+;while(food.y%10!=0)food.y
36、+;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.xi=snake.xi-1;snake.yi=snake.yi-1;)/*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/switch(snake.direction)(case1:snake.x0+=10;break;case 2: snake.x0-=10;break;case 3: snake.y0-=10;break;case 4: snake.y0+=10;break;)for(i=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人工耳蝸行業(yè)政策分析:人工耳蝸行業(yè)標準推動人工耳蝸技術普及
- 2025年個人三項機制學習心得體會模版(3篇)
- 課題申報參考:緊密型醫(yī)聯(lián)體視角下大灣區(qū)老年中醫(yī)藥服務評價體系構(gòu)建與實證研究
- 二零二五年度集團高層管理人員任期制競聘與續(xù)聘合同6篇
- 2025版小時工定期雇傭合同范本3篇
- 2025版土地征收及安置補償中介服務合同3篇
- 全新二零二五年度房地產(chǎn)銷售代理合同3篇
- 二零二五版企業(yè)內(nèi)部會計檔案安全保密服務協(xié)議3篇
- 2025年度文化創(chuàng)意產(chǎn)品開發(fā)與銷售合作協(xié)議范本4篇
- 二零二五年度廚具品牌設計創(chuàng)新合同4篇
- 圖像識別領域自適應技術-洞察分析
- 個體戶店鋪租賃合同
- 禮盒業(yè)務銷售方案
- 二十屆三中全會精神學習試題及答案(100題)
- 小學五年級英語閱讀理解(帶答案)
- 仁愛版初中英語單詞(按字母順序排版)
- 【奧運會獎牌榜預測建模實證探析12000字(論文)】
- 魯濱遜漂流記人物形象分析
- 危險廢物貯存?zhèn)}庫建設標準
- 多層工業(yè)廠房主體結(jié)構(gòu)施工方案鋼筋混凝土結(jié)構(gòu)
- 救生艇筏、救助艇基本知識課件
評論
0/150
提交評論