推箱子游戲需求分析報告_第1頁
推箱子游戲需求分析報告_第2頁
推箱子游戲需求分析報告_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

推箱子嬉戲楷體,3號字,加粗楷體,3號字,加粗一、實訓任務和目的本實訓要求學生對“推箱子嬉戲”進行分析、設計及編程實現(xiàn)。本實訓對實訓項目已經作了較為具體的分析及相關學問講解,通過實訓,促使學生專業(yè)技能得到綜合訓練,讓學生了解軟件開發(fā)基本技術和工作過程。同時,本實訓中將會讓學生了解圖形界面設計基本技術。通過本系統(tǒng)的開發(fā),同學門要了解軟件開發(fā)的整個過程,駕馭軟件開發(fā)的基本方法,提前培育同學們從事軟件行業(yè)應具備的基本素養(yǎng)和實力,為以后的學習作一個鋪墊。系統(tǒng)開發(fā)步驟軟件開發(fā)一般有以下步驟:1. 問題定義2. 可行性探討3. 需求分析(需求分析階段)4. 總體設計5. 具體設計6. 編碼及單元測試7. 綜合測試8. 軟件維護(安裝調試階段)其中1、2、3步可以整合為調研分析階段,4、5、6、7步可以整合為項目實施階段。依據(jù)實際本次軟件項目實訓的實際狀況,我們著重進行系統(tǒng)設計和編碼實施。該階段主要工作有:1.系統(tǒng)結構的總體設計確定系統(tǒng)的總體結構,包括整個系統(tǒng)分哪些部分,各部分之間有什么聯(lián)系以及已確定的需求對這些組成部分如何安排等方面。2.數(shù)據(jù)結構定義定義軟件處理的對象——數(shù)據(jù)的基本結構、存儲技術,定義數(shù)據(jù)處理流程。3.具體設計對各功能模塊的功能定義,說明模塊之間的調用關系和接口(參數(shù))。4.編碼及調試依據(jù)具體設計的要求,依據(jù)統(tǒng)一的要求和編碼規(guī)范,用C語言編碼實現(xiàn),同時負責每個模塊的獨立調試。5.綜合測試軟件開發(fā)的后期是軟件裝配和綜合測試。軟件測試一般有專業(yè)的測試人員,同時通過發(fā)布運用試用版(體驗版)等方式讓用戶體驗、測試。在多次測試改進后,才正式發(fā)布。三、系統(tǒng)功能需求描述經典的推箱子是一個來自日本的古老嬉戲,目的是在訓練人的邏輯思索實力。在一個狹小的倉庫中,要求把木箱從起先位置推放到指定的位置。在倉庫有障礙物,稍不當心就會出現(xiàn)箱子無法移動或者通道被堵住的狀況,而且箱子只能推,不能拉,所以須要奇妙的利用有限的空間和通道,合理支配移動的次序和位置,才能順當?shù)耐瓿扇蝿?。本嬉戲一?關,由易到難,每一關都有初化、按鍵處理、重置及退出功能。(1)初始化包括屏幕初始化和每一關卡的初始化,屏幕被初始化寬80像素,高25像素。(2)按鍵處理包括移動小人和移動箱子,通過移動上下左右鍵來限制小人的移動,從而推動箱子,以把箱子推到指定的目的地為過關。(3)每一關都可以重置,按空格鍵可以重置當前關。(4)按Esc鍵可以在任何時候退出嬉戲。四、技術要求定義二維數(shù)組charstatus[20][20],用于記錄屏幕一各點的狀態(tài)。其中,“0”表示什么都沒有,“b”表示箱子,“w”表示目的地,“i”表示箱子在目的地。首先將屏幕20*20范圍內的狀態(tài)初始化為0,然后依據(jù)具體狀況,在畫箱子時,將箱子所在點的狀態(tài)改為“b”;在畫墻壁時,將墻壁所在點的狀態(tài)改為“w”;在畫目的地時,將目的地所在點的狀態(tài)改為“m”;當箱子被推到目的地時,箱子所在點的狀態(tài)改為“i”,假如每一關中全部目的地的狀態(tài)都為“i”,則說明該關已完成。定義字符指針charfar*printScreen=(charfar*)0xB8000000,用于在屏幕上輸出字符。彩色顯示器的字符緩沖區(qū)首地址為0xB8000000,每一個字符占2個字節(jié)(第一個字節(jié)為ASCII值,其次個字節(jié)為顏色值),字符模式下屏幕寬80像素,高25像素,一屏可以寫80*25個字符。定義結構體typedefstructwiner{intx;inty;structwiner*p;}winer;定義結構體structwiner用于推斷每一關是否已完成。其中x用于存放目的地的橫坐標,y用于存放目的地的縱坐標。假如全部表示目的地坐標對應的狀態(tài)都為“i”,即箱子在目的地,則表示已經過關,可以進入下一關。該結構體的初始化在每一關的初始化時進行。五、系統(tǒng)功能模塊劃分本程序采納模塊化設計,包括5個模塊,分別是初始化模塊、畫圖模塊、移動箱子模塊、移動小人模塊和功能限制模塊。各個模塊的功能描述如下:(1)初始化模塊。該模塊包括屏幕初始化和嬉戲第一關的初始化。屏幕初始化用于輸出歡迎信息和操作提示,嬉戲每一關的初始化是構建每一關的關卡。(2)畫圖模塊。該模塊主要是被其它模塊調用,用于畫墻、在空地畫箱子、在目的地畫箱子、畫小人和畫目的地。(3)移動箱子模塊。該模塊用于移動箱子,包括目的地之間、空地之間和目的地和空地之間的箱子移動。(4)移動小人模塊。該模塊用于限制小人移動,從而推動箱子到目的地。(5)功能限制模塊。該模塊是幾個功能函數(shù)的集合,包括屏幕輸出功能、指定位置狀態(tài)推斷功能和關卡重置功能。嬉戲從第一關起先,按上下左右方向鍵限制小人移動來推動箱子,可以在嬉戲中的任何時候按Esc鍵退出。假如嬉戲無勝利希望,可以按空格鍵回到當前任務的起先狀態(tài);假如勝利完成當前關,則進入下一關,假如當前關是最終一關,則顯示通關信息,提示嬉戲結束。六、具體設計及實現(xiàn)宋體,4號字加粗宋體,4號字加粗(1)課題中的函數(shù)原型及功能說明。1、putoutChar()函數(shù)原型:voidputoutChar(inty,intx,charch,charfc,charbc)putoutChar()函數(shù)在屏幕上的指定位置輸出指定的字符。其中,x、y指明輸出的位置,ch表示輸出的字符,fc表示輸出的字符顏色,bc表示背景色。2、printWall()函數(shù)原型:voidprintWall(intx,inty)printWall()函數(shù)用于畫墻壁,傳入?yún)?shù)x、y指明位置。該函數(shù)調用putoutChar()進行輸出,以黑色為背景畫綠色墻,用小方塊表示墻(ASCII值為219)。3、printBox()函數(shù)原型:voidprintBox(intx,inty)printBox()函數(shù)用于在非目的地畫箱子,傳入?yún)?shù)x、y指明位置。該函數(shù)調用putoutChar()進行輸出,以黑色為背景白色箱子,用ASCII值為10的字符表示箱子。4、printBoxDes()函數(shù)原型:voidprintBoxDes(intx,inty)printBoxDes()函數(shù)用于在目的地畫箱子,傳入?yún)?shù)x、y指明位置。該函數(shù)調用putoutChar()進行輸出,以黑色為背景畫黃色箱子,仍用ASCII值為10的字符表示箱子。5、printDestination()函數(shù)原型:voidprintDestination(intx,inty)printDestination()函數(shù)用于畫目的地,傳入?yún)?shù)x、y指明位置。該函數(shù)調用putoutChar()進行輸出,以黑色為背景畫黃色目的地,專心型表示(ASCII值為003)。6、printDestination1()函數(shù)原型:voidprintDestination1(intx,inty,winer**win,winer**pw)printDestination1()函數(shù)和printDestination()函數(shù)功能基本相同,都是畫目的地函數(shù),但是printDestination1()增加了記錄每一個目的地位置的功能。其中x、y指明目的地的位置,每一關的全部目的地位置存放在結構體structwiner中,形成一條鏈表,**winer返回鏈表的頭,**pw則指向鏈表的尾部。7、printMan()函數(shù)原型:voidprintMan(intx,inty)printMan()函數(shù)用于畫小人。X、y指明畫的位置。該函數(shù)通過軟中斷來實現(xiàn),首先設置寄存器AX的高位和低位,設置高位0xa表示在光標位置顯示字符;設置低位02(ASCII值),表示輸出的字符;然后設置寄存器CX為01,表示重復輸出的次數(shù),這里只輸出一次;最終產生類型為0x10的中斷,表示顯示器輸出。8、init()函數(shù)原型:voidinit()init()函數(shù)用于初始化屏幕。該函數(shù)首先用兩個for循環(huán)初始化屏幕20*20范圍內的狀態(tài),初始化為0,以后依據(jù)實際狀況重新賦值;然后設置屏幕輸出狀態(tài),設置寄存器AX的高位為0,低位為3,表示以80*25的彩色方式顯示;最終移動光標到指定的位置輸出操作提示信息以及版權信息。9、初始化嬉戲函數(shù)原型:winer*initStep1()、winer*initStep2()、winer*initStep3()、winer*initStep4()這幾個函數(shù)分別初始化嬉戲的第一關到第四關。這些函數(shù)的功能和實現(xiàn)步驟相像。首先依據(jù)須要在指定的位置畫墻壁和畫箱子,在這里可以設置嬉戲的難度,初始化的墻壁越困難,箱子越多,則嬉戲就越難。嬉戲的第一關至第四關難度依次增加。然后分別調用printDestination1()和printMan()函數(shù)畫目的地和小人。函數(shù)返回包含各個目的地位置的鏈表。10、移動箱子函數(shù)原型:voidmoveBoxSpacetoSpace(intx,inty,chara)、voidmoveBoxDestoSpace(intx,inty,chara)、voidmoveBoxSpacetoDes(intx,inty,chara)、voidmoveBoxDestoDes(intx,inty,chara)這幾個函數(shù)實現(xiàn)的功能分別是人空地移動箱子到空地、從目的地移動箱子到空地、從空地移動箱子到目的地和中從目的地移動箱子到目的地。X、y指明小人當前所處的位置,字符a表示移動的方向,有“u”、“d”、“l(fā)”和“r”4個值,分別表示向上、下、左、右移動。這幾個函數(shù)的實現(xiàn)原理大致相像。對于前面兩個函數(shù),首先推斷移動的方向,人小人所在的位置沿著移動的方向移動一步畫小人,移動兩步畫箱子(調用printBox()函數(shù)),并設置狀態(tài)為“b”;對于后面兩個參數(shù),首先推斷移動的方向,從小人所在的位置沿著移動方向移動一步畫小人,移動兩上在目的地畫箱子(調用printBoxDes()函數(shù)),并設置狀態(tài)為“i”,表明箱子在目的地上。11、judge()函數(shù)原型:intjudge(intx,inty)judge()依據(jù)結構體struct[x][y]中存的值來推斷該點的狀態(tài)。12、move()函數(shù)原型:voidmoid(intx,inty,chara)。Move()函數(shù)依據(jù)按下的鍵來處理小人的移動。小人移動的方向有上(“u”)、下(“d”)、左(“l(fā)”)、右(“r”)4個,4個方向的處理方式一樣。首先推斷移動的方向,然后依據(jù)小人的當前位置、下一步位置以及下下一步位置所在的狀態(tài)進行處理。若下一步所在位置的狀態(tài)為墻壁(“w”),則干脆退出,不作任何處理。若下一步所在位置的狀態(tài)為目的地(“i”)或者什么都沒有(“0”),則:若當前位置的狀態(tài)為目的地,則在當前位置畫目的地(調用printDestination()函數(shù))、在下一步位置畫小人(調用printMan()函數(shù))。若當前位置的狀態(tài)為非目的地,則輸出空格清空當前位置的小人,并在下一步位置畫小人(調用printMan()函數(shù))。若下一步所在位置的狀態(tài)為箱子(“b”),則:①假如下下一步位置的狀態(tài)為“0”,則把箱子從空地移動到空地(調用moveBoxSpacetoSpace()函數(shù)),然后把光標移動到下一步位置(假如當前位置的狀態(tài)為目的地,則應先畫目的地(調用printDestinanion()函數(shù)))。②假如下下一步位置的狀態(tài)為目的地,則把箱子從空地移動到目的地(調用moveBoxSpacetoDes()函數(shù)),然后把光標移動到下一步位置(假如當前位置的狀態(tài)為目的地,則應先畫目的地(調用printDestination()函數(shù)))。③其它狀況則干脆返回,不作任何處理。若下一步所在位置的狀態(tài)為箱子在目的地(“i”),則:假如下下一步位置的狀態(tài)為“0”,則把箱子從目的地移動到空地(調用moveBoxDestoSpace()函數(shù)),然后把光標移動到下一步位置(假如當前位置的狀態(tài)為目的地,則應先畫目的地(調用printDestination()函數(shù)))。假如下下一步位置的狀態(tài)為目的地,則把箱子從目的地移動到目的地(調用moveBoxDestoDes()函數(shù)),然后把光標移動到下一步位置(假如當前位置的狀態(tài)為目的地,則應先畫目的地(調用printDestination()函數(shù)))。其它狀況則干脆返回,不作任何處理。13、reset()函數(shù)原型:v

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論