版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄課程設(shè)計(jì)目標(biāo)……………3課程設(shè)計(jì)任務(wù)和要求…………………32.1課程設(shè)計(jì)內(nèi)容…………32.2課程設(shè)計(jì)要求…………32.3課程設(shè)計(jì)環(huán)境…………3課程設(shè)計(jì)方案……………33.1方案論證………………33.2程序整體設(shè)計(jì)說明………33.3設(shè)計(jì)思緒………………43.4設(shè)計(jì)總體步驟圖………43.5設(shè)計(jì)具體實(shí)現(xiàn)………5程序測(cè)試…………………84.1測(cè)試內(nèi)容和結(jié)果………84.2程序運(yùn)行效果圖………9課程設(shè)計(jì)總結(jié)…………106.參考文件…………………11附錄源程序…………………11課程設(shè)計(jì)目標(biāo):復(fù)習(xí)、鞏固才C、C++基礎(chǔ)知識(shí),深入加深對(duì)VC技術(shù)了解和掌握;課程設(shè)計(jì)為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐機(jī)會(huì),將書本上理論知識(shí)和實(shí)際有機(jī)結(jié)合起來,鍛煉學(xué)生分析處理實(shí)際問題能力。培養(yǎng)學(xué)生在項(xiàng)目開發(fā)中團(tuán)體合作精神、創(chuàng)新意識(shí)及能力課程設(shè)計(jì)任務(wù)和要求2.1課程設(shè)計(jì)內(nèi)容貪吃蛇游戲開發(fā),首先它能夠?yàn)榇蠹姨峁┮粋€(gè)目前比較流行休閑小游戲。貪吃蛇是家喻戶曉益智類小游戲,選擇這個(gè)題目一是為了將自己所學(xué)知識(shí)加以利用,二是一直以來貪吃蛇這個(gè)游戲就深深地吸引著大家,它制作方法對(duì)于很多同學(xué)而言全部是很神秘。所以我們期望經(jīng)過這學(xué)期所學(xué)知識(shí)把它剖析開來,真真正正了解它本質(zhì)和精髓。在這次學(xué)習(xí)中我們將從實(shí)踐和實(shí)際項(xiàng)目中提升自己編程能力。所以決定選擇這個(gè)題目作為VC課程設(shè)計(jì)。最終一部分就是游戲模塊劃分,依據(jù)分析,貪吃蛇這個(gè)程序一共要實(shí)現(xiàn)以下多個(gè)功效,包含游戲方面開始游戲、暫停游戲和停止游戲,游戲設(shè)置(蛇顏色、食物顏色操作說明等)和積分。2.2課程設(shè)計(jì)要求對(duì)系統(tǒng)進(jìn)行功效模塊分析、控制模塊分析正確,符合課題要求,實(shí)現(xiàn)對(duì)應(yīng)功效;能夠加以其它功效或修飾,使程序愈加完善、合理;系統(tǒng)設(shè)計(jì)要實(shí)用,采取模塊化程序設(shè)計(jì)方法,編程簡(jiǎn)練、可用,功效全方面;說明書、步驟圖要清楚;統(tǒng)計(jì)設(shè)計(jì)情況(備查,也為編寫設(shè)計(jì)說明書作好準(zhǔn)備);2.3課程設(shè)計(jì)環(huán)境Windows7操作系統(tǒng),VC6.0開發(fā)環(huán)境。課程設(shè)計(jì)方案3.1方案論證方案一:基于MFC設(shè)計(jì)該方案好處是系統(tǒng)自動(dòng)生成軟件框架,設(shè)計(jì)者只需填充編寫代碼即可,程序設(shè)計(jì)比較復(fù)雜,對(duì)于編程能力不強(qiáng)同學(xué)來說難度較大。方案二:基于easyX設(shè)計(jì)該方案好處是設(shè)計(jì)者只需編寫程序文件,完成后編譯即可生成可實(shí)施文件,編程前需要先安裝easyX圖形庫。因?yàn)榫幊棠芰Σ粡?qiáng),方案二設(shè)計(jì)簡(jiǎn)單,易于調(diào)試,故選擇方案二。3.2程序整體設(shè)計(jì)說明一個(gè)游戲要有開始部分,運(yùn)行部分,結(jié)束部分(實(shí)際上開始部分和運(yùn)行部分是一體)。游戲界面:1)開始游戲(加載并開始)2)暫停游戲(從目前進(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é),增加一個(gè)矩形塊。移動(dòng)時(shí)必需從蛇頭開始,所以蛇不能向相反方向移動(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)判定是否開始載入游戲并初始化是是游戲結(jié)束否蛇頭是否撞墻或本身否否隨機(jī)生成下一個(gè)食物依據(jù)鍵盤控制蛇移動(dòng)方向是蛇開始移動(dòng)判定是否開始載入游戲并初始化蛇頭和食物坐標(biāo)是否重合否是否蛇頭和食物坐標(biāo)是否重合否是否3.5設(shè)計(jì)具體實(shí)現(xiàn)食物類structFood /*食物結(jié)構(gòu)體定義*/{ intx; /*食物橫坐標(biāo)*/ inty; /*食物縱坐標(biāo)*/ intaddFood; /*判定是否要出現(xiàn)食物變量*/};2)蛇塊類把蛇分成一塊一塊,一個(gè)蛇相當(dāng)于有若干個(gè)塊,蛇塊類就是用來描述每塊信息。structSnake /*蛇結(jié)構(gòu)體定義*/{intx[MAX_JOINTS]; /*保留蛇身每一節(jié)在屏幕上列坐標(biāo)*/ inty[MAX_JOINTS]; /*保留蛇身每一節(jié)在屏幕上行坐標(biāo)*/ intjoint; /*蛇節(jié)數(shù)*/ intdirection; /*蛇移動(dòng)方向*/ intlife; /*蛇生命,0活著,1死亡*/};初始化游戲游戲開始界面初始化:voidInitGraph(){ cleardevice(); setbkcolor(BLUE);/*設(shè)置背景顏色*/ setcolor(WHITE);/*設(shè)置前景顏色*/ cleardevice(); setfont(25,0,_T("微軟雅黑")); outtextxy(170,150,"GreedySnake");/*在坐標(biāo)(170,150)處輸出字符串*/ outtextxy(219,254,"Ready?"); getch(); setbkcolor(0); cleardevice(); }繪制游戲場(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)也用于畫矩形。voidDrawFence(){ inti; setbkcolor(LIGHTGREEN); setlinestyle(PS_SOLID,5); //畫圍墻 setfillstyle(LIGHTBLUE); for(i=50;i<=591;i+=10){ // rectangle(i,40,i+10,49); //上邊 bar(i,40,i+7,47); bar(i,551,i+7,558); //下邊 } for(i=40;i<=550;i+=10){ bar(50,i,57,i+7); //左邊 bar(591,i,598,i+7); //右邊 }}結(jié)束游戲PrScore(score)用于輸出分?jǐn)?shù)。voidGameOver(intscore){ cleardevice(); PrScore(score); setcolor(RED); setfont(80,0,_T("微軟雅黑")); outtextxy(100,200,"GAMEOVER");mciSendString("closemo.mp3",NULL,0,NULL);//關(guān)閉音樂 getch(); exit(0);}判定是否需要出現(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) //畫面上有食物,則顯示 {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.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1]; } //1,2,3,4表示右,左,上,下四個(gè)方向,來決定蛇頭移動(dòng) switch(snake.direction){caseMV_RIGHT:snake.x[0]+=10;break; caseMV_LEFT:snake.x[0]-=10;break; caseMV_UP:snake.y[0]-=10;break; caseMV_DOWN:snake.y[0]+=10;break; }8)a.從蛇第四節(jié)開始判定是否撞到自己,因?yàn)樯哳^為兩節(jié),第三節(jié)不可能拐過來for(i=3;i<snake.joint;i++){ if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){ GameOver(score); //顯示失敗 snake.life=1; //蛇死*/ break; } }b.判定蛇是否撞到墻壁if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455){ GameOver(score); //此次游戲結(jié)束 snake.life=1; //蛇死 }c.判定是否撞到障礙物for(intobs_i=0;obs_i<vox.size();obs_i++){ if(vox[obs_i]==snake.x[0]&&voy[obs_i]==snake.y[0])GameOver(score); }以上三種判定以后,假如蛇死就跳出內(nèi)循環(huán),重新開始。吃到食物后畫蛇if(snake.x[0]==food.x&&snake.y[0]==food.y)//吃到食物后 { //把畫面上食物清除setcolor(0); rectangle(food.x,food.y,food.x+10,food.y-10); //新一節(jié)先放在看不見位置,下次循環(huán)就取前一節(jié)位置 snake.x[snake.joint]=-20;snake.y[snake.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.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10); } Sleep(gamespeed); //延時(shí)控制蛇速度 //去除蛇最終一節(jié) setcolor(0); rectangle(snake.x[snake.joint-1],snake.y[snake.joint-1], snake.x[snake.joint-1]+10,snake.y[snake.joint-1]-10); 10)按鍵操作key=getch();//接收按鍵 switch(key){//判定按鍵,是否往相反方向移動(dòng) case'w':case'W':{if(snake.direction!=MV_DOWN)snake.direction=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;}break; case'p':case'P':fun_pause();break; case'r':case'R':fun_reset();break; }編好程序后進(jìn)行編譯、運(yùn)行,生成可實(shí)施文件,就能夠玩貪吃蛇游戲了。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ì)按對(duì)應(yīng)方向運(yùn)動(dòng),蛇不能180度轉(zhuǎn)彎,只能進(jìn)行90度轉(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”,蛇停在目前位置,再次點(diǎn)擊“P”蛇又從目前位置繼續(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è)程序中我關(guān)鍵學(xué)會(huì)了怎樣利用以下相關(guān)C語言和C++知識(shí):1)函數(shù)定義是要做到顧名思義是很關(guān)鍵,它對(duì)讀程序人正確定識(shí)程序十分關(guān)鍵,在修改這個(gè)程序過程中也能很快找到程序各模塊作用,大大增加了程序可讀性。2)分析函數(shù)先從main()函數(shù)入手。Main()函數(shù)是C++源程序編譯時(shí)開始,從main()函數(shù)開始讀函數(shù)可將其它函數(shù)功效了解得更透徹。3)在做程序時(shí)候先列框架,將這個(gè)程序所要達(dá)成目標(biāo)(功效)分析出來,選擇正確數(shù)據(jù)結(jié)構(gòu)然后在將程序模塊化,根據(jù)模塊編寫函數(shù)愈加簡(jiǎn)單合理。4)我還了解了很多庫函數(shù)作用,如字符串函數(shù)中有很多對(duì)字符串進(jìn)行處理函數(shù),其功效我全部有所了解。5)學(xué)會(huì)了相關(guān)頭文件使用方法,及系統(tǒng)調(diào)配問題處理方法等。6)了解到了注釋關(guān)鍵性。經(jīng)過這次試驗(yàn),讓我學(xué)到很多這個(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í)自己會(huì)看,出來問題只有自己會(huì)處理而其它人全部不會(huì)處理;碰到問題時(shí)要考慮最簡(jiǎn)單處理方案,只有簡(jiǎn)單方案不能滿足要求時(shí)再考慮復(fù)雜方案。最關(guān)鍵編程還是要多和人溝通,不會(huì)不能立即問她人,不過一段時(shí)間后處理不了時(shí)還是應(yīng)該向她人請(qǐng)教請(qǐng)教,“三人行必有我?guī)煛闭沁@個(gè)意思。經(jīng)過這次試驗(yàn),我深刻地體會(huì)到了面向?qū)ο蠛兔嫦蜻^程區(qū)分。程序在最初設(shè)計(jì)時(shí)因?yàn)槊嫦驅(qū)ο笏枷氩粔虺墒欤斐稍谧罱K想要增加部分新功效時(shí),出現(xiàn)了部分麻煩??偠灾?,我們還需要深入提升自己能力。6.參考文件《C語言程序設(shè)計(jì)》武雅麗清華大學(xué)出版社《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》譚浩強(qiáng)清華大學(xué)出版社《C語言課程設(shè)計(jì)案例精編》李麗娟中國水利水電出版社附錄:源程序/////////////////////////////////////////////////程序名稱:貪吃蛇//制作:莫新存//編譯環(huán)境:VisualC++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>#definerandom(a,b)(rand()%((b)-(a)))+(a)#pragmacomment(lib,"Winmm.lib")//加入背景音樂時(shí)使用usingnamespacestd;#defineMAX_JOINTS 200#defineMV_RIGHT1#defineMV_LEFT2#defineMV_UP3#defineMV_DOWN4intrnd1,rnd2;vector<int>vox;vector<int>voy;voidInitGraph(void); /*圖形界面初始化函數(shù)*/voidDrawFence(void); /*繪制游戲場(chǎng)景*/voidGameOver(intscore); /*結(jié)束游戲*/voidGamePlay(void); /*玩游戲具體過程*/voidPrScore(intscore);/*顯示分?jǐn)?shù)*/voidfun_pause();/*暫停游戲*/voidfun_reset();/*重置游戲*/voidfun_obstacle();/*設(shè)置障礙物*/structFood{ /*食物結(jié)構(gòu)體定義*/ intx; /*食物橫坐標(biāo)*/ inty; /*食物縱坐標(biāo)*/ intaddFood; /*判定是否要出現(xiàn)食物變量*/};structSnake{ /*蛇結(jié)構(gòu)體定義*/ intx[MAX_JOINTS]; /*保留蛇身每一節(jié)在屏幕上列坐標(biāo)*/ inty[MAX_JOINTS]; /*保留蛇身每一節(jié)在屏幕上行坐標(biāo)*/ intjoint; /*蛇節(jié)數(shù)*/ intdirection; /*蛇移動(dòng)方向*/ intlife; /*蛇生命,0活著,1死亡*/};voidplay(){ initgraph(800,600); InitGraph(); DrawFence(); GamePlay(); getch(); }intmain(){mciSendString("playmo.mp3",NULL,0,NULL);//播放音樂 play(); return0;}//初始化voidInitGraph(){ cleardevice(); setbkcolor(BLUE); setcolor(WHITE); cleardevice(); setfont(25,0,_T("微軟雅黑")); outtextxy(170,150,"GreedySnake"); outtextxy(219,254,"Ready?"); getch(); setbkcolor(0); cleardevice(); }//繪制游戲場(chǎng)景voidDrawFence(){ inti; setbkcolor(LIGHTGREEN); setlinestyle(PS_SOLID,5); //畫圍墻 setfillstyle(LIGHTBLUE); for(i=50;i<=591;i+=10){ // rectangle(i,40,i+10,49); //上邊 bar(i,40,i+7,47); bar(i,551,i+7,558); //下邊 } for(i=40;i<=550;i+=10){ bar(50,i,57,i+7); //左邊 bar(591,i,598,i+7); //右邊 }}//結(jié)束游戲voidGameOver(intscore){ cleardevice(); PrScore(score); setcolor(RED); setfont(80,0,_T("微軟雅黑")); outtextxy(100,200,"GAMEOVER");mciSendString("closemo.mp3",NULL,0,NULL);//關(guān)閉音樂 getch(); exit(0);}//輸出成績(jī)voidPrScore(intscore){ charstr_score[10]; //setfillstyle(YELLOW); //bar(50,15,220,35); //setcolor(6); //setfont(25,0,_T("微軟雅黑")); //setfillstyle(BLACK); setbkmode(TRANSPARENT); //---new--- BeginBatchDraw(); 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í):24041001")); outtextxy(625,200,_T("學(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("暫停(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();}voidGamePlay(){ int i,key; int gamespeed=200; //控制游戲速度* int score=0; //統(tǒng)計(jì)游戲得分 structFoodfood; //食物結(jié)構(gòu)體變量 structSnakesnake; //蛇結(jié)構(gòu)體變量 food.addFood=1; //1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物 snake.life=0; //置蛇生命狀態(tài)為活著 snake.direction=MV_RIGHT; //置蛇頭方向往右 snake.x[0]=100;snake.y[0]=100; //置蛇頭初始位置 snake.x[1]=110;snake.y[1]=100; snake.joint=2; //置蛇初始節(jié)數(shù)為2 PrScore(score); //顯示游戲得分 //反復(fù)玩游戲,直到按Esc鍵結(jié)束 srand(time(NULL)); while(1) { while(!kbhit()) { mciSendString("playmo.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(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.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1]; } //1,2,3,4表示右,左,上,下四個(gè)方向,來決定蛇頭移動(dòng) switch(snake.direction){ caseMV_RIGHT:snake.x[0]+=10;break; caseMV_LEFT:snake.x[0]-=10;break; caseMV_UP:snake.y[0]-=10;break; caseMV_DOWN:snake.y[0]+=10;break; } //從蛇第四節(jié)開始判定是否撞到自己,因?yàn)樯哳^為兩節(jié),第三節(jié)不可能拐過來 for(i=3;i<snake.joint;i++){ if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){ GameOver(score); //顯示失敗 snake.life=1; //蛇死*/ break; } } //判定蛇是否撞到墻壁 if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455){ GameOver(score); //此次游戲結(jié)束 snake.life=1; //蛇死 } for(intobs_i=0;obs_i<vox.size();obs_i++){ //-----判定是否撞到障礙物---- if(vox[obs_i]==snake.x[0]&&voy[obs_i]==snake.y[0])GameOver(score); } //以上三種判定以后,假如蛇死就跳出內(nèi)循環(huán),重新開始 if(snake.life==1) 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); //新一節(jié)先放在看不見位置,下次循環(huán)就取前一節(jié)位置 snake.x[snake.joint]=-20;snake.y[snake.joint]=-20; snake.join
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)學(xué)建模垃圾分類
- 下鄉(xiāng)實(shí)踐活動(dòng)總結(jié)報(bào)告
- 宿舍心理保健員培訓(xùn)
- 2024-2025學(xué)年江蘇省常州市翠竹中學(xué)九年級(jí)(上)數(shù)學(xué)第一次月考試卷(含答案)
- 初中九年級(jí)數(shù)學(xué)上學(xué)期期中考前測(cè)試卷(人教版)含答案解析
- T-YNZYC 0117-2024 綠色藥材 天門冬種子種苗質(zhì)量標(biāo)準(zhǔn)
- 建筑結(jié)構(gòu)隔震設(shè)計(jì)難點(diǎn)分析
- 第二微生物的進(jìn)化和分類
- 小班消防安全教育教案20篇
- 2013-2018年中國失重式喂料機(jī)行業(yè)市場(chǎng)分析研究報(bào)告
- 2024年廣西高考生物試卷真題(含答案)
- (新版)裝訂技能競(jìng)賽理論知識(shí)考試題庫500題(含答案)
- 電子政務(wù)概論-形考任務(wù)5(在線測(cè)試權(quán)重20%)-國開-參考資料
- 古代小說戲曲專題-形考任務(wù)2-國開-參考資料
- (完整)中醫(yī)癥候積分量表
- 上海市七年級(jí)上學(xué)期語文期中考試試卷五套附參考答案
- 退場(chǎng)通知單范本
- 宋蜀華《民族學(xué)理論與方法》考研復(fù)習(xí)資料
- 水污染環(huán)境在線監(jiān)測(cè)題庫
- 竹制外腳手架施工方案
- 視頻會(huì)議系統(tǒng)應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論