freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于c語言的貪吃蛇游戲開發(fā)與設(shè)計(jì)畢業(yè)論文-資料下載頁(yè)

2025-06-01 22:29本頁(yè)面
  

【正文】 節(jié)還是要出現(xiàn)在畫面上的。然后蛇頭按照方向鍵來更改位置。 另外,食物的隨機(jī)出現(xiàn)要確保它的位置在 10 的倍數(shù)位置上,因?yàn)樯叩淖鴺?biāo)都是以 10 為模的,這樣的話就可以讓蛇吃到,蛇吃到食物的判斷是蛇頭的坐標(biāo)和食物的坐標(biāo)相等。 其算法過程為: (1) 設(shè)置初始值。為防止食物總出現(xiàn)在一個(gè)位置上,要設(shè)置隨機(jī)數(shù)發(fā)生器,真正產(chǎn)生隨機(jī)數(shù)。初始時(shí),蛇只有蛇頭,設(shè)定一個(gè)開始的方向。 (2)循環(huán)執(zhí)行,直到按 Esc 鍵退出。 (3)沒有按鍵的情況下,循環(huán)執(zhí)行。 如果沒有食物,隨機(jī)出現(xiàn)食物;如果有食物,則顯示食物,蛇移動(dòng)身體,根據(jù)蛇的方向改變坐標(biāo)值,并判斷蛇是否自己吃了自己,如果出現(xiàn)這種情況,則蛇死,調(diào)用游戲結(jié)束函數(shù) GameOver(),結(jié)束本次游戲,重新開始。如果蛇吃到了食物,蛇身體長(zhǎng)一節(jié),數(shù)組元素增加一個(gè),身體節(jié)數(shù)、分?jǐn)?shù)都進(jìn)行相應(yīng)的改變。在新位置畫出蛇。 (4) 如果有按鍵,則識(shí)別鍵值。如果按鍵為 Esc 鍵則結(jié)束游戲,程序運(yùn)行結(jié)束;如果所按鍵為方向鍵,則根據(jù)該鍵改變代表蛇方向的變量 direction 的值,要考慮相反方向鍵無效。 其他函數(shù)的代碼: 隱藏光標(biāo)函數(shù) void HideCursor() /*隱藏光標(biāo),用到了一些 CONSOLE API*/ { HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE)。 CONSOLE_CURSOR_INFO cci。 GetConsoleCursorInfo(hOut, amp。cci)。 = FALSE。 SetConsoleCursorInfo(hOut, amp。cci)。 南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 31 } 光標(biāo)定位函數(shù) void GotoRood(int x, int y) /*光標(biāo)跳躍到某個(gè)位置,用了 CONSOLE API*/ { HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE)。 COORD cod。 = x。 = y。 SetConsoleCursorPosition(hOut, cod)。 } int Random(int n) /*隨機(jī)生成食物的位置 */ { srand(time(NULL))。 return (rand() % n)。 } 構(gòu)建蛇身 void BuildSnk(SNAKE *head) /*構(gòu)造蛇身 */ { SNAKE *p = head。 while (p != NULL) { GotoRood(px, py)。 printf()。 p = pnext。 南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 32 } } void Move(int *d) /*移動(dòng)方向。 上下左右 上: 72 下: 80 左:75 右: 77*/ { char ch。 while(_kbhit()) { ch = getch()。 if (ch == 72) { if ((*d == left || *d == right) amp。amp。 *d != down) *d = up。 } else if (ch == 80) { if ((*d == left || *d == right) amp。amp。 *d != up) *d = down。 } else if (ch == 75) { if ((*d == up || *d == down) amp。amp。 *d != right) *d = left。 } else if (ch == 77) { if ((*d == up || *d == down) amp。amp。 *d != left) *d = right。 } 南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 33 } 程序分析: 這里我們首先要明確一個(gè)函數(shù) kbhit()函數(shù) ( VC++ 下為 _kbhit()) ,該函數(shù)的 功 能及返回值 為 :檢查當(dāng)前是否有鍵盤輸入,若有則返回一個(gè)非 0值,否則返回 0。那么接下來所有的問題便可迎刃而解了 這里用到的是 C語言當(dāng)中的 if語句和復(fù)合運(yùn)算符 ,例如 if (ch == 72) { if ((*d == left || *d == right) amp。amp。 *d != down) *d = up。 } 其中, ch == 72 和 (*d == left || *d == right) amp。amp。 *d != down 為真的意思是說 , 如果貪吃蛇之前的運(yùn)動(dòng)為向左或者向右但是絕對(duì)不會(huì)是向下時(shí) ,那么貪吃蛇接下來的運(yùn)動(dòng)只會(huì)是向上。同理,貪吃蛇向左、向右、向下的實(shí)現(xiàn)也是一樣的。 背景音樂播放函數(shù) 為了更好地放松身心,在玩游戲的時(shí)候我們可以一邊玩游戲一邊聽音樂。 代碼如下: include include include pragma ment(lib, ) void main() { PlaySound(TEXT(D:\\zzz\\),NULL,SND_ASYNC|SND_NODEFAULT)。 while (1) { printf(program is running... here\n)。 /*這里跑你的程序,按 CtrlC 組合鍵,結(jié)束程序 */ 南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 34 Sleep(1000)。 //休息 1秒 } exit(0)。 } 程序分析: 背景音樂播放的實(shí)現(xiàn)利用的是 PlaySound()函數(shù),值得注意的是對(duì)音樂的格式也有所要求,背 景音樂的格式必須是 .wav格式,要不然,背景音樂是不會(huì)播放的。在編寫程序的過程中,本人就是因?yàn)閷⒈尘耙魳返母袷皆O(shè)置成了 .mp3格式才造成了編程過程老是停滯不前。 實(shí)現(xiàn)背景音樂的播放過程解決了,接下來的問題是如何實(shí)現(xiàn)音樂播放與游戲運(yùn)行的有機(jī)結(jié)合,在這里我用到了 while循環(huán)語句,只要將游戲過程函數(shù)即gaming()函數(shù)寫在 while循環(huán)語句中就可以了 南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 35 第六章 運(yùn)行與測(cè)試 運(yùn)行程序 ( 1) 首先打開 VC 開發(fā)工具,將編寫好的程序 復(fù)制到源程序文件中去,然后點(diǎn)擊編譯,如圖 61所示 圖 61 編譯 由圖 62 可知,編譯之后未發(fā)現(xiàn)錯(cuò)誤 圖 62 錯(cuò)誤顯示 ( 2)點(diǎn)擊執(zhí)行按鈕,進(jìn)入界面,如圖 63 所示 南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 36 圖 63 進(jìn)入界面 ( 3) 按任意鍵,出現(xiàn)游戲主界面,如圖 64所示 圖 64 游戲主界面 ( 4) 當(dāng)蛇頭與蛇身交叉時(shí),蛇死亡意味著游戲結(jié)束 ,界面中就會(huì)跳出“小菜鳥,你輸了”的字樣,如圖 65所示。 南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 37 圖 65 游戲結(jié)束界面 程序的調(diào)試與測(cè)試 調(diào)試與測(cè)試軟件的目標(biāo)就是發(fā)現(xiàn)并改正潛伏的錯(cuò)誤。一個(gè)程序,必須經(jīng)過認(rèn)真的 調(diào)試和測(cè)試,才能盡量減少錯(cuò)誤、保證程序滿足功能、性能需求,達(dá)到最初的設(shè)計(jì)、使用要求,從而保證程序的開發(fā)質(zhì)量。 ( 1)擬定測(cè)試計(jì)劃。根據(jù)游戲的總體情況,仔細(xì)分析游戲各個(gè)步驟的運(yùn)行可能出現(xiàn)的狀況,對(duì)各種情況進(jìn)行匯總,然后擬定出一份具體測(cè)試步驟。 ( 2)初步測(cè)試。根據(jù)你定好的計(jì)劃進(jìn)行游戲調(diào)試,出現(xiàn)意外情況時(shí)及時(shí)記錄。測(cè)試完后對(duì)所記錄的意外情況進(jìn)行分析,然后提 出改進(jìn)的方案,在進(jìn)行修改。 ( 3) 深度測(cè)試。對(duì)游戲進(jìn)行最后的修改,確認(rèn)沒有漏洞后再進(jìn)行測(cè)試從各個(gè)方面進(jìn)行一次整體的排查,直到不再出現(xiàn)意料之外的情況。 詳細(xì)設(shè)計(jì)完成后,用 C 語言根據(jù)各個(gè)模塊的算法來設(shè)計(jì)程序,每個(gè)模塊都設(shè)計(jì)成一個(gè)自定義函數(shù)。幾個(gè)模塊放在一個(gè)構(gòu)成一個(gè)源程序文件,或者一個(gè)模塊構(gòu)成一個(gè)源程序文件。源程序設(shè)計(jì)好后,輸入到計(jì)算機(jī),并儲(chǔ)存到磁盤上;然后對(duì)每個(gè)源程序文件都進(jìn)行獨(dú)立編譯和調(diào)試;并針對(duì)不同的模塊設(shè)計(jì)測(cè)試用例進(jìn)行單元測(cè)試;最后,將幾個(gè)分別開發(fā)的模塊組裝到一起,形 成一個(gè)完整的程序,進(jìn)行集成測(cè)試,從而 發(fā)現(xiàn)并改正程序中存在的一些潛藏的錯(cuò)誤,并使程序的容錯(cuò)能力南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 38 大大增強(qiáng)。調(diào)試與測(cè)試過程及結(jié)果如下所述 預(yù)期結(jié)果: ( 1)片頭在顯示動(dòng)畫的同時(shí)播放音樂; ( 2)按任意鍵后進(jìn)入游戲主界 面; ( 3)進(jìn)入游戲主界面后動(dòng)畫音樂 繼續(xù)播放 。 實(shí)際運(yùn)行結(jié)果: 在第( 1)步, 進(jìn)入游戲后 不能 播放片頭音樂。 錯(cuò)誤分析:程序中使用循環(huán)播放動(dòng)畫,并在其循環(huán)體中插入發(fā)聲函數(shù)以達(dá)到音樂和動(dòng)畫的同步。 但是對(duì)于背景音樂的文件格式是有要求的,并不是每種格式都能作為背景音樂使用的 修改: 將 背 景 音 樂 改 成 .wav 格式即 可 , 為 PlaySound (TEXT(D:\\xiaopingguo\\), NULL, SND_ASYNC | SND_NODEFAULT)。修改后程序運(yùn)行的實(shí)際結(jié)果與預(yù)期效果一致。 預(yù)期結(jié)果:當(dāng)蛇的頭部和蛇身相撞的時(shí)候,游戲應(yīng)當(dāng)結(jié)束。 實(shí)際運(yùn)行的效果:蛇頭撞到蛇身時(shí),程序停止了。 修改后的代碼為: for(p = headnext。 p != NULL。 p = pnext) { if (headx == px amp。amp。 heady == py) return 1。 } 終止程序 經(jīng)過對(duì)各個(gè)模塊的調(diào)試和單元測(cè)試并修改了錯(cuò)誤以后,將各個(gè)模塊組裝成一個(gè)軟級(jí)系統(tǒng),并進(jìn)行集成測(cè)試。在集成的過程中發(fā)現(xiàn)了一些錯(cuò)誤,比如全局變量南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 39 重復(fù)定義、函數(shù)重復(fù)聲明等,分別進(jìn)行了改正。最后連續(xù)運(yùn)行了 5次,以便測(cè)試該游戲程序的功能、性能是否達(dá)到了預(yù)期的目標(biāo),并根據(jù)所使用的具體機(jī)器 隨 蛇的爬行速度進(jìn)行適當(dāng)?shù)恼{(diào)整。測(cè)試內(nèi)容包括蛇的運(yùn)行、分?jǐn)?shù)、關(guān)數(shù)、音樂動(dòng)畫等的功能,情況均正常。 南京工程學(xué)院畢業(yè)設(shè)計(jì)說明書(論文) 40 第七 章 結(jié) 論 畢業(yè) 設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí) ,發(fā)現(xiàn) ,提出 ,分析和解決實(shí)際問題 ,鍛煉實(shí)踐能力的重要環(huán)節(jié) ,是對(duì)我們的實(shí)際工作能力的具體訓(xùn)練和考察過程 .隨著科學(xué)技術(shù)發(fā)展的日新月異,當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué) 生 來說掌握程序開發(fā)技術(shù)是十分重要的,而 C語言又是最常見,功能最強(qiáng)大的一種高級(jí)語言,因此做好 C 語言 畢業(yè) 設(shè)計(jì)是十分必要的。 回顧起此次 畢業(yè) 設(shè)計(jì),至今我們?nèi)愿锌H多,的確,自從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,在整整 一個(gè)學(xué)期 的日子里,可以學(xué)到很多很多的東西,同 時(shí)不僅可以鞏固了以前所學(xué)過 的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次 畢業(yè) 設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)一些前面學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,指針,鏈表 等。 通過這次 畢業(yè) 設(shè)計(jì)之 后,我 們把前面所學(xué)過的知識(shí)又 重新溫故了一遍。 我做的是貪吃蛇游戲。簡(jiǎn)單的一個(gè),但對(duì)我一個(gè)初學(xué)者來說卻是一個(gè)很大的困難。更加是第一次做 畢業(yè) 設(shè)計(jì),所以 在后期編寫程序時(shí)老是停滯不前 ,最主要是不知從何開始,這個(gè)時(shí)候才知道上課老師們不厭其煩的教導(dǎo)是多么的寶貴,這個(gè)時(shí)候才后悔上課的時(shí)候沒有認(rèn)真的聽講??墒乾F(xiàn)在一切都晚了,還好時(shí)間還算是充裕,只好拿出書本重新復(fù)習(xí)一下。特別是結(jié)構(gòu)體,指針的部分,幾乎是一片空白。不過經(jīng)過幾天的努力,大體上把課本上的知識(shí)點(diǎn)看了一遍,知識(shí)點(diǎn)也都基本是撐握了,所以下一步就是開始正式的編 寫 程序了。不過 畢竟是個(gè) 新手,還是不
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1