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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論