




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
計(jì)算機(jī)實(shí)習(xí)匯報(bào)題目:貪吃蛇試驗(yàn)匯報(bào)郵箱:貪吃蛇試驗(yàn)匯報(bào)一.功能闡明1.1總體功能闡明游戲分單人和雙人兩種。單人游戲中有一條小蛇,不停地在屏幕上游走,“吃”掉界面上隨即出現(xiàn)的果子,每吃一種果子,蛇的身體長度就增長一種單位。當(dāng)吃下的果子積累到一定程度時(shí),蛇的運(yùn)動(dòng)速度會(huì)對應(yīng)地增長,等級也提高了。伴隨蛇的長度的增長,游戲界面會(huì)出現(xiàn)隨機(jī)產(chǎn)生的毒刺“★”,毒刺固定不動(dòng)。只要蛇頭碰到屏幕四面,或者碰到自己的身子,或者碰到毒刺,活著小蛇就立即斃命,游戲結(jié)束。在雙人游戲中,有兩條蛇頭分別為紅色和黃色的小蛇,爭吃果子,比比誰吃的果子多。只要任意一條蛇的蛇頭碰到屏幕四面,或者碰到自己的身子(碰到對方的身體沒關(guān)系),或者任一條蛇碰到毒刺,游戲就會(huì)結(jié)束。該游戲的特色是:一、添加了障礙“毒刺”,同步增長游戲等級這一項(xiàng),讓蛇的運(yùn)動(dòng)速度隨分?jǐn)?shù)的增長而合適增長,相比老式的貪吃蛇游戲增長了難度;二、增長雙人游戲,使其具有競賽性,讓玩家在與他人競賽中獲得樂趣。三、游戲的背景畫面更為細(xì)膩。1.2顧客界面游戲開始和退出菜單選擇單人、雙人游戲的菜單1.3使用措施在單人游戲中,用小寫的w、s、a、d四個(gè)按鍵分別控制蛇頭上下左右四個(gè)方向的轉(zhuǎn)向。雙人游戲中,w、s、a、d按鍵控制紅蛇的方向,上下左右四個(gè)方向鍵控制黃蛇的方向。二.程序設(shè)計(jì)闡明2.1總體設(shè)計(jì)框架[包括程序執(zhí)行流程,模塊劃分等,需要有文字闡明和框圖表達(dá)]游戲開始游戲開始選擇開始或退出游戲退出游戲開始游戲開始單人游戲開始雙人游戲開始游戲程序播放背景音樂游戲程序播放背景音樂游戲程序顯示游戲界面、邊框、背景等蛇的移動(dòng)、增長、獲取按鍵信息判斷與否產(chǎn)生毒刺計(jì)算并顯示分?jǐn)?shù)和等級判斷游戲與否結(jié)束蛇頭移動(dòng)若蛇頭吃下果子,則產(chǎn)生新的果子且增長蛇的長度。蛇的身體跟進(jìn)若符合對應(yīng)條件,在屏幕中顯示毒刺若符合條件,顯示結(jié)束畫面,退出游戲。2.2關(guān)鍵算法描述算法1:[算法輸入?yún)?shù)和輸出參數(shù),算法功能,使用什么存儲(chǔ)構(gòu)造,在主程序中起什么作用,可以使用框圖或偽代碼表達(dá)。算法1:蛇身運(yùn)動(dòng)函數(shù)算法1:if(snake.direct[0]==97) { textout(handle,--(--snake.s_x[0]),snake.s_y[0],wColors+10,1,"◆"); Sleep(speed); PRODUCT_FRUIT(snake.s_x,snake.s_y,&snake.length,&fruit.f_x,&fruit.f_y,wColors,handle); MOVE(snake.s_x,snake.s_y,snake.length,wColors+2,handle);這是蛇的運(yùn)動(dòng)算法,以單人游戲中的向上運(yùn)動(dòng)為例。當(dāng)蛇的構(gòu)造中的方向變量為97(即“w”)時(shí),蛇頭的縱坐標(biāo)增長一種單位,并延時(shí)一定期間。接著運(yùn)行進(jìn)行PRODUCT_FRUIT函數(shù),該函數(shù)的作用是判斷蛇頭坐標(biāo)與否與果子坐標(biāo)重疊,若是,則生成新的果子,且蛇的長度加一。接著再運(yùn)行move函數(shù),該函數(shù)的作用為令蛇身最終一格處顯示背景顏色,蛇身的其他部分隨蛇頭向前移動(dòng)一位,整體上看就像是蛇向前移動(dòng)了一格。算法2:voidRE_POISON_FRUIT(intpfoodx[],intpfoody[],int*foodx,int*foody,int*length,intsnakex[],intsnakey[]){ while(1) { srand((unsigned)time(NULL)*(unsigned)time(NULL)); int poison_x=2*(rand()%28+2); intpoison_y=rand()%37; if(poison_x>=4&&poison_y>=2) { for(q=0;q<*length;q++) { if((snakex[q]==poison_x)&&(snakey[q]==poison_y)) break; } if(q==*length) { for(i=0;i<100;i++) { if(pfoodx[i]==*foodx&&pfoody[i]==*foody) break; } if(i==100) { pfoodx[num]=poison_x; pfoody[num]=poison_y; num++; break; } } } }}隨機(jī)產(chǎn)生毒果的函數(shù)。產(chǎn)生兩個(gè)隨機(jī)數(shù),分別是毒刺的橫縱坐標(biāo),若該坐標(biāo)不與蛇的身體的任一節(jié)重疊,也不與目前顯示的果子重疊,則該坐標(biāo)符合規(guī)定。算法3:intDEAD(intsnakex[],intsnakey[],intlen,intpfoodx[],intpfoody[],HANDLEhandle){ inttemp; for(inti=2;i<=len;i++) { if((snakex[0]<4||snakex[0]>60||snakey[0]<2||snakey[0]>40)||(snakex[0]==snakex[i]&&snakey[0]==snakey[i])) { temp=1; break; } } for(intb=0;b<=num;b++) { if((snakex[0]==pfoodx[b])&&(snakey[0]==pfoody[b])) { temp=1; break; } } if(temp==1) return1; else return0;}判斷游戲與否結(jié)束的函數(shù),以單人游戲?yàn)槔J紫扔胒or循環(huán)判斷蛇頭的橫縱坐標(biāo)與否在規(guī)定的范圍內(nèi)以及蛇頭與否碰到蛇身,接著再用一種for循環(huán)判斷與否碰到毒刺,以上條件符合一種,該函數(shù)就返回整數(shù)1,若兩者都不返回,則返回0。在主函數(shù)中,用一種if語句,用此函數(shù)返回的值作為判斷條件,若值為1,則執(zhí)行退出游戲,顯示結(jié)束畫面的語句。算法4:intstop(chardir){r=!r; s=!s;if(!s){so=dir;return98;}else {intr=int(so);returnr;}}暫停函數(shù),以單人游戲?yàn)槔T谥骱瘮?shù)所在的源文獻(xiàn)設(shè)置一種bool類型的全局變量s,初始化為真。玩家在游戲中按下回車鍵時(shí),執(zhí)行暫停函數(shù),執(zhí)行語句s=!s,最終函數(shù)返回一種值。將暫停函數(shù)的返回值賦值給蛇的運(yùn)動(dòng)方向變量,使蛇不再運(yùn)動(dòng)。在雙人游戲中,設(shè)置了兩個(gè)暫停函數(shù),分別控制兩條蛇的停止與運(yùn)動(dòng)。算法五: DIR=_getch(); switch(DIR) { case97: if(snake.direct[0]!=100) snake.direct[0]=97; break; case100: if(snake.direct[0]!=97) snake.direct[0]=100; break; case119: if(snake.direct[0]!=115) snake.direct[0]=119; break; case115: if(snake.direct[0]!=119) snake.direct[0]=115; break;case13:snake.direct[0]=stop(snake.direct[0]); break; default: break;換取按鍵信息,以單人游戲?yàn)槔?。用swith判斷語句對不一樣的按鍵信息,另設(shè)做出上移、下移、左移、右移、暫停/開始等動(dòng)作。算法六: c=(score/10)%5; b=(score/10)/5; if(speed!=75) {if(c==0&&b==m+1) {speed-=25; level++; m++;} }charbu[10]; itoa(level,bu,10);textout(handle,72,8,wColors,1,bu);增長蛇的移動(dòng)速度及顯示等級的算法,以單人游戲?yàn)槔?。類似毒刺產(chǎn)生的原理,設(shè)置兩個(gè)全局變量,當(dāng)這兩個(gè)變量滿足一定條件時(shí),游戲等級增長一種單位,對應(yīng)地蛇的速度增長。等級的最高程度為五級,防止貪吃蛇運(yùn)動(dòng)過快。2.3程序設(shè)計(jì)的難點(diǎn)和要點(diǎn)一、在游戲運(yùn)行的同步,播放背景音樂,運(yùn)用到多線程的知識。二、在雙人游戲中,分別編寫兩條蛇的運(yùn)動(dòng)算法,但兩條蛇需要同步獲取按鍵信息,這樣兩者才能同步運(yùn)動(dòng)。三、設(shè)置蛇移動(dòng)的算法時(shí),讓后一種點(diǎn)跟隨前一種點(diǎn)的運(yùn)動(dòng)軌跡,本來最終一種點(diǎn)的位置就顯示背景顏色,使得蛇在整體上看上去一偶那個(gè)了一格。四、蛇的得分增長一定程度2.4調(diào)試的措施[過程中出現(xiàn)的問題和處理措施]在編該游戲的過程中,出現(xiàn)了多種問題和錯(cuò)誤,后來都一一處理了。一、開始設(shè)置游戲等級時(shí),當(dāng)蛇滿足一種升級的條件時(shí),蛇卻停止了運(yùn)動(dòng),而不是像預(yù)想的那樣加緊運(yùn)動(dòng)速度。后來發(fā)現(xiàn)本來是由于我用的if判斷語句的判斷條件出現(xiàn)問題,導(dǎo)致蛇的速度會(huì)一直減小直到零。我借鑒產(chǎn)生毒刺的算法,設(shè)置判斷條件,使得蛇每次增長速度都都能繼續(xù)穩(wěn)定運(yùn)行。二、開始加入背景音樂時(shí),貪吃蛇死亡后,不顯示游戲結(jié)束的畫面,而是停留在原畫面中繼續(xù)播放音樂。后來我設(shè)置了一種bool類型的全局變量r,把本來背景音樂函數(shù)中的無限循環(huán)的判斷條件“1”換成r,當(dāng)游戲結(jié)束時(shí)r變?yōu)榧?,使音樂不再播放。三、剛設(shè)置雙人游戲時(shí),幾乎需要把單人游戲中的每一種功能對應(yīng)的函數(shù)再設(shè)置一種新的,以適應(yīng)雙人游戲的規(guī)定。若不仔細(xì)檢查,其中微小的錯(cuò)誤在程序編譯時(shí)無法發(fā)現(xiàn),但運(yùn)行游戲卻會(huì)出現(xiàn)問題。因此將單人游戲改成雙人也需要極大的耐心和細(xì)致。四、在增長毒刺和游戲等級的算法中,采用了類似的程序,都是設(shè)置兩個(gè)變量,當(dāng)這兩個(gè)變量分別滿足整除和取余的對應(yīng)條件時(shí),才執(zhí)行添加毒刺或增長等級的算法。2.5程序性能評價(jià)從運(yùn)行效果上進(jìn)行分析:長處:添加背景顏色和背景音樂,使游戲畫面更細(xì)膩絢麗。同步增長了規(guī)避毒刺、等級上升、雙人游戲等功能,更具娛樂性。局限性:背景音樂單一,雙人游戲的蛇頭部分閃爍不一樣步。從程序設(shè)計(jì)上進(jìn)行分析:長處:運(yùn)用多種功能函數(shù),且單人游戲與雙人游戲分別對應(yīng),條例清晰。局限性:程序的設(shè)計(jì)沒有運(yùn)用到類的知識。三.心得體會(huì)通過這次小學(xué)期的編程,使我很好地復(fù)習(xí)回憶了一遍C++的有關(guān)知識,同步對編程有了更為深刻的理解。編譯一種好的游戲,首先要考慮游戲的界面和操作與否友好以便,另一方面要盡量精簡程序,增長
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全責(zé)任活動(dòng)承諾書4篇
- 市場營銷策略制定指南市場調(diào)研整合版
- 高級團(tuán)課考試題型及答案
- 2025年病案室病案編碼規(guī)范性考核試題及答案解析
- 2025年英語高考寧波試卷及答案
- 生產(chǎn)設(shè)備操作規(guī)程維護(hù)和維修指引書
- 雨后的彩虹寫景并抒情作文12篇
- 職業(yè)技能培訓(xùn)個(gè)人守秘責(zé)任書(9篇)
- 2025年保育知識試題以及答案
- 企業(yè)人力資源管理基礎(chǔ)模板
- 2025至2030中國智慧供暖行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 四講四有課件
- 出租物業(yè)安全協(xié)議書
- GB/T 45637-2025電動(dòng)牙刷性能測試方法
- 【中國信通院】eSIM產(chǎn)業(yè)熱點(diǎn)問題研究報(bào)告(2025年)
- GB/T 25820-2025包裝用鋼帶
- 2025-2030中國潛油電泵(ESP)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報(bào)告
- 小學(xué)生消防安全課件圖片
- 實(shí)驗(yàn)室人員準(zhǔn)入制度
- 2025年全國普通話水平測試15套復(fù)習(xí)題庫及答案
- 《商務(wù)接待禮儀》課件
評論
0/150
提交評論