資源描述:
《貪吃蛇游戲程序設(shè)計(jì),簡單易懂》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、貪吃蛇游戲程序設(shè)計(jì)17貪吃蛇游戲設(shè)計(jì)一、設(shè)計(jì)任務(wù)貪吃蛇游戲程序設(shè)計(jì)二、設(shè)計(jì)目的通過對貪吃蛇游戲的設(shè)計(jì),來將所學(xué)的C語言知識運(yùn)用,從而達(dá)到鞏固知識靈活運(yùn)用知識的目的,實(shí)現(xiàn)理論與實(shí)際的結(jié)合。三、設(shè)計(jì)思路分析(1)游戲規(guī)則在一個四周都用“磚”圍起來的空間里,空間里隨機(jī)出現(xiàn)一個食物,食物出現(xiàn)的位置必須在圍墻內(nèi),且出現(xiàn)的位置不能與蛇的位置重合。然后操作者通過上下左右鍵來控制蛇吃掉食物,蛇每吃掉一個食物,自己的長度就增加一節(jié),同時游戲分?jǐn)?shù)增加10分。蛇吃到食物后,系統(tǒng)又隨機(jī)產(chǎn)生另一個新的食物。若蛇在運(yùn)動過程中,撞到墻或碰到
2、自己的身體,則立刻結(jié)束游戲,否則繼續(xù)進(jìn)行。(2)蛇的運(yùn)動17此程序的關(guān)鍵就在于蛇的移動。游戲在進(jìn)入界面后,在沒有執(zhí)行任何操作的情況下,蛇沿著原來的方向以某一速度前行。若蛇在水平方向上前行,操作者按向左或向右的鍵,此時該指令判為無效,蛇繼續(xù)沿著原來水平的方向前行。同樣的道理,若蛇在豎直的方向上前行,操作者按向上或向下的鍵,此時該指令也判為無效,蛇繼續(xù)沿著原來豎直的方向前行。若蛇在運(yùn)動過程中,操作者按下了有效的鍵后,首先應(yīng)確定蛇頭的位置,然后蛇的身體隨著蛇頭而運(yùn)動。在新的蛇頭確定的那一瞬間,蛇看上去好像比之前多了一
3、節(jié),為了不出現(xiàn)這樣的情況,在新的蛇頭出現(xiàn)的時候,就應(yīng)該用程序的背景顏色將蛇尾遮蓋掉。這樣看起來,既實(shí)現(xiàn)了蛇的轉(zhuǎn)向,又不會使蛇無緣無故的多一節(jié)。所以,在游戲的整個界面中,共有兩個結(jié)構(gòu)體----食物與蛇。(3)流程圖開始否是否是否是繼續(xù)按原來方向前行按照指令方向前行輸入指令?結(jié)束退出界面蛇死亡?是否吃到食物?蛇身變長一節(jié)隨機(jī)產(chǎn)生另一個食物蛇開始沿原來初始的方向前行初始化界面初始化蛇的位置,蛇的長度17四、程序模塊化思想分析整個程序主函數(shù)主要由四大部分構(gòu)成:圖形驅(qū)動,開始畫面,玩游戲的具體過程,圖形結(jié)束。//****
4、*************************************voidmain()//主函數(shù){Init();//圖形驅(qū)動DrawK();//開始畫面GamePlay();//玩游戲的具體過程Close();//圖形結(jié)束}//*****************************************所以只要分塊完成對應(yīng)的程序,然后把各個部分的程序連起來就可以了。(一)圖形的驅(qū)動圖形的驅(qū)動,首先是由detectgraph通過檢測硬件確定圖形驅(qū)動程序和模式,然后把自動測試硬件的結(jié)果賦給圖形驅(qū)動器。
5、不同的顯示器適配器有不同的圖形分辨率。即是同一顯示器適配器,在不同模式下也有不同分辨率。因此,在屏幕作圖之前,必須根據(jù)顯示器適配器種類將顯示器設(shè)置成為某種圖形模式,在未設(shè)置圖形模式之前,微機(jī)系統(tǒng)默認(rèn)屏幕為文本模式(80列,25行字符模式),此時所有圖形函數(shù)均不能工作。再由initgraph()函數(shù),根據(jù)測試結(jié)果初始化圖形。17//***************************************************voidInit()//圖形驅(qū)動{intgd=DETECT;//gd=DETECT
6、把自動測試硬件的結(jié)果賦給圖形驅(qū)動器intgm;//圖形模式initgraph(&gd,&gm,"");//根據(jù)測試結(jié)果初始化圖形cleardevice();//清除圖形屏幕}//****************************************************(一)開始畫面畫面的開始也就是畫墻,其中要規(guī)定圍墻的范圍坐標(biāo)。要設(shè)置“磚”的形狀顏色,分?jǐn)?shù)的背景顏色。setbkcolor函數(shù)用指定的顏色值來設(shè)置當(dāng)前的背景色,如果指定的顏色值超出了當(dāng)前設(shè)備的表示范圍,則設(shè)置為最近似的、設(shè)備可以表示的
7、顏色。setcolor?圖形屏幕函數(shù)設(shè)置前景顏色,也就是“磚”的顏色(BLACK黑BLUE蘭GREEN綠CYAN青RED紅MAGENTA洋紅BROWN棕LIGHTGRAY淡灰DARKGRAY深灰LIGHTBLU淡蘭WHITE白LIGHTGREEN淡綠LIGHTCYAN淡青LIGHTMAGENTA淡洋紅LIGHTRED淡紅YELLOW黃)。17rectangle(intleft,inttop,intright,intbottom)函數(shù)畫矩形來做圍墻,(left,top)為矩形的左上坐標(biāo),(right,bottom
8、)為矩形的右下坐標(biāo),兩者可確定一個矩形的大小setlinestyle函數(shù)設(shè)置當(dāng)前畫線寬度和類型,也就是“磚”的線條的形狀(PS_SOLID畫筆畫出的是實(shí)線PS_DASH畫筆畫出的是虛線PS_DOT畫筆畫出的是點(diǎn)線PS_DASHDOT畫筆畫出的是點(diǎn)劃線PS_DASHDOTDOT畫筆畫出的是點(diǎn)-點(diǎn)-劃線)。//****************************************