




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、貪吃蛇游戲的設計文檔目錄一、需求分析- 2 -1功能需求- 2 -2非功能需求- 2 -二、系統(tǒng)設計- 2 -1.實際思路- 2 -2,結構設計- 3 -(1),main(),主函數(shù);- 3 -(2),init() ,圖形化驅(qū)動函數(shù)- 4 -(3),help(),幫助信息函數(shù)- 4 -(4),drawfence(),周圍墻壁函數(shù)- 4 -(5),printscore(),得分顯示函數(shù)- 5 -(6),playgame(),游戲控制函數(shù)- 5 -(7),gameover(),游戲結束函數(shù)- 6 -(8),closegraph(),關閉圖形驅(qū)動函數(shù)- 7 -三、系統(tǒng)實現(xiàn)- 7 -1,help()函
2、數(shù)流程圖- 7 -2,drawfence()函數(shù)流程圖- 8 -3,printscore()函數(shù)流程圖- 8 -4,playgame()函數(shù)流程圖- 9 -5,gameover(),游戲結束函數(shù)- 13 -四、系統(tǒng)測試- 13 -1,功能測試- 13 -2,性能測試- 14 -3,測試結果- 14 -推薦精選一、需求分析1功能需求貪吃蛇游戲的游戲規(guī)則是:游戲開始時,在一個密閉的空間里,貪吃蛇可以通過方向鍵進行方向的變化。屏幕上隨機的出現(xiàn)食物,貪吃蛇在運動的過程中蛇頭可以吃掉出現(xiàn)的的食物。吃掉食物后,蛇的身體會增長一節(jié)。當蛇的身體碰到四周的墻壁或者是自己的身體時,游戲會結束!并且,在屏幕的上方有
3、一個分數(shù)牌顯示,游戲開始時分數(shù)為0,每當蛇吃掉一個食物,分數(shù)會增加10分。而在游戲的過程中,玩家可以按“ESC”按鍵隨時退出游戲。2非功能需求(1)界面友好,圖形界面,游戲開始前有游戲的簡單使用說明,方便玩家使用;(2)具有較好的容錯能力,玩家在游戲過程中,除了規(guī)定的按鍵外,其他按鍵均忽略,不予處理;(3)發(fā)布游戲時,將圖形驅(qū)動加載到程序中,使系統(tǒng)具有良好的可擴展性和平臺適應性,可在任何PC機上運行。二、系統(tǒng)設計1.實際思路(1),貪吃蛇游戲的設計,第一步想到的當然是畫出貪吃蛇,從而可以想到定義一個“蛇”的結構體的類型,這個結構體中包括:蛇的坐標,蛇的長度,蛇運動的方向;蛇的生命。而蛇的運動可
4、以通過兩種結構來實現(xiàn):數(shù)組和鏈表,我使用了簡單但不簡潔的數(shù)組來實現(xiàn)。蛇的運動方向可以通過選擇結構來實現(xiàn)控制蛇的運動方向。 (2),蛇已經(jīng)構造出來了,第二步要構造的當然是蛇要吃的食物了。和構推薦精選造蛇一樣,我們同樣可以通過一個結構體來構造食物。這個食物的結構體中包括:食物的坐標和食物是否生成。而食物的出現(xiàn)又是隨機的,所以我們可以通過調(diào)用隨機生成函數(shù)來實現(xiàn)這一功能。(3),蛇和食物有了,就要設計蛇運動的區(qū)域了,我們可以同過調(diào)用圖形化 的函數(shù),運用循環(huán)來實現(xiàn)游戲墻壁的設計。(4),而游戲最重要的部分就是:怎樣驅(qū)動蛇的運動?我們首先可通過!kbhit()函數(shù),來接收是否有鍵盤輸入蛇運動的方向。在沒有
5、鍵盤輸入的情況下,蛇的運動就要通過將畫蛇的數(shù)組不停地進行交換來實現(xiàn)的。蛇在吃完了食物之后身體的增加是通過增加數(shù)組的長度來實現(xiàn)的。(5)最后要實現(xiàn)的就是在玩游戲過程中的分數(shù)的增加。這也是運用了圖形化函數(shù)來實現(xiàn)他的顯示,同時通過一個分支結構來控制游戲的每個階段的不同的分數(shù)的增加。2,結構設計“貪吃蛇”游戲的核心的部分是游戲的控制部分,也就是我們在玩游戲時,不斷地通過改變蛇頭的反向來吞噬食物的過程。并且,在游戲的過程中還要顯示玩家的得分。為了實現(xiàn)這些功能,就需要各個小模塊的功能支持。具體的各個功能模塊如下:圖形驅(qū)動;顯示幫助信息;畫周圍的墻壁;顯示分數(shù);控制游戲;結束游戲;關閉游戲圖形驅(qū)動。(1),
6、main(),主函數(shù);在mian()函數(shù)之前我們已經(jīng)對要用到的各個數(shù)據(jù)進行了宏定義。包括:蛇的最大節(jié)數(shù);方向鍵;循環(huán)變量;接收按鍵值的變量;分數(shù);還有蛇的速度。而在main()函數(shù)中我們只需要調(diào)用幾個要使用的自定義的函數(shù)即可。包括:圖形驅(qū)動函數(shù):init();顯示幫助函數(shù):help();開始的畫面:drawfence();推薦精選玩游戲函數(shù)playgame();圖形結束函數(shù):closegame()。(2),init() ,圖形化驅(qū)動函數(shù) 由于貪吃蛇游戲采用的圖形化界面。在屏幕作圖之前嗎,必須根據(jù)顯示器適配器的種類將顯示器設置成為某種圖形模式,在未設置時,默認的屏幕為文本模式,此時,圖形化函數(shù)均
7、不能工作。所以要用到圖形初始化函數(shù)initgraph()和清除圖形屏幕函數(shù)cleardevice()。 其中,initgraph()函數(shù)的初始化是:void far initgraph(int far *gdriver,int far *gmode,char *path);其中第一個參數(shù)是圖形驅(qū)動器;第二個參數(shù)是模式變量;第三個變量是圖形驅(qū)動程序所在的目錄里路徑。(3),help(),幫助信息函數(shù)游戲開始之后,首先要顯示玩貪吃蛇的相關幫助信息,包括:游戲名稱;游戲的控制鍵;退出鍵;以及游戲的相關的介紹,然后按任意鍵開始游戲。 由于已經(jīng)將界面初始化為圖形模式,所以輸出要用到圖形文本的輸出,而圖形
8、文本的顯示主要涉及三個函數(shù):1)作圖顏色設置函數(shù)setcolor();函數(shù)原型是:void far setcolor(int color);參數(shù)color是顏色的代表值。2)字形設置函數(shù)settextstyle();函數(shù)原型是:void far settextstyle(int font,int direction,int charsize);其中參數(shù)font是用來設置輸出文本的字形;direction用來設置文本的方向;charsize是用來設置文本的大小。3)文本顯示函數(shù)outtextxy();函數(shù)的原型是:void far outtextxy(int x,int y,char far *
9、textstring);參數(shù)x是文本的起始橫坐標,y是文本的起始縱坐標;參數(shù)textstring是待輸出字符串的首地址。 用這三個函數(shù)就可以在help()函數(shù)中輸出有關的幫助信息。推薦精選(4),drawfence(),周圍墻壁函數(shù) 本游戲中的蛇運動的范圍是一個矩形框圍成的四面墻壁。畫出墻面,主要用三個函數(shù):1),setcolor(),作圖顏色設置函數(shù);2),setlinestyle(),線性設置函數(shù);函數(shù)原型:void far setlinestyle(int linestyle,unsigned pattern,int thickenss);參數(shù)linestyle代表線型;參數(shù)patter
10、n在定義線型時起作用,一般取值為0;thickness的取值只有兩種:1(NORM_WIDTH)代表1點寬,3(THICK_WIDTH)代表3點寬。3),rectangle(),畫矩形框函數(shù);函數(shù)原型:void far rectangle(int left,int top,int right,int bottom);其中參數(shù)left和top分別是矩形的左上角的橫縱坐標;參數(shù)right和bottom分別是矩形的右下角的橫縱坐標。 在具體實現(xiàn)時,是通過循環(huán)來實現(xiàn)的。(5),printscore(),得分顯示函數(shù)分數(shù)的顯示是通過對一個變量的值以圖形化的形式顯示出來,同時采用某種顏色為背景來襯托成績,
11、義突出其的顯示效果。分數(shù)的顯色主要涉及以下六個函數(shù):1),setfillstyle(),設置填充效果函數(shù)函數(shù)原型:void far setfillstyle(int pattern,int color),其中參數(shù)pattern為填充的模式,參數(shù)color為填充的顏色。2),bar()畫條形窗口函數(shù)函數(shù)原型:void far bar bar(int left,int top,int right,int bottom) ;和函數(shù)retangle()函數(shù)類似。3),setcolor();4),stetextstyle();5),sprintf(),格式輸出函數(shù);函數(shù)原型:int sprint(cha
12、r *str,char *format,variable-list);函數(shù)的主要功能將按格式化規(guī)定的內(nèi)容寫入的str指向的字符串中,返回值等于寫入的字符個數(shù)。6),outtextxy();推薦精選(6),playgame(),游戲控制函數(shù)游戲控制函數(shù)是貪吃蛇游戲的核心部分,由于控制蛇的移動和食物的出現(xiàn)好,以及得分的計算。函數(shù)可分為一下的步驟來實現(xiàn):1) 初始化蛇的相關信息;2) 初始化食物的相關信息;3) 輸出初始化分數(shù);4) 當玩家沒有按“ESC”鍵時,一直重復以下各步;5) 當玩家不按任何鍵時,一直重復613各步驟;6) 在屏幕畫出食物;7) 計算出蛇的每一節(jié)在屏幕中的位置;8) 根據(jù)蛇的
13、移動方向,計算出下一步蛇頭的坐標位置;9) 判斷蛇頭是不是撞上了自己的身體的任何一節(jié),如果是,游戲結束;10) 判斷蛇頭是不是撞到餓了任何一面的墻壁了,如果是,游戲結束;11) 若(9)(10)都未發(fā)生,說明蛇活著,判斷蛇是否吃到了食物,如果吃到了食物,則要先清除食物,并設置下一個食物的出現(xiàn);同時,還要將蛇的身體增長一節(jié);屏幕顯示的分數(shù)還要增加。12) 將蛇在屏幕顯示,然后游戲延遲一會兒,給玩家一點反應時間;13) 蛇在移動的過程中,蛇頭不斷前進,末尾一節(jié)不斷清除,這樣才能保證蛇在移動的過程中的正確性;14) 當玩家按下一個鍵時,接收該按鍵,并判斷是不是“ESC”;如果是,則退出游戲,如果不是
14、則進行(15)步的判斷;15) 判斷當前按鍵的方向是否與蛇頭的方向相反,如果相反,則不做處理,只要不是相反的,則就改變蛇的移動方向。16) 回到(14)步去執(zhí)行,一直循環(huán)往復,直到游戲結束。(7),gameover(),游戲結束函數(shù)這一模塊,是在蛇頭碰到了自己的身體的任何一節(jié),或者是撞到了墻壁時,游戲結束時,顯示在屏幕上的。用到的函數(shù)與推薦精選help()中的用的文本輸出函數(shù)一樣。同時,結束是,還要調(diào)用分數(shù)顯示函數(shù)。(8),closegraph(),關閉圖形驅(qū)動函數(shù)當游戲結束界面顯示完成后,要正式退出圖形模式。退出圖形模式的函數(shù)為closegraph()。函數(shù)原型:void far close
15、graph(void)。在關閉圖形模式之前應該線讓屏幕暫停一下,所以要調(diào)用getch()函數(shù)。三、系統(tǒng)實現(xiàn)注:流程圖的繪制使用的是:Microsoft Office Visio 20101,help()函數(shù)流程圖推薦精選2,drawfence()函數(shù)流程圖3,printscore()函數(shù)流程圖推薦精選4,playgame()函數(shù)流程圖(1),貪吃蛇游戲的控制函數(shù)執(zhí)行的流程圖(2),playgame()函數(shù)的判斷并畫出食物的程序片段推薦精選(3),playgame()函數(shù)的計算蛇的每一節(jié)的位置的程序片段(4),playgame()函數(shù)的計算出蛇頭的位置程序片段(5),playgame()函數(shù)的判
16、斷是否蛇頭撞到自身及蛇頭撞到墻壁的程序片段推薦精選(6),playgame()函數(shù)的判斷蛇是否吃到食物的程序片段(7),playgame()函數(shù)的畫出蛇的每一節(jié)的程序片段推薦精選(8),playgame()函數(shù)的清除蛇的最后一節(jié)的程序片段推薦精選5,gameover(),游戲結束函數(shù)四、系統(tǒng)測試該部分主要編寫測試計劃,記錄測試的過程和結果,并對測試結果進行分析總結,優(yōu)化系統(tǒng)。1,功能測試測試功能測試結果用例1測試開始游戲和幫助信息打開游戲主界面,畫面顯示游戲名稱和相關的游戲幫助用例2測試蛇的運動 屏幕顯示貪吃蛇在屏幕運動推薦精選用例3測試控制蛇的方向鍵通過鍵盤上,按鍵的指揮,蛇能夠正確地移動用例4測試食物是否顯示游戲開始后,屏幕上顯示食物出現(xiàn)用例5測試蛇頭吃食物功能當蛇頭碰到食物后,蛇的身體增長一節(jié),食物消失,并在其它地方出現(xiàn)新的食物用例6測試分數(shù)顯示功能在屏幕上方有分數(shù)的顯示,并且每當貪吃蛇吃到食物時,分數(shù)會增加。用例7測試游戲結束功能當貪吃蛇撞到自己和墻壁時,游戲會結束,并且顯示“ga
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 共同經(jīng)營貨車合同范本
- 個人法制宣傳教育工作總結
- 個人工作崗位調(diào)動申請書
- 業(yè)主授權委托書
- 個人之間合伙合同范本
- 企業(yè)餐廳布置租房合同范本
- 買賣房合同范本簡易
- 原材供貨合同范本
- 與律師事務所簽署合同范本
- 前程無憂合同范本
- 高中主題班會 悟哪吒精神做英雄少年-下學期開學第一課主題班會課件-高中主題班會課件
- 2025電力物資檢儲配一體化建設技術導則
- 新學期 開學第一課 主題班會課件
- 民法典合同編講座
- DBJ51-T 198-2022 四川省既有民用建筑結構安全隱患排查技術標準
- 《干細胞及其應用》課件
- 課題申報書:生成式人工智能提升中小學教師數(shù)字素養(yǎng)的路徑探究
- 臨床婦產(chǎn)題庫+參考答案
- 數(shù)據(jù)安全重要數(shù)據(jù)風險評估報告
- 起重機械質(zhì)量安全風險管控清單(起重機械制造、安裝、修理、改造單位)
- GB_T 27025-2019 檢測和校準實驗室能力的通用要求(高清版)
評論
0/150
提交評論