




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上目錄1. 課程設(shè)計(jì)目的32. 課程設(shè)計(jì)任務(wù)與要求32.1課程設(shè)計(jì)內(nèi)容32.2課程設(shè)計(jì)要求32.3課程設(shè)計(jì)環(huán)境33. 課程設(shè)計(jì)方案3 3.1方案論證33.2程序整體設(shè)計(jì)說明33.3設(shè)計(jì)思路43.4設(shè)計(jì)總體流程圖43.5設(shè)計(jì)的具體實(shí)現(xiàn)54. 程序測(cè)試84.1測(cè)試內(nèi)容與結(jié)果84.2程序運(yùn)行效果圖95. 課程設(shè)計(jì)總結(jié)106.參考文獻(xiàn)11附錄 源程序11 1. 課程設(shè)計(jì)目的:l 復(fù)習(xí)、鞏固才C、C+的基礎(chǔ)知識(shí),進(jìn)一步加深對(duì)VC技術(shù)的理解和掌握;l 課程設(shè)計(jì)為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生的分析解決實(shí)際問題的能力。l
2、培養(yǎng)學(xué)生在項(xiàng)目開發(fā)中團(tuán)隊(duì)合作精神、創(chuàng)新意識(shí)及能力2. 課程設(shè)計(jì)任務(wù)與要求2.1 課程設(shè)計(jì)內(nèi)容貪吃蛇游戲開發(fā),首先它可以為大家提供一種當(dāng)前比較流行的休閑小游戲。貪吃蛇是家喻戶曉的益智類小游戲,選擇這個(gè)題目一是為了將自己的所學(xué)知識(shí)加以運(yùn)用,二是一直以來貪吃蛇這個(gè)游戲就深深地吸引著很多人,它的制作方法對(duì)于很多同學(xué)而言都是很神秘的。所以我們希望通過這學(xué)期所學(xué)知識(shí)把它剖析開來,真真正正的了解它的本質(zhì)和精髓。在這次學(xué)習(xí)中我們將從實(shí)踐和實(shí)際的項(xiàng)目中提高自己的編程能力。因此決定選擇這個(gè)題目作為VC的課程設(shè)計(jì)。最后一部分就是游戲的模塊劃分,根據(jù)分析,貪吃蛇這個(gè)程序一共要實(shí)現(xiàn)如下幾個(gè)功能,包括游戲方面開始游戲、暫
3、停游戲以及停止游戲,游戲設(shè)置(蛇的顏色、食物的顏色操作說明等)與積分。2.2課程設(shè)計(jì)要求l 對(duì)系統(tǒng)進(jìn)行功能模塊分析、控制模塊分析正確,符合課題要求,實(shí)現(xiàn)相應(yīng)功能;可以加以其他功能或修飾,使程序更加完善、合理;l 系統(tǒng)設(shè)計(jì)要實(shí)用,采用模塊化程序設(shè)計(jì)方法,編程簡(jiǎn)練、可用,功能全面;l 說明書、流程圖要清楚;l 記錄設(shè)計(jì)情況(備查,也為編寫設(shè)計(jì)說明書作好準(zhǔn)備);2.3課程設(shè)計(jì)環(huán)境Windows7操作系統(tǒng),VC6.0開發(fā)環(huán)境。3. 課程設(shè)計(jì)方案3.1方案論證方案一:基于MFC設(shè)計(jì)該方案的好處是系統(tǒng)自動(dòng)生成軟件框架,設(shè)計(jì)者只需填充編寫的代碼即可,程序設(shè)計(jì)比較復(fù)雜,對(duì)于編程能力不強(qiáng)的同學(xué)來說難度較大。方案
4、二:基于easyX設(shè)計(jì)該方案的好處是設(shè)計(jì)者只需編寫程序文件,完成后編譯即可生成可執(zhí)行文件,編程前需要先安裝easyX圖形庫。由于編程能力不強(qiáng),方案二設(shè)計(jì)簡(jiǎn)單,易于調(diào)試,故選擇方案二。3.2程序整體設(shè)計(jì)說明一個(gè)游戲要有開始部分,運(yùn)行部分,結(jié)束部分(實(shí)際上開始部分與運(yùn)行部分是一體的)。游戲界面:1)開始游戲(加載并開始)2)暫停游戲(從當(dāng)前進(jìn)度結(jié)束)3)重新開始(在某一時(shí)刻暫停后可以繼續(xù)接著玩)游戲設(shè)置:1)蛇的顏色(紅色)2)游戲幫助(游戲控制說明)3)積分(每次吃掉一個(gè)食物增加10分,并顯示出來)3.3設(shè)計(jì)思路這個(gè)程序的關(guān)鍵是表示蛇的圖形以及蛇的移動(dòng)。用一個(gè)小矩形表示蛇的一節(jié)身體,身體每長(zhǎng)一節(jié)
5、,增加一個(gè)矩形塊。移動(dòng)時(shí)必須從蛇頭開始,所以蛇不能向相反方向移動(dòng),也就是蛇尾不能改作蛇頭。如果不按任何鍵,蛇自行在當(dāng)前方向上前移,當(dāng)游戲者按了有效的方向鍵后,蛇頭朝著指定的方向移動(dòng),一步移動(dòng)一節(jié)身體,所以當(dāng)按了有效的方向鍵后,先確定蛇頭的位置,然后蛇身體隨著蛇頭移動(dòng),圖形的實(shí)現(xiàn)是從蛇頭的新位置開始畫出蛇,這時(shí)原來蛇的位置和新蛇的位置差一個(gè)單位,所以看起來蛇會(huì)多一節(jié)身體,所以將蛇的最后一節(jié)用背景色覆蓋。食物的出現(xiàn)和消失也是畫矩形塊和覆蓋矩形塊。3.4設(shè)計(jì)總體流程圖是是游戲結(jié)束否蛇頭是否撞墻或者自身否否隨機(jī)生成下一個(gè)食物根據(jù)鍵盤控制蛇移動(dòng)方向是蛇開始移動(dòng)判斷是否開始載入游戲并初始化 蛇頭和食物坐標(biāo)
6、是否重合否是否3.5設(shè)計(jì)的具體實(shí)現(xiàn)1) 食物類 struct Food/*食物的結(jié)構(gòu)體定義*/int x;/*食物的橫坐標(biāo)*/int y;/*食物的縱坐標(biāo)*/int addFood;/*判斷是否要出現(xiàn)食物的變量*/;2)蛇塊類把蛇分成一塊一塊,一個(gè)蛇相當(dāng)于有若干個(gè)塊,蛇塊類就是用來描述每塊的信息。struct Snake/*蛇的結(jié)構(gòu)體定義*/ int xMAX_JOINTS; /*保存蛇身每一節(jié)位于屏幕上的列坐標(biāo)*/int yMAX_JOINTS; /*保存蛇身每一節(jié)位于屏幕上的行坐標(biāo)*/int joint;/*蛇的節(jié)數(shù)*/int direction;/*蛇移動(dòng)方向*/int life;/*蛇
7、的生命,0活著,1死亡*/;3) 初始化游戲 游戲開始界面的初始化: void InitGraph()cleardevice();setbkcolor(BLUE); /*設(shè)置背景顏色*/setcolor(WHITE); /*設(shè)置前景顏色*/cleardevice();setfont(25, 0, _T("微軟雅黑");outtextxy(170,150,"Greedy Snake"); /*在坐標(biāo)(170,150)處輸出字符串*/outtextxy(219,254,"Ready?");getch();setbkcolor(0);cle
8、ardevice();4) 繪制游戲場(chǎng)景 setlinestyle(PS_SOLID, 5)用于繪制實(shí)心的寬度為5個(gè)像素的線型,bar(i,40,i+7,47);為畫一個(gè)左上角為(i,40),右下角為(i+7,47)的矩形條,rectangle(i, 40, i+10, 49)也用于畫矩形。void DrawFence()int i;setbkcolor(LIGHTGREEN);setlinestyle(PS_SOLID, 5);/畫圍墻setfillstyle(LIGHTBLUE);for (i=50; i<=591; i+=10)/rectangle(i, 40, i+10, 49)
9、;/上邊bar(i,40,i+7,47);bar(i, 551, i+7,558);/下邊f(xié)or (i=40; i<=550; i+=10)bar(50, i, 57, i+7);/左邊bar(591, i, 598, i+7);/右邊5) 結(jié)束游戲 PrScore(score)用于輸出分?jǐn)?shù)。 void GameOver(int score)cleardevice();PrScore(score);setcolor(RED);setfont(80, 0, _T("微軟雅黑");outtextxy(100, 200, "GAME OVER"); mc
10、iSendString("close mo.mp3", NULL, 0, NULL); /關(guān)閉音樂getch();exit(0);6) 判斷是否需要出現(xiàn)食物 if (food.addFood = 1) /需要出現(xiàn)新食物 food.x = rand() % 400 + 60;food.y = rand() % 350 + 60;/食物出現(xiàn)后必須在整格內(nèi)才能讓蛇吃到while (food.x%10 != 0)food.x+;while (food.y%10 !=0) food.y+; food.addFood=0;/畫面上有食物 if (food.addFood=0) /畫面上
11、有食物,則顯示 setcolor(GREEN);rectangle(food.x, food.y, food.x+10, food.y-10);7)在沒有按鍵的情況下,蛇自己移動(dòng)身體for (i=snake.joint-1; i>0; i-)/蛇的每個(gè)節(jié)往前移動(dòng) snake.xi = snake.xi-1;snake.yi = snake.yi-1;/1,2,3,4 表示右,左,上,下四個(gè)方向,來決定蛇頭的移動(dòng) switch(snake.direction) case MV_RIGHT: snake.x0 += 10; break;case MV_LEFT: snake.x0 -= 10
12、; break;case MV_UP: snake.y0 -= 10; break;case MV_DOWN: snake.y0 += 10; break;8)a.從蛇的第四節(jié)開始判斷是否撞到自己,因?yàn)樯哳^為兩節(jié),第三節(jié)不可能拐過來 for (i=3; i<snake.joint; i+) if (snake.xi=snake.x0 && snake.yi=snake.y0) GameOver(score);/顯示失敗snake.life = 1; /蛇死*/break; b.判斷蛇是否撞到墻壁 if (snake.x0<55 | snake.x0>595 |
13、 snake.y0<55 | snake.y0>455) GameOver(score);/本次游戲結(jié)束snake.life = 1; /蛇死 c.判斷是否撞到障礙物for(int obs_i = 0; obs_i<vox.size(); obs_i+) if(voxobs_i=snake.x0 && voyobs_i=snake.y0) GameOver(score);以上三種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始。9) 吃到食物后畫蛇if (snake.x0=food.x && snake.y0=food.y) /吃到食物后/把畫面上的食
14、物清除 setcolor(0);rectangle(food.x, food.y, food.x+10, food.y-10);/新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置snake.xsnake.joint =-20; snake.ysnake.joint =-20;snake.joint+;/蛇的身體長(zhǎng)一節(jié)food.addFood = 1;/畫面上需要出現(xiàn)新食物score += 10;/-PrScore(score);/輸出新得分/畫蛇setcolor(RED);for (i=0; i<snake.joint; i+)rectangle(snake.xi, snake.yi
15、,snake.xi+10, snake.yi-10);Sleep(gamespeed); /延時(shí)控制蛇的速度/去除蛇的最后一節(jié)setcolor(0);rectangle(snake.xsnake.joint-1, snake.ysnake.joint-1,snake.xsnake.joint-1+10,snake.ysnake.joint-1-10);10)按鍵操作 key=getch();/接收按鍵switch(key) /判斷按鍵,是否往相反方向移動(dòng)case 'w':case 'W':if(snake.direction!=MV_DOWN) snake.di
16、rection = MV_UP;break;case 'd':case 'D':if(snake.direction!=MV_LEFT) snake.direction = MV_RIGHT;break;case 'a':case 'A':if(snake.direction!=MV_RIGHT) snake.direction = MV_LEFT;break;case 's':case 'S':if(snake.direction!=MV_UP) snake.direction = MV_DOWN
17、;break;case 'p':case 'P':fun_pause();break;case 'r':case 'R':fun_reset();break;編好程序后進(jìn)行編譯、運(yùn)行,生成可執(zhí)行文件,就可以玩貪吃蛇游戲了。4.程序測(cè)試4.1測(cè)試內(nèi)容與結(jié)果1)開始:程序運(yùn)行后,會(huì)出來藍(lán)色背景界面和提示語Ready?,按任意鍵開始,注意不要在中文輸入法下玩。開始后只有兩節(jié)的紅色蛇和一個(gè)綠色的食物,并且蛇是運(yùn)動(dòng)的。2)方向鍵和WSAD鍵:蛇開始運(yùn)行之后,當(dāng)點(diǎn)擊上下左右鍵(或WSAD)蛇就會(huì)按相應(yīng)的方向運(yùn)動(dòng),蛇不能180度轉(zhuǎn)彎,只能進(jìn)行9
18、0度的轉(zhuǎn)彎。程序檢測(cè)時(shí)蛇確實(shí)會(huì)按點(diǎn)擊方向運(yùn)動(dòng)且不會(huì)向相反方向運(yùn)動(dòng),所有方向鍵使用正確。3)暫停/繼續(xù):當(dāng)程序正在運(yùn)行時(shí),點(diǎn)擊暫停/繼續(xù)按鈕“P”,蛇停在當(dāng)前的位置,再次點(diǎn)擊“P”蛇又從當(dāng)前位置繼續(xù)運(yùn)動(dòng)。此按鈕符合要求,所以暫停/繼續(xù)按鈕使用正確,功能能夠?qū)崿F(xiàn)。4)重新開始:當(dāng)游戲結(jié)束或想重新開始一局時(shí),點(diǎn)擊按鈕“R”,游戲又回到最初的狀態(tài),一個(gè)食物,一個(gè)運(yùn)動(dòng)著的紅色蛇塊,且游戲積分清零。所以重新開始功能能夠?qū)崿F(xiàn)。5)界面右側(cè)能夠出現(xiàn)按鍵提示和分?jǐn)?shù)顯示等有關(guān)信息。4.2程序運(yùn)行效果圖5.課程設(shè)計(jì)總結(jié)在設(shè)計(jì)這個(gè)程序中我主要學(xué)會(huì)了如何運(yùn)用以下有關(guān)C語言和C+的知識(shí):1)函數(shù)定義是要做到顧名思義是很重
19、要的,它對(duì)讀程序的人正確認(rèn)識(shí)程序十分重要,在修改這個(gè)程序的過程中也能很快找到程序各模塊的作用,大大增加了程序的可讀性。2)分析函數(shù)先從main()函數(shù)入手。Main()函數(shù)是C+源程序編譯時(shí)的開始,從main()函數(shù)開始讀函數(shù)可將其他函數(shù)的功能理解得更透徹。3)在做程序的時(shí)候先列框架,將這個(gè)程序所要達(dá)到的目的(功能)分析出來,選擇正確的數(shù)據(jù)結(jié)構(gòu)然后在將程序模塊化,按照模塊編寫函數(shù)更加簡(jiǎn)單合理。4)我還了解了很多的庫函數(shù)的作用,如字符串函數(shù)中有很多對(duì)字符串進(jìn)行處理的函數(shù),其功能我都有所了解。5)學(xué)會(huì)了有關(guān)頭文件的使用方法,及系統(tǒng)調(diào)配問題的解決方法等。6)了解到了注釋的重要性。通過這次試驗(yàn),讓我學(xué)
20、到很多這個(gè)學(xué)期沒有接觸過的很多知識(shí),完成一個(gè)貪吃蛇的項(xiàng)目;第一步就是先理清思路,設(shè)計(jì)主界面,主界面是以一塊封閉的畫布,并在畫布內(nèi)設(shè)計(jì)蛇體和食物。蛇頭如果碰到墻或者與蛇身的某一部分碰到就會(huì)死亡;如果蛇頭碰到食物,就會(huì)自動(dòng)增加一節(jié)蛇身,并更改得分。 想要寫出好的程序,還是要有扎實(shí)的基礎(chǔ),這樣遇到問題就不會(huì)一籌莫展來。在編程時(shí)我們要有想象力,不要拘泥于現(xiàn)有的貪吃蛇游戲,而是要把自己想到的再加上所學(xué)的知識(shí),遇到問題不能怕,而是要專心找出問題的原因,再回來看看書本的知識(shí),不懂的還可以問問老師。編程過程還要養(yǎng)成良好的編程習(xí)慣,這樣不僅自己能夠很好看懂自己的代碼,也讓人家容易看懂自己的代碼,而不至于代碼知識(shí)
21、自己會(huì)看,出來問題只有自己會(huì)解決而其他人都不會(huì)解決;遇到問題時(shí)要考慮最簡(jiǎn)單的解決方案,只有簡(jiǎn)單的方案不能滿足要求時(shí)再考慮復(fù)雜的方案。最主要編程還是要多與人溝通,不會(huì)的不能立即問別人,但是一段時(shí)間后解決不了時(shí)還是應(yīng)該向別人請(qǐng)教請(qǐng)教,“三人行必有我?guī)煛闭沁@個(gè)意思。通過這次實(shí)驗(yàn),我深刻地體會(huì)到了面向?qū)ο笈c面向過程的區(qū)別。程序在最初設(shè)計(jì)時(shí)由于面向?qū)ο蟮乃枷氩粔虺墒?,?dǎo)致在最后想要增加一些新的功能時(shí),出現(xiàn)了一些麻煩??傊?,我們還需要進(jìn)一步提升自己的能力。6.參考文獻(xiàn)C語言程序設(shè)計(jì) 武雅麗 清華大學(xué)出版社C+面向?qū)ο蟪绦蛟O(shè)計(jì) 譚浩強(qiáng) 清華大學(xué)出版社C語言課程設(shè)計(jì)案例精編 李麗娟 中國(guó)水利水電出版社附錄:
22、源程序 / 程序名稱:貪吃蛇/ 制作:莫新存/ 編譯環(huán)境:Visual C+ 6.0 ,EasyX/#include <iostream>#include <graphics.h>#include <stdlib.h>#include <conio.h>#include <dos.h>#include <time.h>#include <stdio.h>#include <vector>#define random(a,b) (rand()%(b)-(a)+(a)#pragma comment(li
23、b,"Winmm.lib") /加入背景音樂時(shí)使用using namespace std;#define MAX_JOINTS200#define MV_RIGHT 1#define MV_LEFT 2#define MV_UP 3#define MV_DOWN 4int rnd1,rnd2;vector<int>vox;vector<int>voy;void InitGraph(void);/*圖形界面初始化函數(shù)*/void DrawFence(void);/*繪制游戲場(chǎng)景*/void GameOver(int score);/*結(jié)束游戲*/voi
24、d GamePlay(void);/*玩游戲具體過程*/void PrScore(int score); /*顯示分?jǐn)?shù)*/void fun_pause(); /*暫停游戲*/void fun_reset(); /*重置游戲*/void fun_obstacle(); /*設(shè)置障礙物*/struct Food/*食物的結(jié)構(gòu)體定義*/int x;/*食物的橫坐標(biāo)*/int y;/*食物的縱坐標(biāo)*/int addFood;/*判斷是否要出現(xiàn)食物的變量*/;struct Snake/*蛇的結(jié)構(gòu)體定義*/int xMAX_JOINTS; /*保存蛇身每一節(jié)位于屏幕上的列坐標(biāo)*/int yMAX_JOIN
25、TS; /*保存蛇身每一節(jié)位于屏幕上的行坐標(biāo)*/int joint;/*蛇的節(jié)數(shù)*/int direction;/*蛇移動(dòng)方向*/int life;/*蛇的生命,0活著,1死亡*/;void play()initgraph(800,600);InitGraph();DrawFence();GamePlay();getch();int main () mciSendString("play mo.mp3", NULL, 0, NULL); /播放音樂play();return 0;/初始化 void InitGraph()cleardevice();setbkcolor(BL
26、UE);setcolor(WHITE);cleardevice();setfont(25, 0, _T("微軟雅黑");outtextxy(170,150,"Greedy Snake");outtextxy(219,254,"Ready?");getch();setbkcolor(0);cleardevice();/繪制游戲場(chǎng)景void DrawFence()int i;setbkcolor(LIGHTGREEN);setlinestyle(PS_SOLID, 5);/畫圍墻setfillstyle(LIGHTBLUE);for (i
27、=50; i<=591; i+=10)/rectangle(i, 40, i+10, 49);/上邊bar(i,40,i+7,47);bar(i, 551, i+7,558);/下邊f(xié)or (i=40; i<=550; i+=10)bar(50, i, 57, i+7);/左邊bar(591, i, 598, i+7);/右邊/結(jié)束游戲void GameOver(int score)cleardevice();PrScore(score);setcolor(RED);setfont(80, 0, _T("微軟雅黑");outtextxy(100, 200, &q
28、uot;GAME OVER"); mciSendString("close mo.mp3", NULL, 0, NULL); /關(guān)閉音樂getch();exit(0);/輸出成績(jī)void PrScore(int score)char str_score10;/setfillstyle(YELLOW);/bar(50, 15, 220, 35);/setcolor(6);/setfont(25, 0, _T("微軟雅黑");/setfillstyle(BLACK);setbkmode(TRANSPARENT);/-new-BeginBatchDr
29、aw();setfillstyle(BLACK);bar(601,0,800,600);setfont(60, 0, _T("微軟雅黑");setcolor(YELLOW);outtextxy(625, 30, _T("貪吃蛇");setfont(30, 0, _T("微軟雅黑");setcolor(LIGHTGREEN);outtextxy(625, 140, _T("制作:莫新存");outtextxy(625, 170, _T("班級(jí):");outtextxy(625, 200, _T(&
30、quot;學(xué)號(hào):19");setfont(25, 0, _T("微軟雅黑");setcolor(CYAN);outtextxy(625, 380, _T("上:W");outtextxy(625, 400, _T("下:S");outtextxy(625, 420, _T("左:A");outtextxy(625, 440, _T("右:D");outtextxy(625, 460, _T("分?jǐn)?shù):");outtextxy(625, 490, _T("暫停
31、(P鍵)");outtextxy(625, 520, _T("重新游戲(R鍵)");setcolor(LIGHTBLUE);sprintf(str_score,"%i",score);outtextxy(680, 460, str_score);EndBatchDraw();if(score>0 && score%50=0) fun_obstacle();void GamePlay()int i, key;int gamespeed =200;/控制游戲速度*int score = 0;/記錄游戲得分struct Food
32、 food;/食物結(jié)構(gòu)體變量struct Snake snake;/蛇結(jié)構(gòu)體變量food.addFood = 1;/1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物snake.life = 0;/置蛇的生命狀態(tài)為活著snake.direction = MV_RIGHT;/置蛇頭方向往右snake.x0 = 100; snake.y0 = 100;/置蛇頭初始位置snake.x1 = 110; snake.y1 = 100;snake.joint = 2;/置蛇的初始節(jié)數(shù)為2PrScore(score);/顯示游戲得分/重復(fù)玩游戲,直到按Esc鍵結(jié)束srand(time(NULL);while (1)
33、while (!kbhit()mciSendString("play mo.mp3", NULL, 0, NULL); /播放音樂if (food.addFood = 1) /需要出現(xiàn)新食物food.x = rand() % 400 + 60;food.y = rand() % 350 + 60;/食物出現(xiàn)后必須在整格內(nèi)才能讓蛇吃到while (food.x%10 != 0)food.x+;while (food.y%10 !=0)food.y+;food.addFood=0;/畫面上有食物 if (food.addFood=0) /畫面上有食物,則顯示 setcolor(
34、GREEN);rectangle(food.x, food.y, food.x+10, food.y-10); /在沒有按鍵的情況下,蛇自己移動(dòng)身體for (i=snake.joint-1; i>0; i-)/蛇的每個(gè)節(jié)往前移動(dòng) snake.xi = snake.xi-1;snake.yi = snake.yi-1;/1,2,3,4 表示右,左,上,下四個(gè)方向,來決定蛇頭的移動(dòng) switch(snake.direction)case MV_RIGHT: snake.x0 += 10; break;case MV_LEFT: snake.x0 -= 10; break;case MV_UP
35、: snake.y0 -= 10; break;case MV_DOWN: snake.y0 += 10; break;/從蛇的第四節(jié)開始判斷是否撞到自己,因?yàn)樯哳^為兩節(jié),第三節(jié)不可能拐過來for (i=3; i<snake.joint; i+)if (snake.xi=snake.x0 && snake.yi=snake.y0)GameOver(score);/顯示失敗snake.life = 1; /蛇死*/break;/判斷蛇是否撞到墻壁if (snake.x0<55 | snake.x0>595 | snake.y0<55 | snake.y0&
36、gt;455)GameOver(score);/本次游戲結(jié)束snake.life = 1; /蛇死for(int obs_i = 0; obs_i<vox.size(); obs_i+)/-判斷是否撞到障礙物-if(voxobs_i=snake.x0 && voyobs_i=snake.y0) GameOver(score);/以上三種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始if (snake.life = 1)break;if (snake.x0=food.x && snake.y0=food.y) /吃到食物后/把畫面上的食物清除setcolor(0);rectangle(food.x, food.y, food.x+10, food.y-10);/新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置snake.xsnake.joint =-20; snake.ysnake.joint =-20;snake.joint+;/蛇的身體長(zhǎng)一節(jié)food.addFood = 1;/畫面上需要出現(xiàn)新食物score
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教案分享:三角形分類的實(shí)踐教學(xué)法
- 歡迎高一新生演講稿
- 公司人事行政助理年終工作總結(jié)范文
- 2024年工廠工作實(shí)習(xí)報(bào)告(29篇)
- 護(hù)理進(jìn)修學(xué)習(xí)總結(jié)
- 2025年教師節(jié)特別報(bào)道:課件與混合式教學(xué)
- 2025年小學(xué)書法公開課課件制作:技術(shù)與藝術(shù)的結(jié)合
- 《高中團(tuán)課教案》課件
- 模板-數(shù)據(jù)展示設(shè)計(jì)
- 2025年懷化道路貨物運(yùn)輸駕駛員考試
- 山地光伏施工方案
- 六年級(jí)心理健康ppt名師優(yōu)質(zhì)課獲獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- 四川輕化工大學(xué)
- 六西格瑪質(zhì)量管理在口腔科器械管理中的作用
- 高中心理健康教育-認(rèn)識(shí)自我悅納自我教學(xué)課件設(shè)計(jì)
- 素材合集-扁平化圖標(biāo)素材(彩色)
- (全)電梯安全風(fēng)險(xiǎn)管控清單
- 中國(guó)思想史 馬工程329P
- 《網(wǎng)店美工》教案-商品詳情頁設(shè)計(jì)
- 原始狩獵圖哀郢楚商
- 新版冀教版(冀人版)科學(xué)五年級(jí)下冊(cè)全冊(cè)教案
評(píng)論
0/150
提交評(píng)論