




已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課課程程設(shè)設(shè)計(jì)計(jì)報(bào)報(bào)告告 貪吃蛇游戲設(shè)計(jì)貪吃蛇游戲設(shè)計(jì) 專業(yè)專業(yè)電子信息工程 學(xué)生姓名學(xué)生姓名 班級(jí)班級(jí)b 電子 062 學(xué)號(hào)學(xué)號(hào) 指導(dǎo)教師指導(dǎo)教師 完成日期完成日期2008 年 8 月 30 日 本科生課程設(shè)計(jì)報(bào)告(2008) 1 貪吃蛇游戲設(shè)計(jì)貪吃蛇游戲設(shè)計(jì) 摘要:本設(shè)計(jì)主要圍繞貪吃蛇游戲展開。眾所周知,貪吃蛇游戲一直以來(lái)是比較流行的。 傳統(tǒng)的貪吃蛇游戲功能比較少,對(duì)蛇的控制僅限于向左轉(zhuǎn)和向右轉(zhuǎn),而現(xiàn)在的貪吃蛇游戲 已經(jīng)發(fā)展的相當(dāng)好;具有更多的功能和友好的界面。例如,最近流行的免費(fèi)的3d版的貪吃 蛇游戲,界面相當(dāng)?shù)拿烙^,有很強(qiáng)的立體效果,真實(shí)感更強(qiáng),食物也為立體的且顏色絢麗。 在3d版貪吃蛇游戲里面,墻壁是真實(shí)的墻壁,障礙物比較多,如樹、土丘等。此外,其功 能更多更強(qiáng),可以選擇難度。不過(guò),總而言之,3d版與傳統(tǒng)的貪吃蛇游戲有共性,即娛樂(lè) 性與益智性。這些也是貪吃蛇游戲的優(yōu)點(diǎn)。 本人因水平有限,只能設(shè)計(jì)簡(jiǎn)單的貪吃蛇游戲。不過(guò),在功能上,比傳統(tǒng)貪吃蛇游 戲更豐富。蛇可以反向運(yùn)動(dòng),操作起來(lái),顯得更為靈活。界面的顏色選用綠色,不易使眼 睛疲勞。 關(guān)鍵詞:3d版;傳統(tǒng);靈活; 貪吃蛇游戲設(shè)計(jì) 目目 錄錄 1、概述 1.1、用tc設(shè)計(jì)程序的方法 1.2、簡(jiǎn)要說(shuō)明 2、設(shè)計(jì)要求 3、系統(tǒng)分析與模塊設(shè)計(jì) 3.1、算法設(shè)計(jì) 3.2、數(shù)據(jù)結(jié)構(gòu) 3.3、模塊設(shè)計(jì) 3.4、模塊枝干圖 4、程序流程圖 4.1、圖形驅(qū)動(dòng) 4.2、開始畫面 4.3、顯示食物 4.4、蛇向前移動(dòng) 4.5、判蛇死 4.6、吃到食物后處理 4.7、判蛇反向移動(dòng) 4.8、游戲結(jié)束 4.9、圖形結(jié)束 5、程序設(shè)計(jì)及關(guān)鍵源代碼 6、運(yùn)行結(jié)果分析 7、實(shí)習(xí)心得 貪吃蛇游戲設(shè)計(jì) 0 貪吃蛇游戲的設(shè)計(jì)貪吃蛇游戲的設(shè)計(jì) 1 .概 述 1.1、用tc設(shè)計(jì)程序的方法 首先應(yīng)了解設(shè)計(jì)要求,然后按照功能設(shè)計(jì)模塊,每個(gè)模塊完成特定的功能, 要使模塊間的耦合性小,內(nèi)聚性高;設(shè)計(jì)模塊是相當(dāng)重要的一個(gè)環(huán)節(jié)。模塊的 數(shù)量不宜太多,也不宜太少,要使每個(gè)模塊都能比較簡(jiǎn)單的轉(zhuǎn)換成流程圖。模 塊設(shè)計(jì)完成后,就該給每個(gè)模塊繪制流程圖了。流程圖要簡(jiǎn)單,容易理解,多 用中文。不宜寫過(guò)長(zhǎng)的代碼,增加理解難度。流程圖與模塊枝干圖均可用繪圖 軟件繪制,可適當(dāng)加些背景色,用以區(qū)分。此外,流程圖應(yīng)容易轉(zhuǎn)換成代碼。 繪制好了流程圖,就要編寫代碼了。直接在tc環(huán)境里輸入代碼,然后運(yùn)行測(cè)試, 檢查錯(cuò)誤,最終,將設(shè)計(jì)出可行的程序。 1.2、簡(jiǎn)要說(shuō)明 我設(shè)計(jì)的貪吃蛇游戲具有很多獨(dú)特性。例如,墻壁不用實(shí)體,而用中空的 墻,顏色為綠色,顯得更美觀,且不易使眼疲勞。操作上,做了些簡(jiǎn)化,游戲 開始時(shí)便可以自動(dòng)運(yùn)行,且速度較快,屬中等難度。玩游戲的過(guò)程相當(dāng)簡(jiǎn)單, 只需按鍵盤上的上下左右方向鍵,便可改變蛇的行進(jìn)方向。食物隨機(jī)產(chǎn)生。貪 吃蛇吃到一個(gè)食物后便得到10分。得分顯示在左上角。當(dāng)蛇撞到墻壁或自己時(shí), 蛇死,游戲結(jié)束,輸出得分。 2.設(shè)計(jì)要求 外觀為矩形,食物隨機(jī)產(chǎn)生,添加注釋,統(tǒng)計(jì)得分、每吃到一個(gè)食物獲 得10分。蛇碰到自己或墻壁,游戲均結(jié)束。游戲結(jié)束時(shí)輸出得分。畫出模塊枝 干圖與每個(gè)模塊的程序流程圖。修改某些代碼,改變其外觀及功能。 游戲操作應(yīng)盡量簡(jiǎn)單。 界面美觀,讓人看了覺得舒服。 3、系統(tǒng)分析與模塊設(shè)計(jì) 3.1、算法設(shè)計(jì) 玩游戲過(guò)程采用遞歸算法,由while(1)控制循環(huán)過(guò)程,可使游戲重復(fù)玩, 在蛇死之前不停的玩。判斷蛇死的算法是通過(guò)判斷蛇有沒有碰到自己及墻壁。 使蛇向前移動(dòng)采用遞歸算法,通過(guò)遞歸將蛇的每一節(jié)依次向前移動(dòng),橫坐標(biāo)與 縱坐標(biāo)依次向前賦值,從而達(dá)到使蛇前移的目的。蛇的前進(jìn)方向通過(guò)if結(jié)構(gòu)判 本科生課程設(shè)計(jì)報(bào)告(2008) 1 斷。 3.2、數(shù)據(jù)結(jié)構(gòu) 蛇與食物信息分別用兩個(gè)結(jié)構(gòu)體存儲(chǔ)與表示。將食物的橫坐標(biāo)x、縱坐標(biāo)y和 判斷是否要出現(xiàn)食物的變量yes分別作為食物的結(jié)構(gòu)體的成員。蛇的橫坐標(biāo)數(shù)組 xn,縱坐標(biāo)數(shù)組yn,蛇的節(jié)數(shù)node,蛇的移動(dòng)方向direction、蛇的生命life 分別作為蛇的結(jié)構(gòu)體的成員。結(jié)構(gòu)體內(nèi)每個(gè)成員的存儲(chǔ)類型均為整型。 3.3、模塊設(shè)計(jì) 模塊應(yīng)具有高內(nèi)聚性,低耦合性。這樣,程序運(yùn)行才更穩(wěn)定,效率更高。 據(jù)功能將貪吃蛇游戲劃分成四個(gè)大模塊,九個(gè)小模塊。每個(gè)模塊均具有自己 的功能,而且,比較容易畫出各個(gè)模塊的流程圖。 3.4、模塊枝干圖 簡(jiǎn)要說(shuō)明:圖形驅(qū)動(dòng)即完成初始化圖形系統(tǒng)功能;開始畫面模塊的主要作用是根據(jù)設(shè)置繪制出 玩游戲區(qū)域四周的墻壁;玩游戲的過(guò)程是游戲此游戲程序的核心,又可細(xì)分為好多小的功能模 塊;其中,顯示食物模塊僅完成顯示食物功能;蛇前移模塊即通過(guò)遞歸算法實(shí)現(xiàn)蛇的向某方向 移動(dòng);判蛇死模塊的功能是通過(guò)判斷蛇是否碰到自己或墻壁來(lái)判斷蛇有沒有死亡。吃到食物后 小模塊只有蛇吃到食物后才起作用。即當(dāng)蛇吃到食物后,蛇自身延長(zhǎng)一節(jié)并繪出蛇,同時(shí)加 10 分。通過(guò)鍵盤操控來(lái)玩游戲主要由判反向移動(dòng)模塊完成,即當(dāng)蛇不是反向移動(dòng)時(shí),按照鍵 盤上方向鍵指示移動(dòng)。游戲結(jié)束模塊功能簡(jiǎn)單,僅完成輸出得分與提示語(yǔ)功能。最后圖形結(jié)束 模塊完成關(guān)閉圖形功能。 貪吃蛇游戲設(shè)計(jì) 2 4、程序流程圖 4.1、圖形驅(qū)動(dòng) 4.2、開始畫面 本科生課程設(shè)計(jì)報(bào)告(2008) 3 4.3、 顯示食物 貪吃蛇游戲設(shè)計(jì) 4 4.4、 蛇向前移動(dòng) 本科生課程設(shè)計(jì)報(bào)告(2008) 5 4.5、 判蛇死 貪吃蛇游戲設(shè)計(jì) 6 4.6、 吃到食物后處理 本科生課程設(shè)計(jì)報(bào)告(2008) 7 4.7、 判蛇反向移動(dòng) 貪吃蛇游戲設(shè)計(jì) 8 4.8、 游戲結(jié)束 本科生課程設(shè)計(jì)報(bào)告(2008) 9 4.9、 圖形結(jié)束 5、程序設(shè)計(jì)及關(guān)鍵源代碼 定義上下左右控制方向: #define left 0x4b00 #define right 0x4d00 貪吃蛇游戲設(shè)計(jì) 10 #define down 0x5000 #define up 0x4800 #define esc 0x011b 設(shè)定游戲速度: int gamespeed=60000; 用結(jié)構(gòu)體定義食物與蛇: struct food int x;/*食物的橫坐標(biāo)*/ int y;/*食物的縱坐標(biāo)*/ int yes;/*判斷是否要出現(xiàn)食物的變量*/ food;/*食物的結(jié)構(gòu)體*/ struct snake int xn; int yn; int node;/*蛇的節(jié)數(shù)*/ int direction;/*蛇移動(dòng)方向*/ int life;/* 蛇的生命,0 活著,1 死亡*/ snake; 主函數(shù): void main(void) init();/*圖形驅(qū)動(dòng)*/ drawk();/*開始畫面*/ gameplay();/*玩游戲具體過(guò)程*/ close();/*圖形結(jié)束*/ 圖形驅(qū)動(dòng): 本科生課程設(shè)計(jì)報(bào)告(2008) 11 void init(void) int gd=detect,gm; initgraph( cleardevice(); 開始畫面,左上角坐標(biāo)為(50,40) ,右下角坐標(biāo)為(620,460)的圍墻: void drawk(void) setcolor(10);/*綠色*/ setlinestyle(solid_line,0,thick_width);/*設(shè)置線型*/ for(i=50;i0;i-)/*蛇的每個(gè)環(huán)節(jié)前移動(dòng),關(guān)鍵算法*/ snake.xi=snake.xi-1; snake.yi=snake.yi-1; /*1,2,3,4 表示右,左,上,下四個(gè)方向,通過(guò)這個(gè)判斷來(lái)移動(dòng)蛇頭*/ switch(snake.direction) case 1:snake.x0+=10;break; case 2: snake.x0-=10;break; case 3: snake.y0-=10;break; case 4: snake.y0+=10;break; for(i=3;i595|snake.y0455) gameover(); snake.life=1; /*蛇死*/ if(snake.life=1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始 */ break; if(snake.x0=food.x/*把畫面上的食物東西去掉*/ rectangle(food.x,food.y,food.x+10,food.y-10); snake.xsnake.node=-20;snake.ysnake.node=-20; /*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/ snake.node+;/*蛇的身體長(zhǎng)一節(jié)*/ food.yes=1;/*畫面上需要出現(xiàn)新的食物*/ score+=10; prscore();/*輸出新得分*/ setcolor(4);/*畫出蛇*/ for(i=0;isnake.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, 貪吃蛇游戲設(shè)計(jì) 14 snake.xsnake.node-1+10,snake.ysnake.node-1-10); /*endwhile(!kbhit)*/ if(snake.life=1)/*如果蛇死就跳出循環(huán)*/ break; key=bioskey(0);/*接收按鍵*/ if(key=esc)/*按 esc 鍵退出*/ break; else if(key=up else if(key=right else if(key=left else if(key=down /*endwhile(1)*/ 游戲結(jié)束: void gameover(void) cleardevice(); prscore(); setcolor(green); settextstyle(0,0,3); outtextxy(200,200,“ game over!try!“); getch(); 輸出成績(jī): void prscore(void) 本科生課程設(shè)計(jì)報(bào)告(2008) 15 char str10; setfillstyle(solid_fill,yellow); bar(50,15,220,35); setcolor(5); settextstyle(0,0,2); sprintf(str,“score:%d“,score); outtextxy(55,20,str); 6、運(yùn)行結(jié)果分析 通過(guò)運(yùn)行,我對(duì)自己的設(shè)計(jì)比較滿意。運(yùn)行結(jié)果正如我所料,此貪吃蛇游 戲具有易操作性及充滿活力的外觀。 截圖及描述: 圖 6-1 開始畫面 此圖為開始畫面圖,蛇有三節(jié),墻壁顏色為綠色,顯得較有活力。 貪吃蛇游戲設(shè)計(jì) 16 圖 6-2 蛇吃到兩個(gè)食物后 蛇吃到食物后,得分為 20 分,蛇延長(zhǎng)兩節(jié)。 圖 6-3 游戲結(jié)束畫面 本科生課程設(shè)計(jì)報(bào)告(2008) 17 7、實(shí)習(xí)心得 在大一學(xué)習(xí)期間,我就知道在大二暑假期間,有程序設(shè)計(jì)實(shí)習(xí)。從那時(shí)起, 我就期盼著這一天早點(diǎn)到來(lái)。只因我對(duì)編程有濃厚的興趣。我是我們班第一個(gè)通 過(guò)江蘇省計(jì)算機(jī) vb 二級(jí)考試的。我的 vc+成績(jī)也還可以。 轉(zhuǎn)眼間,程序設(shè)計(jì)實(shí)習(xí)就如期而至了。實(shí)習(xí)的第一天是充滿好奇與興趣,當(dāng) 實(shí)習(xí)回來(lái)時(shí),就感覺得這次實(shí)習(xí)并非想象中的那樣。我本以為,程序設(shè)計(jì)實(shí)習(xí)應(yīng) 該是開放性的,讓我們參照某些課題,自主、自由地設(shè)計(jì)程序。我想,那樣更能 促進(jìn)我們學(xué)習(xí)和提高我們的動(dòng)手能力。 這次實(shí)習(xí)中,我們都被給了程序的源碼,而且有詳細(xì)的功能說(shuō)明。表面上看, 我們幾乎不需什么努力就能完成,而實(shí)際上,并非如此。因?yàn)槟切┏绦虼蠖嗍腔?于 16 位 dos 執(zhí)行的,并且,里面包含許多 dos 下圖形處理的函數(shù),我從未涉及 過(guò),所以,很難看懂代碼,即使有那樣詳細(xì)的注釋。 通過(guò)堅(jiān)持上機(jī)實(shí)習(xí),我對(duì)代碼的認(rèn)識(shí)越來(lái)越多。我還上網(wǎng)找了些資料,如 tc 函數(shù)詳解等等。我更多的了解了各種 tc 函數(shù)的功能。我通過(guò)一步步的學(xué)習(xí),終于 弄懂了整個(gè)程序,并且對(duì)程序做了些修改。如外觀、大小、輸出成績(jī)等。通過(guò)修 改程序代碼增加游戲的功能,我也從中獲得了自信。 通過(guò)使用 win-tc1.9 設(shè)計(jì)程序,我更多的了解了 tc 函數(shù)的功能與用法,也了 解了在 tc 環(huán)境下調(diào)用 dos 繪圖及處理的常用方法。 在上機(jī)實(shí)習(xí)的過(guò)程中,還繪制了模塊枝干圖與程序流程圖,我感覺到,畫模 塊枝干圖并不是件容易的事。只有在弄懂程序后才能將整個(gè)程序劃分成數(shù)量適宜 的模塊。劃分模塊確實(shí)挺重要的,原來(lái)我將玩游戲過(guò)程劃為一個(gè)模塊,后來(lái)發(fā)現(xiàn) 太復(fù)雜,很難
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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-2030年中國(guó)氧化鎂防火板行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030年中國(guó)氡探測(cè)器行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 2025-2030年中國(guó)民族服裝行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030年中國(guó)柴油濾清器行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資前景預(yù)測(cè)研究報(bào)告
- 行政管理學(xué)語(yǔ)文知識(shí)點(diǎn)總結(jié)與回顧試題及答案
- 2025-2030年中國(guó)智能IC卡行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 行政管理中的價(jià)值導(dǎo)向與評(píng)價(jià)機(jī)制的試題及答案
- 行政管理???025年自考護(hù)航成長(zhǎng)試題及答案
- 2025-2030年中國(guó)旋轉(zhuǎn)脫鹽塔行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030年中國(guó)旅游地產(chǎn)行業(yè)發(fā)展分析及投資風(fēng)險(xiǎn)預(yù)警與發(fā)展策略研究報(bào)告
- GB/T 2421.1-2008電工電子產(chǎn)品環(huán)境試驗(yàn)概述和指南
- GB/T 21206-2007線路柱式絕緣子特性
- GB/T 2087-2001圓柱螺旋拉伸彈簧尺寸及參數(shù)(半圓鉤環(huán)型)
- GA/T 1567-2019城市道路交通隔離欄設(shè)置指南
- 數(shù)字貨幣MASK發(fā)行機(jī)制收益制度解讀課件
- 2023年BIM工程師繼續(xù)教育題庫(kù)含答案【b卷】
- 20章-過(guò)渡金屬(Ⅰ)-鈦釩鉻錳講解課件
- 吹膜機(jī)技術(shù)和使用說(shuō)明
- 幼兒園繪本故事:《小熊不刷牙》 課件
- 物質(zhì)安全數(shù)據(jù)表(MSDS)(車用尿素溶液)
- 清朝治理新疆地區(qū)系統(tǒng)性治理課件(16ppt+視頻)2022年新疆地方史讀本(中學(xué)版)
評(píng)論
0/150
提交評(píng)論