![匯編語(yǔ)言推箱子課程設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/90a96513-708b-460c-aafd-bd8f301d1c40/90a96513-708b-460c-aafd-bd8f301d1c401.gif)
![匯編語(yǔ)言推箱子課程設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/90a96513-708b-460c-aafd-bd8f301d1c40/90a96513-708b-460c-aafd-bd8f301d1c402.gif)
![匯編語(yǔ)言推箱子課程設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/90a96513-708b-460c-aafd-bd8f301d1c40/90a96513-708b-460c-aafd-bd8f301d1c403.gif)
![匯編語(yǔ)言推箱子課程設(shè)計(jì)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/90a96513-708b-460c-aafd-bd8f301d1c40/90a96513-708b-460c-aafd-bd8f301d1c404.gif)
![匯編語(yǔ)言推箱子課程設(shè)計(jì)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/3/90a96513-708b-460c-aafd-bd8f301d1c40/90a96513-708b-460c-aafd-bd8f301d1c405.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘 要本次課程設(shè)計(jì)是通過(guò)編寫(xiě)匯編語(yǔ)言程序,實(shí)現(xiàn)字符圖形的顯示,我們這組是每人用匯編語(yǔ)言程序?qū)崿F(xiàn)不同的字符顯示,我的是顯示字符安全。具體實(shí)現(xiàn)方法可以在DOS環(huán)境下完成。編寫(xiě)完程序后分析并理解每條程序的意思,并解釋主要程序的意思,最后調(diào)試出所要求的字符。在程序編寫(xiě)前,我首先對(duì)自己顯示的圖形進(jìn)行了設(shè)計(jì),確定了每個(gè)數(shù)字相對(duì)于前一個(gè)數(shù)字的位置,以便在編寫(xiě)程序的時(shí)候正確定義字符的屬性,也為在顯示的時(shí)候能夠顯示較好的效果,打下了基礎(chǔ)。本次實(shí)驗(yàn)實(shí)驗(yàn)的編寫(xiě)環(huán)境是MASM,編譯、鏈接也是在該環(huán)境下實(shí)現(xiàn)的。程序的運(yùn)行我使用的是DOS環(huán)境。通過(guò)參考網(wǎng)上的一些原程序,我發(fā)現(xiàn)要編寫(xiě)好該程序,首先應(yīng)該對(duì)BIOS的中斷10熟
2、悉,因此程序編寫(xiě)前,我先認(rèn)真學(xué)習(xí)了該BIOS中斷的有關(guān)功能。萬(wàn)事開(kāi)頭難,一旦了解了設(shè)計(jì)此程序的原理,并在此基礎(chǔ)上掌握相關(guān)的技術(shù),其他的工作也就跟著展開(kāi)來(lái)。 本次課程設(shè)計(jì),是使用匯編作為開(kāi)發(fā)語(yǔ)言實(shí)現(xiàn)功能要求??偹苤?,匯編是一個(gè)低級(jí)語(yǔ)言,對(duì)硬件有很大的依賴(lài)性,在使用上也不及高級(jí)語(yǔ)言方便,但其在執(zhí)行效率上比高級(jí)語(yǔ)言有很大的優(yōu)勢(shì)。本次課程設(shè)計(jì),一方面讓我們?cè)俅问煜R編指令,再次對(duì)算法的設(shè)計(jì)有一定的要求。另一方面讓我們對(duì)較大匯編程序的編寫(xiě)有一個(gè)清晰的過(guò)程,學(xué)習(xí)把一個(gè)教大問(wèn)題分解成若干個(gè)小問(wèn)題,即子程序是一個(gè)良好的編程習(xí)慣。掌握匯編指令,學(xué)習(xí)的理論知識(shí)應(yīng)用于解決實(shí)際的問(wèn)題。關(guān)鍵詞:推箱子,休閑娛樂(lè),拓展
3、思維AbstractThis course is designed by write assembly language program to realize the character graphic display, each of our group is in assembly language program to realize the different characters, according to my is the character - security. Concrete implementation method can be done in the DOS env
4、ironment. After writing the program analysis and understand the meaning of each program, and explain the meaning of the main program, the final debugging the required characters. Before I write, I first has carried on the design to their own display graphics, identified before every number relative
5、to the position of a number, so that at the time of write programs correctly define the character attributes, also for the display of time can show good effect, laid the foundation. This experiment experimental writing environment is MASM, compile, link, also is in the ?The curriculum design, assemb
6、ly as a development language realization is the use of functional requirements. Known, the assembly is a low-level language, have great dependence on hardware, also as a high-level language in use is convenient, but its on the execution efficiency than a high-level language has a great advantage. Th
7、e curriculum design, on the one hand, let us be familiar with assembly instruction again and again to the design of algorithm has certain requirements. On the other hand let us on large assembler. Write a clear, the process of learning a teaching big problem is decomposed into several small problems
8、, namely the subroutine is a good programming habits. Master the assembly instruction, learning theoretical knowledge is applied to solve the actual problem.Key words: Sokoban game, recreation, creative thinking目 錄摘要11、緒論41.1課題研究背景和意義41.2推箱子游戲發(fā)展現(xiàn)狀41.3設(shè)計(jì)方案52、程序設(shè)計(jì)說(shuō)明及代碼72.1初始化模塊72.2功能控制模塊(功能實(shí)現(xiàn))122.3游戲數(shù)
9、據(jù)模塊162.4游戲設(shè)計(jì)模塊182.4.1. 數(shù)據(jù)類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)18設(shè)定數(shù)據(jù)結(jié)構(gòu)183、游戲數(shù)據(jù)流程和設(shè)計(jì)方案203.1數(shù)據(jù)流程和功能介紹203.2設(shè)計(jì)目的203.3主流程界面設(shè)計(jì)203.4游戲設(shè)計(jì)任務(wù)和功能214.程序調(diào)試記錄245總結(jié)28參考文獻(xiàn)29致謝301、緒論1.1課題研究背景和意義推箱子是一款來(lái)自日本的古老游戲,其設(shè)計(jì)目的是訓(xùn)練人的邏輯思維能力。游戲場(chǎng)景一般是設(shè)定在空間狹小的倉(cāng)庫(kù)中,要求把箱子擺放到指定位置。這就要求玩家巧妙的運(yùn)用有限的空間和通道,合理的安排箱子的位置和移動(dòng)次序才可能完成任務(wù)。隨著計(jì)算機(jī)游戲的發(fā)展,很多編程愛(ài)好者基于該游戲的思想開(kāi)發(fā)了出各種版本、各種類(lèi)型的推箱子。這
10、其中也包括很多手機(jī)版本的實(shí)現(xiàn),伴隨著手機(jī)與計(jì)算機(jī)的普及,很快推箱子游戲便進(jìn)入了千家萬(wàn)戶(hù)。如今,游戲機(jī)風(fēng)行的程度,是第一臺(tái)電子游戲機(jī)的研制者諾蘭?布什納爾先生始料不及的。在全世界最大的城市,直至最小的村莊,從紐約最輝煌的游樂(lè)場(chǎng),到高加索最小的鄉(xiāng)鎮(zhèn)兒童娛樂(lè)點(diǎn),在千家萬(wàn)戶(hù),正在進(jìn)行著千千萬(wàn)萬(wàn)這樣的“戰(zhàn)斗”,伴隨著無(wú)數(shù)成功與失敗,興奮與懊喪。游戲機(jī)帶來(lái)了一個(gè)全球性的瘋狂癥,其他任何娛樂(lè)與之相比都望塵莫及。然而,究竟是什么原因使游戲機(jī)如此風(fēng)行呢? 在回顧了游戲機(jī)發(fā)展簡(jiǎn)史之后,我們不難悟出,技術(shù)進(jìn)步在游戲機(jī)發(fā)展過(guò)程中起到了極大的促進(jìn)作用。但是,技術(shù)進(jìn)步絕不是游戲機(jī)風(fēng)行的唯一因素。隨著終端設(shè)備開(kāi)發(fā)
11、能力的加強(qiáng),作為娛樂(lè)終端的游戲機(jī)也得到了很大程度的發(fā)展。這也加速了游戲機(jī)在全球風(fēng)行程度,所以對(duì)于游戲機(jī)的研究和設(shè)計(jì)具有很重要的意義,這也是本課題研究的來(lái)源。1.2推箱子游戲發(fā)展現(xiàn)狀本文針對(duì)推箱子游戲機(jī)的設(shè)計(jì)首先介紹了選題的要求,之后詳細(xì)敘述了軟件和硬件的設(shè)計(jì)過(guò)程。最后論文對(duì)設(shè)計(jì)進(jìn)行了總結(jié),對(duì)設(shè)計(jì)中可以進(jìn)一步改善的地方提出了建議。在時(shí)鐘脈沖的作用下,各個(gè)按鍵都能按照事先設(shè)定好的規(guī)則進(jìn)行游戲控制。確定鍵能使界面從初始化顯示切換到游戲界面顯示,上下左右鍵控制箱子的移動(dòng)方向,如果可以移動(dòng)則移動(dòng)方塊同時(shí)跟蹤人物的位置及刷新動(dòng)態(tài)數(shù)組的內(nèi)容。在游戲的同時(shí)程序會(huì)隨時(shí)記錄玩家所走的游戲步數(shù)、游戲時(shí)間,直至本關(guān)通
12、過(guò),在進(jìn)入下一關(guān)的同時(shí)更新地圖并刷新游戲步數(shù)和時(shí)間。選關(guān)鍵用于選擇游戲關(guān)數(shù),在游戲過(guò)程中這個(gè)鍵任何時(shí)候都有效,當(dāng)按下選關(guān)鍵后,游戲地圖返回第一關(guān),再次按下時(shí)游戲進(jìn)入二關(guān),這樣每按下一次鍵游戲關(guān)數(shù)加一,如果游戲到了第最后一關(guān)將自動(dòng)返回第一關(guān)1.3設(shè)計(jì)方案1.3.1. 模塊劃分本游戲分五個(gè)模塊(1)初始化模塊,對(duì)游戲界面進(jìn)行初始化操作,包括界面切換、控制聲音播放和游戲的暫停與恢復(fù),以及手機(jī)返回鍵的設(shè)置。(2)功能實(shí)現(xiàn)模塊,主要是對(duì)游戲中各個(gè)環(huán)節(jié)進(jìn)行繪制,設(shè)計(jì)出系統(tǒng)地圖,記錄玩家所用步驟,對(duì)玩家觸屏的設(shè)定,針對(duì)不同的手機(jī)分辨率繪制界面,音樂(lè)功能調(diào)用,游戲中所有文字的提示信息以及游戲中背景和文字顏色大
13、小等設(shè)置的實(shí)現(xiàn)。(3)游戲設(shè)計(jì)模塊,實(shí)現(xiàn)玩家控制小烏龜?shù)牟僮鳎怪軌虿僮飨渥拥礁鱾€(gè)位置,以完成游戲設(shè)定的任務(wù)。(4)游戲數(shù)據(jù)模塊,主要是對(duì)玩家編輯的自定義地圖和玩家選擇系統(tǒng)設(shè)置狀態(tài)的保存,以及游戲數(shù)據(jù)合理性的判斷。(5)功能控制模塊,控制游戲功能的實(shí)現(xiàn),包括創(chuàng)建菜單、調(diào)用系統(tǒng)音樂(lè)、獲取當(dāng)前系統(tǒng)狀態(tài)、獲取游戲界面圖標(biāo)等參數(shù)、保存游戲。1.3.2 系統(tǒng)功能結(jié)構(gòu)圖圖1.1系統(tǒng)功能結(jié)構(gòu)圖2、程序設(shè)計(jì)說(shuō)明及代碼2.1初始化模塊(1)設(shè)計(jì)游戲所需的一個(gè)簡(jiǎn)單的窗口應(yīng)用程序,程序預(yù)處理部分包括加載頭文件、定義全局變量和定義數(shù)據(jù)結(jié)構(gòu),并對(duì)它們進(jìn)行初始化工作,游戲從第一關(guān)開(kāi)始,按上下左右方向鍵控制小人移動(dòng)來(lái)推動(dòng)
14、箱子,可以在游戲中的任何時(shí)候按Esc鍵退出。如果游戲無(wú)成功希望,可以按空格鍵回到當(dāng)前任務(wù)的開(kāi)始狀態(tài);如果成功完成當(dāng)前關(guān),則進(jìn)入下一關(guān),如果當(dāng)前關(guān)是最后一關(guān),則顯示通關(guān)信息,提示游戲結(jié)束?!境绦蛉缦隆浚?386.model flat,stdcalloption casemap:noneinclude CBox.incinclude StoreHouse.inc.const MAP_TOP equ 32 MAP_LEFT equ 1 xBmBack dd 0 xBmWall dd 30 xBmRoad dd 60 xBmBox1 dd 90 xBmBox2 dd 120 xBmObject dd
15、150 xBmMan dd 180 szCaption db 'RedBox',0 szLoadError db 'Load Resource Error! ',0 szAlreadyMaxGate db 'Already Max Gate!',0 szOutOfRange db 'Out of Range!',0 szSuccessMsg db 'Your are success!',13,10,'Are you want to next gate?',0 FmtStr db 'val =
16、 %d',0 FmtGate db ' - No.%d',0.data? bmToolbar dd ? BackDc dd ? hBitMap dd ? szErrorMessage db 256 dup (?) Map db 14D*12D dup (?) ; 14 x 12 Grid ManXPos dd ? ManYPos dd ? CurrGate dd ? CurrStep dd ?.codestart:invoke GetModuleHandle,NULLmov hInstance,eaxinvoke GetCommandLinemov CommandLin
17、e,eaxinvoke InitCommonControlsinvoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULTinvoke ExitProcess,eaxWinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORDLOCALwc:WNDCLASSEXLOCALmsg:MSGmovwc.cbSize,SIZEOF WNDCLASSEXmovwc.style,CS_HREDRAW or CS_VREDRAWmovwc.lpfnWndProc,OF
18、FSET WndProcmovwc.cbClsExtra,NULLmovwc.cbWndExtra,DLGWINDOWEXTRApushhInstpopwc.hInstancemovwc.hbrBackground,COLOR_BTNFACE+1movwc.lpszMenuName,OFFSET MenuNamemovwc.lpszClassName,OFFSET ClassNameinvoke LoadIcon,NULL,IDI_APPLICATIONmovwc.hIcon,eaxmovwc.hIconSm,eaxinvoke LoadCursor,NULL,IDC_ARROWmovwc.h
19、Cursor,eaxinvoke RegisterClassEx,addr wcinvoke CreateDialogParam,hInstance,addr DlgName,NULL,addr WndProc,NULLinvoke ShowWindow,hWnd,SW_SHOWNORMALinvoke UpdateWindow,hWnd.while TRUEinvoke GetMessage,addr msg,NULL,0,0 .BREAK .if !eaxinvoke TranslateMessage,addr msginvoke DispatchMessage,addr msg.endw
20、moveax,msg.wParamretWinMain endpWndProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAMLOCAL ps :PAINTSTRUCTLOCAL Dc:HDCmoveax,uMsg.if eax = WM_KEYDOWN invoke KeyDownProc,wParam.elseif eax=WM_INITDIALOGpushhWinpophWndinvoke GetDlgItem,hWin,IDC_TBRMAINinvoke DoToolBar,hInstance,eaxinvoke LoadRes
21、.if eax = FALSE invoke MessageBox,hWin,Addr szErrorMessage, Addr szLoadError,MB_ICONERROR.endifinvoke InitStBarinvoke SelectGate,1.elseif eax=WM_COMMANDmoveax,wParamandeax,0FFFFh.if eax=IDM_FILE_EXITinvoke SendMessage,hWin,WM_CLOSE,0,0.elseif eax=IDM_HELP_ABOUTinvoke ShellAbout,hWin,addr AppName,add
22、r AboutMsg,NULL.elseif eax = IDC_TBB_NEW invoke SelectGate,CurrGate.elseif eax = IDC_TBB_PREV mov eax, CurrGate dec eax invoke SelectGate,eax.elseif eax = IDC_TBB_NEXT invoke NextGate.elseif eax = IDC_TBB_ABOUT invoke ShellAbout,hWnd,Addr AppName,Addr AboutMsg,NULL .endif.elseif eax=WM_PAINT invoke
23、BeginPaint,hWin,Addr ps mov Dc,eax invoke WMPaint,Dc invoke EndPaint,hWin,Addr ps.elseif eax=WM_CLOSEinvoke DestroyWindow,hWin.elseif uMsg=WM_DESTROY invoke FreeResinvoke PostQuitMessage,NULL .elseinvoke DefWindowProc,hWin,uMsg,wParam,lParamret.endifxor eax,eaxret2.2功能控制模塊(功能實(shí)現(xiàn))(2)小人移動(dòng)的方向有4個(gè),move()函
24、數(shù)(處理小人移動(dòng)的函數(shù))對(duì)這4個(gè)方向移動(dòng)的處理都一致,只是調(diào)用函數(shù)時(shí)的參數(shù)有所不同。首先判斷小人移動(dòng)的方向,然后根據(jù)小人所處世的當(dāng)前狀態(tài)、下一步狀態(tài)或者下下一步狀態(tài)進(jìn)行適當(dāng)?shù)奶幚?。KeyDownProc endpManMove proc vKey :DWORDLOCAL NewX:DWORDLOCAL NewY:DWORDLOCAL NewX2 :DWORDLOCAL NewY2 :DWORDLOCAL M1 :byteLOCAL M2 :byteLOCAL nPos1 :DWORDLOCAL nPos2 :DWORD push esi mov eax,ManXPos mov NewX,eax
25、 mov NewX2,eax mov eax,ManYPos mov NewY,eax mov NewY2,eax mov eax ,vKey .if eax = VK_UP dec NewY dec NewY2 dec NewY2 .elseif eax = VK_DOWN inc NewY inc NewY2 inc NewY2 .elseif eax = VK_LEFT dec NewX dec NewX2 dec NewX2 .elseif eax = VK_RIGHT inc NewX inc NewX2 inc NewX2 .else ret .endif mov esi ,off
26、set Map ; Pos = y*14 + x ; Get M1 mov eax,NewY mov ebx,14D mul bx add eax,NewX mov ebx,eax mov nPos1,eax mov al ,esiebx mov M1,al ; Get M2 mov eax,NewY2 mov ebx,14D mul bx add eax,NewX2 mov ebx,eax mov nPos2,eax mov al ,esiebx mov M2,al mov al,M1 .if (al = MAP_ROAD | al = MAP_OBJECT ) push NewX pop
27、ManXPos push NewY pop ManYPos .elseif al = MAP_BOX1 ; push box mov al ,M2 .if al = MAP_ROAD ; push ok mov ebx,nPos2 mov al,MAP_BOX1 mov esiebx,al mov ebx,nPos1 mov al,MAP_ROAD mov esiebx,al push NewX pop ManXPos push NewY pop ManYPos .elseif al = MAP_OBJECT mov ebx,nPos2 mov al,MAP_BOX2 mov esiebx,a
28、l mov ebx,nPos1 mov al,MAP_ROAD mov esiebx,al push NewX pop ManXPos push NewY pop ManYPos .endif .elseif al = MAP_BOX2 mov al,M2 .if al = MAP_ROAD mov ebx,nPos2 mov al,MAP_BOX1 mov esiebx,al mov ebx,nPos1 mov al,MAP_OBJECT mov esiebx,al push NewX pop ManXPos push NewY pop ManYPos .elseif al = MAP_OB
29、JECT mov ebx,nPos2 mov al,MAP_BOX2 mov esiebx,al mov ebx,nPos1 mov al,MAP_OBJECT mov esiebx,al push NewX pop ManXPos push NewY pop ManYPos .endif .else .endif invoke Repaint pop esi ret2.3游戲數(shù)據(jù)模塊(3)函數(shù)實(shí)現(xiàn)的功能分別是人空地移動(dòng)箱子到空地、從目的地移動(dòng)箱子到空地、從空地移動(dòng)箱子到目的地和中從目的地移動(dòng)箱子到目的地。X、y指明小人當(dāng)前所處的位置,字符a表示移動(dòng)的方向,有“u”、“d”、“l(fā)”和“r”4個(gè)
30、值,分別表示向上、下、左、右移動(dòng)。這幾個(gè)函數(shù)的實(shí)現(xiàn)原理大致相似。對(duì)于前面兩個(gè)函數(shù),首先判斷移動(dòng)的方向,人小人所在的位置沿著移動(dòng)的方向移動(dòng)一步畫(huà)小人,移動(dòng)兩步畫(huà)箱子,并設(shè)置狀態(tài)為“b”;對(duì)于后面兩個(gè)參數(shù),首先判斷移動(dòng)的方向,從小人所在的位置沿著移動(dòng)方向移動(dòng)一步畫(huà)小人,移動(dòng)兩上在目的地畫(huà)箱子,并設(shè)置狀態(tài)為“i”,表明箱子在目的地上。ManMove endpXYtoPos proc x:DWORD,y:DWORD; pos = y *14 + x Zero-Based mov eax, y mov ebx, 14D mul bx add eax ,x retXYtoPos endpRepaint p
31、roc LOCAL R:RECT invoke GetClientRect,hWnd,Addr R invoke InvalidateRect,hWnd,Addr R,0 retRepaint endpCheck proc ; Check Success and return true or falseLOCAL Result :DWORD push esi push TRUE pop Result lea esi,Map mov ecx, 14D*12D mov ebx ,01: mov al ,esiebx inc ebx cmp al,MAP_OBJECT jz 2 dec ecx jn
32、z 1 jmp ExitCheck2: push FALSE pop ResultExitCheck: mov eax,Result pop esi ret2.4游戲設(shè)計(jì)模塊2.4.1. 數(shù)據(jù)類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)該類(lèi)主要用于對(duì)地圖數(shù)據(jù)的保存與提取,在保存時(shí),判斷玩家編輯的地圖是否合理,如果不合理則提示相應(yīng)信息,只有合理的地圖才能保存。在提取地圖信息的時(shí)候也進(jìn)行一次檢查,如果編輯地圖不合理則載入默認(rèn)設(shè)置。關(guān)鍵代碼及說(shuō)明如下:通過(guò)public static boolean exportDataToFile(int editDataArray)方法將地圖數(shù)據(jù)寫(xiě)入到文件中;通過(guò)public static b
33、oolean checkUserFile()檢查用戶(hù)編輯數(shù)據(jù)是否合理;通過(guò)public static int importDataFromFile()從文件中讀取數(shù)據(jù)載入地圖。2.4.2設(shè)定數(shù)據(jù)結(jié)構(gòu)例如行列數(shù)必須在15*15之間,玩家繪制地圖時(shí),當(dāng)前所選游標(biāo)實(shí)現(xiàn)添加、刪除、替代等功能,判斷玩家是否完成任務(wù)。Check endpInitStBar procLOCAL StbarHandle :DWORD invoke GetDlgItem,hWnd,IDC_SBR1 mov StbarHandle,eax invoke SendMessage,StbarHandle,SB_SIMPLE,1,0
34、;invoke SendMessage,StbarHandle,SB_SETPARTS,1,150 retInitStBar endpShowMessage proc Val:DWORD push eax invoke wsprintf,Addr szErrorMessage,Addr FmtStr,Val invoke MessageBox,hWnd,Addr szErrorMessage,Addr szCaption,MB_ICONINFORMATION pop eax retShowMessage endpend start3、游戲數(shù)據(jù)流程和設(shè)計(jì)方案3.1數(shù)據(jù)流程和功能介紹本設(shè)計(jì)基本實(shí)現(xiàn)
35、了可以在PC平臺(tái)上運(yùn)行的推箱子游戲,本游戲分五個(gè)模塊:1、初始化模塊;2、功能實(shí)現(xiàn)模塊;3、游戲設(shè)計(jì)模塊;4、游戲數(shù)據(jù)模塊;5、功能控制模塊。本游戲是一款益智類(lèi)游戲,所以操作十分簡(jiǎn)單。游戲中玩家可以用鍵盤(pán)的上、下、左、右鍵控制小人的移動(dòng)位置,也可以直接觸摸手機(jī)屏幕完成相應(yīng)操作。游戲規(guī)則也十分簡(jiǎn)單,玩家在一個(gè)有限空間內(nèi),將木箱放到指定的位置。箱子只能推不能拉,而且一次只能推動(dòng)一個(gè)箱子,勝利條件是把所有箱子都推到目的地。3.2設(shè)計(jì)目的(1)此次的設(shè)計(jì)是開(kāi)發(fā)一款可在PC平臺(tái)上運(yùn)行的推箱子游戲程序,可流暢運(yùn)行游戲,編輯地圖等(2)進(jìn)一步學(xué)習(xí)和掌握匯編語(yǔ)言程序的編寫(xiě)和應(yīng)用的方法,通過(guò)較大規(guī)模程序的編寫(xiě),
36、提高編寫(xiě)匯編語(yǔ)言程序的水平和學(xué)習(xí)程序調(diào)試方法。3.3主流程界面設(shè)計(jì)在策劃推箱子游戲時(shí),首要考慮到要設(shè)計(jì)一個(gè)優(yōu)美的游戲界面,操作起來(lái)更加人性化,即玩家可以用鍵盤(pán)的上、下、左、右鍵控制小烏龜?shù)囊苿?dòng)位置,也可以直接觸摸手機(jī)屏幕完成相應(yīng)操作。在畫(huà)面方面也要更加清新,方便各個(gè)年齡段的玩家使用。我對(duì)這個(gè)游戲的定義是一個(gè)輕量級(jí)的益智游戲,不存在復(fù)雜的情節(jié),做的主要工作為設(shè)計(jì)游戲各關(guān)倉(cāng)庫(kù)的形狀、大小、可通過(guò)區(qū)域、各關(guān)中箱子的初始位置與目的地。當(dāng)然在正式開(kāi)始編寫(xiě)程序時(shí),需要上網(wǎng)搜集了游戲中要用到的圖片、聲音等,收集一些有用的素材。推箱子游戲初始化模塊畫(huà)圖模塊移動(dòng)箱子模塊移動(dòng)小人模塊功能控制模塊圖2.1 界面設(shè)計(jì)
37、圖圖2.2數(shù)據(jù)流程圖3.4游戲設(shè)計(jì)任務(wù)和功能3.4.1. 基本要求 (1)每關(guān)卡箱子數(shù)目不定;(2)主角和箱子只能呆在通道及目標(biāo)位置上移動(dòng),不能穿墻;(3)主角不能穿過(guò)箱子;(4)箱子數(shù)量和目標(biāo)位置數(shù)量相等(但每個(gè)箱子并不和唯一的目標(biāo)位置一 一對(duì)應(yīng));(5)主角可以移動(dòng)和推動(dòng)木箱(響應(yīng)鍵盤(pán)方向鍵);(6)主角只能往前推動(dòng)箱子,不能向后或者向側(cè)面拉箱子;(7)主角不能同時(shí)推動(dòng)兩個(gè)箱子;(8)箱子移動(dòng)方向正前方緊挨墻壁,不可推動(dòng);(9)允許撤銷(xiāo)以及重做游戲步驟;(10)將所有箱子推到設(shè)定位置則通過(guò)本關(guān),自動(dòng)進(jìn)入下一關(guān)卡; (11)記錄每一關(guān)中玩家的移動(dòng)步數(shù);3.4.2. 地圖編輯器(1)可通過(guò)地圖
38、編輯器生成地圖;(2)地圖由小正方塊拼接組成;(3)地圖中每一格可以是墻、通道、木箱、目標(biāo)位置;(4)游戲主角所在位置同時(shí)必須是通道或者目標(biāo)位置;(5)一張地圖中主角數(shù)目有且僅有一個(gè);(6)一張地圖中箱子數(shù)目必須與目標(biāo)位置數(shù)目相等;(7)允許對(duì)正在編輯的地圖清除或者替換某一格中的內(nèi)容;(8)地圖中一格不允許墻、通道、木箱、目標(biāo)位置中兩個(gè)及以上共存,最 后添加的類(lèi)型為該格代表的類(lèi)型; (9)通過(guò)地圖編輯器生成的地圖可以被游戲程序調(diào)用;3.4.3. 擴(kuò)展功能(1)保存自定義地圖,重啟程序后依然可以編輯和調(diào)用運(yùn)行該地圖;(2)屏幕分辨率自適應(yīng);(3)資源文件支持簡(jiǎn)體中文和英文; (4)菜單功能,玩家
39、通過(guò)看目錄按對(duì)應(yīng)的鍵可以進(jìn)入對(duì)應(yīng)的功能菜單,其中1進(jìn)入游戲,2選擇游戲關(guān)卡,3游戲幫助指南 ,4退出游戲。(5) 游戲功能: 玩家可以通過(guò)操縱鍵盤(pán)中的上下左右鍵進(jìn)入游戲進(jìn)行各種操作來(lái)完成游戲。(6)循環(huán)功能:當(dāng)玩家正在游戲的時(shí)候如果某一步走錯(cuò)了,導(dǎo)致游戲無(wú)法完成,可以隨時(shí)重新開(kāi)始游戲來(lái)完成關(guān)卡,游戲過(guò)程中可以隨時(shí)按Ctrl+V退出游戲。(7)順序功能: 當(dāng)玩家完成了某一關(guān)之后,隨著進(jìn)入下一關(guān)門(mén)可以按順序進(jìn)入下一關(guān),繼續(xù)開(kāi)始更有挑戰(zhàn)的關(guān)卡,如果該關(guān)是最后一關(guān),則顯示通關(guān)完成。4.程序調(diào)試記錄程序調(diào)試,是將編制的程序投入實(shí)際運(yùn)行前,用手工或編譯程序等方法進(jìn)行測(cè)試,修正語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤的過(guò)程。這是
40、保證游戲正常運(yùn)行的必不可少的步驟。編完計(jì)算機(jī)程序,得調(diào)試所寫(xiě)程序是否正確,是否能滿足所要求的功能啟動(dòng)游戲后便可直接進(jìn)入游戲主界面,主界面上玩家可以自由選擇對(duì)游戲的操作。該游戲的運(yùn)行步驟與調(diào)試結(jié)果如下:1. 啟動(dòng)游戲后游戲主界面,效果如圖所示。圖3.1游戲啟動(dòng)圖2.當(dāng)你完成某一關(guān)卡時(shí),彈出一對(duì)話框,點(diǎn)擊“確定”進(jìn)行下一關(guān)卡,點(diǎn)擊“取消”繼續(xù)該關(guān)卡。圖3.2通關(guān)圖3. 點(diǎn)擊“,”即可進(jìn)入玩家自己已經(jīng)編輯好的游戲中,界面設(shè)計(jì)和系統(tǒng)設(shè)置的關(guān)卡相同,過(guò)關(guān)之后,自動(dòng)進(jìn)入系統(tǒng)設(shè)置的第一關(guān)卡。效果如圖所示。圖3.3選擇關(guān)卡圖4. 點(diǎn)擊“文件”,即可進(jìn)入玩家自行編譯游戲倉(cāng)庫(kù)中。玩家可以在該標(biāo)題欄中選擇關(guān)卡難度或
41、退出該游戲。圖3.4自行編譯關(guān)卡圖5. 點(diǎn)擊“編譯”,即可進(jìn)入玩家自行編譯游戲倉(cāng)庫(kù)中。玩家可以在游戲的格中按照自己的意愿設(shè)計(jì)關(guān)卡(需要符合游戲自身規(guī)定)。該界面共有9個(gè)選項(xiàng)鍵,分別是墻、路、目的地、箱子、小人、鎖定、刪除、保存、返回主菜單,玩家可以通過(guò)對(duì)應(yīng)的數(shù)字按鍵或直接觸控屏幕實(shí)現(xiàn)對(duì)應(yīng)功能。效果如圖所示。圖3.5 選擇功能圖6. 點(diǎn)擊游戲其他位置時(shí),則彈出如下圖所示的對(duì)話框,點(diǎn)擊“確定”恢復(fù)正常。圖3.6錯(cuò)誤恢復(fù)圖7. 點(diǎn)擊“工具欄”,則可以調(diào)試游戲。該界面介紹了關(guān)于本游戲的一些修改方法。效果如圖所示。圖3.7調(diào)試游戲圖8. 點(diǎn)擊“退出”,則會(huì)退出游戲。圖3.8退出游戲圖5總結(jié)一周的匯編語(yǔ)言課程設(shè)計(jì)結(jié)束了,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度互聯(lián)網(wǎng)醫(yī)療公轉(zhuǎn)私借款合同范本
- 2025年度人工智能智能機(jī)器人銷(xiāo)售合同
- 2025年純蕎面項(xiàng)目投資可行性研究分析報(bào)告
- 2025年度吊車(chē)租賃及維修保養(yǎng)一體化服務(wù)合同
- 2025年度智慧醫(yī)療項(xiàng)目承包經(jīng)營(yíng)管理范本
- 2025年度影視作品宣傳與公關(guān)合作合同模板
- 2025年度新型城鎮(zhèn)化施工總承包管理服務(wù)協(xié)議
- 2024 年中級(jí)經(jīng)濟(jì)《人力資源管理專(zhuān)業(yè)知識(shí)與實(shí)務(wù)》試題及答案
- 執(zhí)行階段查封申請(qǐng)書(shū)
- 2025年度建筑勞務(wù)安全監(jiān)管服務(wù)合同范本
- 骨科的疼痛管理
- 前列腺癌診斷治療指南
- 中國(guó)銀行招聘筆試真題「英語(yǔ)」
- 江蘇省2023年對(duì)口單招英語(yǔ)試卷及答案
- GB/T 35506-2017三氟乙酸乙酯(ETFA)
- GB/T 25784-20102,4,6-三硝基苯酚(苦味酸)
- 特種設(shè)備安全監(jiān)察指令書(shū)填寫(xiě)規(guī)范(特種設(shè)備安全法)參考范本
- 硬筆書(shū)法全冊(cè)教案共20課時(shí)
- 《長(zhǎng)方形的面積》-完整版課件
- 五年級(jí)上冊(cè)英語(yǔ)Module6Unit1Youcanplaybasketballwell外研社課件
- 工業(yè)企業(yè)現(xiàn)場(chǎng)監(jiān)測(cè)工況核查表
評(píng)論
0/150
提交評(píng)論