匯編課程設(shè)計(jì)打字游戲_第1頁(yè)
匯編課程設(shè)計(jì)打字游戲_第2頁(yè)
匯編課程設(shè)計(jì)打字游戲_第3頁(yè)
匯編課程設(shè)計(jì)打字游戲_第4頁(yè)
匯編課程設(shè)計(jì)打字游戲_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

華北科技學(xué)院課程設(shè)計(jì)說(shuō)明書專業(yè):網(wǎng)絡(luò)工程課程名稱:匯編課程設(shè)計(jì)設(shè)計(jì)題目:打字游戲設(shè)計(jì)設(shè)計(jì)時(shí)間:2023-12-05至2023-12-16評(píng)語(yǔ):_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________評(píng)閱成績(jī):____評(píng)閱教師:___課程設(shè)計(jì)報(bào)告的規(guī)定1、需求分析描述問(wèn)題。簡(jiǎn)述課題要解決的問(wèn)題是什么,有什么規(guī)定和限制條件。2、總體設(shè)計(jì)(程序設(shè)計(jì)組成框圖、流程圖)3、具體設(shè)計(jì)(模塊功能說(shuō)明(如函數(shù)功能、入口及出口參數(shù)說(shuō)明,過(guò)程調(diào)用關(guān)系描述等))4、調(diào)試與測(cè)試:調(diào)試方法,測(cè)試結(jié)果的分析與討論,測(cè)試過(guò)程中碰到的重要問(wèn)題及采用的解決措施5、測(cè)試結(jié)果,用幾組測(cè)試數(shù)據(jù)進(jìn)行測(cè)試算法設(shè)計(jì)的對(duì)的性。6、附錄。源程序清單和結(jié)果:源程序要加注釋。結(jié)果要涉及測(cè)試數(shù)據(jù)和運(yùn)營(yíng)結(jié)果?!秴R編語(yǔ)言》課程設(shè)計(jì)案例問(wèn)題陳述及其需求分析規(guī)定:運(yùn)用匯編語(yǔ)言編寫一個(gè)小的打字游戲內(nèi)容:編寫程序,在打開的菜單頁(yè)面中選擇游戲的難度。難度選擇涉及以下5個(gè)選擇(1)veryslow(2)slow(3)normal(4)fast(5)veryfast在編寫過(guò)程中涉及以下幾個(gè)部分:初始化上部分的字母獲得下落的字母字母下移,同時(shí)覆蓋本來(lái)的字母判斷是否有輸入若無(wú)輸入則下落到最后覆蓋本來(lái)的字符重新進(jìn)行循環(huán)二、總體設(shè)計(jì)主菜單流程圖開始菜單選擇開始菜單選擇輸入選擇難度輸入選擇難度VeryfastfastnormalslowVeryfastfastnormalslowVeryslow開始游戲開始游戲游戲失敗游戲失敗結(jié)束結(jié)束這個(gè)菜單部分重要是為了給不同水平的玩家選擇游戲的速度,菜單上有對(duì)不同難度的描述,有助于玩家的選擇。在選擇過(guò)后會(huì)跳出一個(gè)提醒界面,提醒在游戲時(shí)的一些注意事項(xiàng),之后鍵入任意鍵進(jìn)入游戲,開始游戲。三、具體設(shè)計(jì)游戲程序框圖開始游戲開始游戲初始化屏幕上部的字母初始化屏幕上部的字母字母下落字母下落屏幕下部圖像所有消失屏幕下部圖像所有消失游戲結(jié)束游戲結(jié)束鍵入字符鍵入字符鍵入ESC?N鍵入回車?鍵入ESC?N鍵入回車?YYYY退出程序返回主菜單退出程序返回主菜單此部分是進(jìn)入游戲以后的設(shè)定,先初始化邊框,同時(shí)將屏幕上方的字母初始化,將屏幕下方添加代表“生命”的笑臉,當(dāng)笑臉?biāo)邢?,則游戲失敗,退出游戲。在游戲過(guò)程中,鍵入ESC建,則直接退出游戲。字母下落部分流程圖字母下落字母下落是否有生命?是否有輸入?是否有生命?是否有輸入?YYYY空格覆蓋當(dāng)前字符N是SPACE?N輸入對(duì)的?N空格覆蓋當(dāng)前字符N是SPACE?N輸入對(duì)的?N字母下移YY字母下移YY暫停字母消失暫停字母消失NN是SPACE?Y是SPACE?Y游戲結(jié)束游戲結(jié)束這個(gè)部分是游戲的核心部分。重要的想法是在某個(gè)地方出現(xiàn)字母,然后延遲一段時(shí)間(延遲時(shí)間由游戲速度控制),判斷是否有輸入字符,同時(shí)判斷字符是否為空格或者對(duì)的的字符。輸入的字符對(duì)的,則用空格覆蓋當(dāng)前的字符,同時(shí)產(chǎn)生下一個(gè)字母,反復(fù)上面的過(guò)程。若沒有輸入字符,則用空格覆蓋當(dāng)前字符,將當(dāng)前字符在下一格處顯示出來(lái),不斷的反復(fù),直到最后笑臉處,將笑臉用空格覆蓋,同時(shí)產(chǎn)生一個(gè)新的字母。四、編碼和測(cè)試主菜單部分如下圖所示:選擇時(shí)效果如下圖所示在輸入的字符不是1~5或ESC鍵時(shí),不會(huì)有任何反映,當(dāng)多次鍵入1~5或ESC鍵時(shí),按最后一次鍵入的有效,選擇游戲難度后,鍵入ENTER鍵開始游戲。進(jìn)入游戲后提醒信息如下圖所示:這里用了一個(gè)INT21H的中斷,等待接受一個(gè)字符來(lái)繼續(xù)程序。同時(shí)給出了游戲過(guò)程中的一些提醒。游戲過(guò)程如下圖所示:提醒:在游戲過(guò)程中程序之辨認(rèn)大寫字母,需要打開大寫鎖定進(jìn)行游戲,否則不管輸入對(duì)的與否,都不會(huì)有變化。游戲失敗時(shí)界面如下圖:輸入ENTER鍵繼續(xù),輸入其他鍵沒有任何變化。失敗以后的提醒畫面如下:鍵入ENTER鍵則返回主菜單,鍵入ESC鍵退出程序。退出程序的界面如下圖: 總結(jié)與體會(huì)當(dāng)我拿到這次課程設(shè)計(jì)的題目選擇時(shí),有點(diǎn)無(wú)從下手的感覺,最后選擇了這個(gè)打字游戲,由于我對(duì)游戲本來(lái)就有比較大的愛好。當(dāng)是在寫程序的過(guò)程中發(fā)現(xiàn)了很多很多的問(wèn)題,比如最開始不知道該如何設(shè)計(jì)布局,設(shè)計(jì)游戲界面。我上網(wǎng)找別人寫好得程序,學(xué)習(xí)別人的布局方法,終于有了一點(diǎn)設(shè)計(jì)的思緒,讓我感覺有設(shè)計(jì)的想法了。后來(lái)在設(shè)計(jì)游戲的時(shí)候發(fā)現(xiàn)不知道該如何產(chǎn)生下落的字母,起初是想使用一個(gè)產(chǎn)生隨機(jī)數(shù)的模塊,大體思緒是調(diào)用系統(tǒng)的時(shí)間,然后再把它除上26,求出它的余數(shù)。但是在使用的過(guò)程中發(fā)現(xiàn)不知道該如何控制它為字母,在使用的時(shí)候會(huì)出現(xiàn)一些亂碼,所以我就放棄了。后來(lái)就定義了一個(gè)無(wú)順序的字母串,讓它代替產(chǎn)生隨機(jī)的字母,但是由于不是隨機(jī)產(chǎn)生的,所以有一定的順序,這是這個(gè)程序局限性的地方。再之后我發(fā)現(xiàn)不懂得如何控制游戲的速度,我就上網(wǎng)搜索,看別人的程序,最后發(fā)現(xiàn)可以使用一個(gè)循環(huán),占用系統(tǒng)的CPU時(shí)間但不做任何解決,這樣就可以當(dāng)做延遲使用。同時(shí)設(shè)定不同的延遲時(shí)間,來(lái)控制游戲速度。在寫程序的過(guò)程中我發(fā)現(xiàn)了很多本來(lái)上課沒有說(shuō)到的中斷調(diào)用,比如INT10H,INT0AH等等,這些我們都沒有見到過(guò),但是在寫程序的過(guò)程中又需要多次使用,這給我導(dǎo)致了很大的困擾。我多次上網(wǎng)查找相關(guān)的資料和相關(guān)的實(shí)例,多次實(shí)驗(yàn)后終于初步了解了這些中斷調(diào)用的用法。這次的課程設(shè)計(jì)讓我有很大的收獲,不僅編寫出了一個(gè)小游戲,還讓我懂得應(yīng)用一些本來(lái)課上沒有機(jī)會(huì)用得一些知識(shí)。但是編寫的過(guò)程中尚有很多的遺憾,比如無(wú)法產(chǎn)生隨機(jī)數(shù),或者計(jì)時(shí)犯錯(cuò)等等問(wèn)題。在以后的學(xué)習(xí)中,要更注意。附錄:程序重要代碼;**************************************;宏部分;**************************************;宏名:INIT_GAME;功能描述:初始化游戲,設(shè)立游戲的邊框等INIT_GAMEMACROOP1,OP2,OP3,OP4,OP5,OP6MOVCX,00HMOVDH,OP1MOVDL,OP2OP6:MOVAH,02HMOVBH,00HINT10HPUSHCXMOVAH,0AHMOVAL,OP3MOVBH,00HMOVCX,01HINT10HPOPCXINCCXINCOP4CMPCX,OP5JNEOP6ENDM;功能描述:初始化屏幕;參數(shù):(OP1,OP2)為左上角坐標(biāo);(OP3,OP4)為右下角坐標(biāo)CLEAR_SCREENMACROOP1,OP2,OP3,OP4MOVAH,06HMOVAL,00HMOVBH,71HMOVCH,OP1MOVCL,OP2MOVDH,OP3MOVDL,OP4INT10HMOVAH,02HMOVBH,00HMOVDH,00HMOVDL,00HINT10HENDM;菜單宏,用于布局MENUMACROOP1,OP2,OP3MOVAH,02HMOVBH,00HMOVDH,OP1MOVDL,OP2INT10HMOVAH,09HLEADX,OP3INT21HENDM;***************************************;主程序部分;***************************************CODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVLETTER_COUNTER,00HMOVPRESENT_POSITION,1LEASI,POSITION_FLAGMOVAH,00HMOVCX,00HINIT_POSTION_FLAG:MOV[SI],AHINCSIINCCXCMPCX,78DJNEINIT_POSTION_FLAGLEADI,LETTERSLEASI,LETTERS_BAKMOVCX,00HINIT_LETTERS:;循環(huán)把LETTERS_BAK給LETTERSMOVAH,[SI]MOV[DI],AHINCSIINCDIINCCXCMPCX,78DJNEINIT_LETTERSMOVAH,00H;循環(huán)把LIFE_FLAG賦值0LEASI,LIFE_FLAGMOVCX,00HINIT_LIFE_FLAG:MOV[SI],AHINCSIINCCXCMPCX,78DJNEINIT_LIFE_FLAGMOVCX,00HMOVAH,01H;設(shè)立光標(biāo)大小ORCH,00010000BINT10HCLEAR_SCREEN00D,00D,24D,79DINIT_GAME00D,00D,04H,DL,80D,NEXTSIGN1;設(shè)立屏幕的邊框,光標(biāo)的位置INIT_GAME24D,00D,04H,DL,80D,NEXTSIGN2INIT_GAME00D,00D,04H,DH,25D,NEXTSIGN3INIT_GAME00D,79D,04H,DH,25D,NEXTSIGN4MENU01D,15D,MEG;菜單信息的宏展開MENU01H,61D,LINJIANGMENU03D,20D,MEG1MENU03D,60D,NOMENU05D,15D,MEG2MENU07D,15D,MEG3MENU09D,15D,MEG4MENU11D,15D,MEG5MENU13D,15D,MEG6MENU15D,15D,MEG7MENU17D,15D,MEG11MENU19D,15D,MEG9MENU22D,15D,MEG10;**************************************;選擇界面;**************************************;選擇菜單部分INPUT:MOVAH,02HMOVBH,00HMOVDH,22DMOVDL,33DINT10HMOVAH,0AH;顯示空字符MOVAL,""MOVBH,00HMOVCX,01HINT10HMOVAH,01HINT21HRETRY:CMPAL,"1";速度選擇部分JESPEED1CMPAL,"2"JESPEED2CMPAL,"3"JESPEED3CMPAL,"4"JESPEED4CMPAL,"5"JESPEED5CMPAL,"6"JESPEED6CMPAL,1BHJETO_OVER0JMPINPUTTO_OVER0:JMPOVERSPEED1:MOVAH,01HINT21HCMPAL,0DH;比較是否為回車JNEOTHERKEYMOVAX,SPEED+2MOVSPEED,AXJMPBEGINSPEED2:MOVAH,01HINT21HCMPAL,0DHJNEOTHERKEYMOVAX,SPEED+4MOVSPEED,AXJMPBEGINSPEED3:MOVAH,01HINT21HCMPAL,0DHJNEOTHERKEYMOVAX,SPEED+6MOVSPEED,AXJMPBEGINSPEED4:MOVAH,01HINT21HCMPAL,0DHJNEOTHERKEYMOVAX,SPEED+8MOVSPEED,AXJMPBEGINSPEED5:MOVAH,01HINT21HCMPAL,0DHJNEOTHERKEYMOVAX,SPEED+10MOVSPEED,AXJMPBEGINSPEED6:MOVAH,01HINT21HCMPAL,0DHJNEOTHERKEYMOVAX,SPEED+12MOVSPEED,AXJMPBEGINOTHERKEY:;解決反復(fù)輸入的代碼段,多次輸入則覆蓋PUSHAXMOVAH,02HMOVBH,00HMOVDH,22DMOVDL,34DINT10HMOVAH,0AHMOVAL,""MOVBH,00HMOVCX,01HINT10HMOVAH,02HMOVBH,00HMOVDH,22DMOVDL,33DINT10HPOPAXMOVDX,AXMOVAH,02HINT21HJMPRETRY;******************************************;字母下落的代碼段部分;******************************************MOVAH,02HMOVBH,00HMOVDH,01HINT10HMOVCX,00HNEXTROW:PUSHCX;新的一行MOVCX,00HOUT_CYCLE:;延遲PUSHCXMOVCX,00HIN_CYCLE:ADDCX,01HCMPCX,50000DJNEIN_CYCLEPUSHDXMOVAH,06HMOVDL,0FFHINT21HPOPDXJZPASS;假如鍵盤緩沖區(qū)部分為空,則跳轉(zhuǎn)CMPAL,1BH;假如鍵入ESC,則返回主菜單JETO_START1CMPAL,"";假如鍵入SPACE,則游戲暫停JEPAUSECMPAL,[DI];輸入字母對(duì)的!跳轉(zhuǎn)!JEDISAPPEARPASS:POPCXINCCXCMPCX,SPEEDJEPRINTJMPOUT_CYCLEPAUSE:PUSHDX;暫停解決MOVAH,06HMOVDL,0FFHINT21HPOPDXCMPAL,""JNEPAUSEJMPPASSTO_START1:;返回主菜單JMPSTARTPRINT:;當(dāng)本行沒有輸入字符時(shí),用空格覆蓋本來(lái)字符,同時(shí)字符下移一位MOVAH,0AHMOVAL,""MOVBH,00HMOVCX,01HINT10HINCDH;行號(hào)加一,下移一行MOVAH,02HMOVBH,00HINT10HMOVAH,0AHMOVAL,[DI]MOVBH,00HMOVCX,01HINT10HPOPCXINCCXCMPCX,21DJEPRINT_NEXT_LETTER;循環(huán)結(jié)束,跳入解決空格處JMPNEXTROW;下一行,重新進(jìn)行鑒定DISAPPEAR:;擊中字母后的相關(guān)解決POPCXPOPCXMOVAH,0AHMOVAL,""MOVBH,00HMOVCX,01HINT10H;輸入對(duì)的時(shí)用空格覆

溫馨提示

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

評(píng)論

0/150

提交評(píng)論