版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
猜數(shù)字游戲設(shè)計文檔源代碼是上傳文檔加上去的,見最后面)一、 需求分析首先,用戶輸入猜測次數(shù),游戲開始循環(huán)。數(shù)字有四位,格式為:1234每次用戶輸入一個數(shù)字,游戲都會顯示四個字符:A代表數(shù)字和位置都正確B代表數(shù)字正確,但是位置不對?代表沒有這個數(shù)字比如:假如要猜的數(shù)字是4321,用戶輸入4321,程序顯示AAAA,用戶獲勝!假如要猜的數(shù)字是4321,用戶輸入1234,程序顯示BBBB假如要猜的數(shù)字是4321,用戶輸入5674,程序顯示???B假如要猜的數(shù)字是4321,用戶輸入5678,程序顯示????如果在給定次數(shù)內(nèi),用戶猜對,則用戶勝利,游戲結(jié)束;如果在給定的次數(shù)里,用戶沒有猜到,則用戶失敗,游戲結(jié)束。二、 概要設(shè)計采用封裝函數(shù)的思想,將生成隨機(jī)數(shù)、比較用戶輸入結(jié)果分別封裝成函數(shù)游戲分成四個功能模塊生成四個隨機(jī)數(shù)用戶輸入猜測次數(shù)用戶猜數(shù)顯示猜測結(jié)果戲總體流程圖:開始游戲N判斷數(shù)字Y車▼failY輸出結(jié)果游戲次數(shù)是否用完判斷游戲是否成功輸出判斷結(jié)果N輸入數(shù)字successN判斷數(shù)字Y車▼failY輸出結(jié)果游戲次數(shù)是否用完判斷游戲是否成功輸出判斷結(jié)果N輸入數(shù)字success游戲結(jié)束NYNYNY判斷一個字符是否在系統(tǒng)生成的S3中判斷4個字符是否比較完置NYNYNY判斷一個字符是否在系統(tǒng)生成的S3中判斷4個字符是否比較完置‘B判斷是否在對應(yīng)下標(biāo)置‘?比較輸入結(jié)果流程圖:置‘A'三、 詳細(xì)設(shè)計1.輸入數(shù)字,游戲次數(shù)使用DOS功能調(diào)用來實現(xiàn)鍵盤輸入。輸入單個字符(游戲次數(shù))用1號功能,輸入字符串(數(shù)字)用9號功能。2.生成隨機(jī)數(shù)讀取時鐘數(shù)值,進(jìn)行運(yùn)算得到隨機(jī)數(shù)。3.比較結(jié)果首先將輸入的數(shù)字和生成的四位隨機(jī)數(shù)進(jìn)行比較,按照要求輸出判斷結(jié)果;然后,判斷游戲次數(shù)是否用完。輸出結(jié)果按照要求輸出結(jié)果,分游戲成功和游戲失敗兩種情況。四、 運(yùn)行調(diào)試皤DOSEox0.74?Cpusp?ed:3000cycles.Frameskip0rProgram:DOSBOXC:\>t:xPleaseinpmttimesfrom9to95Pleaseinpmtrandomrumber1ZJ1AA??YourinputiswrongPleaseinputrandomrumber1Z56AA??YourinputisurongPlfiflKRinputranrlnmnimhnr1289AAB?YourinputisurongPleaseinpmtrandomnumber1ZG9fih??Yourinputiswrongrleaseinputrandomnumber1Z65AAT?Youhavenotime,Youlostthegfame?C:\>嘛DOSEax0.74?Cpuspeed:3000cycles,FrameskipflrProgram:DOSBOXAAAACongfratulatiors?Yousucceed?C:\>exPleaseinputtimesfrom9to9Flediiit:inpmllaiidumnumbei-7024YYBYYourinputisuronqPleaseinpitrandomnumber213SBBB?YourinputiswrongPleaseinpmtrandomrumber3Z13BBBBYourinputiswrongPleaseinputrandomrumber1382朋帕Congfratulatiors??ousucceed?C:\>源代碼:DATASEGMENTS3DB4DUP(30H),':IStherandomnumber.',0AH,0DH,'$';產(chǎn)生的4個數(shù)NUMDB5,0,5DUP(?),0AH,0DH,'$' ;輸入緩沖區(qū)RESULTDB'AAAA',0AH,0DH,'$'GUSDB4DUP(30H),0AH,0DH,'$' ;用戶輸入的4個數(shù)S1DB'Pleaseinputtimesfrom1to9',0AH,0DH,'$'S2DB'Pleaseinputrandomnumber',0AH,0DH,'$'S4DB'Yourinputiswrong',0AH,0DH,'$'FAILDB'Youhavenotime,Youlostthegame!',0AH,0DH,'$'WINDB'Congratulations!Yousucceed!',0AH,0DH,'$'DATAENDSSTACK1SEGMENTPARASTACKDB10DUP(0)STACK1ENDSCOSEGSEGMENTASSUMECS:COSEG,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXLEASI,S3CALLRANDOM ;調(diào)用封裝的函數(shù)RANDOM產(chǎn)生隨機(jī)數(shù)顯示系統(tǒng)生成的4個隨機(jī)數(shù) ;MOVDX,OFFSETS3;MOVAH,09H;INT21H提示輸入猜測次數(shù),并保存在BL MOVDX,OFFSETS1MOVAH,09HINT21HMOVAH,01H ;輸入次數(shù)INT21HSUBAL,30HMOVBX,0MOVBL,AL ;猜測次數(shù)入BLMOVAH,02H ;回車換行MOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21H; 用戶猜測 GUESS:PUSHBXCALLCOMPARE ;調(diào)用封裝函數(shù),將比較結(jié)果保存在GUSPOPBXLEADX,GUS ;顯示猜測結(jié)果MOVAH,09HINT21HLEASI,RESULT ;判斷是否完全相同LEADI,GUSMOVCX,4REPZCMPSBDECBL ;猜錯,則猜測次數(shù)減1JNZOUT2LEADX,FAIL ;次數(shù)為0,失敗信息MOVAH,09HINT21HJMPOVEROUT1: ;輸出獲勝信息LEADX,WINMOVAH,09HINT21HJMPOVEROUT2: ;提示重新輸入隨機(jī)數(shù)MOVDX,OFFSETS4MOVAH,09HINT21HJMPGUESSOVER:MOVAH,4CHINT21H; 封裝函數(shù)RANDOM,產(chǎn)生4個不同隨機(jī)數(shù),并保存在S3 RANDOMPROCPUSHCXPUSHDXPUSHAXSTIMOVBH,4RAND: ;產(chǎn)生一個隨機(jī)數(shù)MOVAH,0INT1AH ;讀時鐘計數(shù)器值,16位放在DXMOVAX,DXMOVBL,73MULBLANDAH,9 ;清高6位MOVDL,10DIVDL ;除10,產(chǎn)生0~9余數(shù)ADDAH,30HMOVBL,AH ;余數(shù)存BX,作隨機(jī)數(shù)JMPX1X1: ;使生成的隨機(jī)數(shù)不重復(fù)MOVCL,4LEADI,S3MOVAL,BLCLD ;清DF,每次掃描后指針增量REPNZSCASB ;直到找到相同隨機(jī)數(shù)或CX=0JZRAND ;若找到相同的,則重新生成隨機(jī)數(shù)JMPX2 ;沒找到X2: ;隨機(jī)數(shù)入字符串MOV[SI],BLINCSIDECBHJNZRANDPOPAXPOPDXPOPCXRETRANDOMENDP;-----封裝的函數(shù)COMPARE根據(jù)用戶輸入的隨機(jī)數(shù),把比較結(jié)果保存在GUS中 COMPAREPROCPUSHCXPUSHDXPUSHAXSTI;猜數(shù)初始化MOVDX,OFFSETS2 ;提示用戶輸入4個數(shù)MOVAH,09HINT21HLEADX,NUM ;用戶輸入4個數(shù)MOVAH,0AHINT21HLEASI,NUM+2 ;緩沖區(qū)隨機(jī)數(shù)入GUSLEADI,GUSMOVCX,4REPMOVSBMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HLEASI,GUSMOVBX,SIMOVDL,4 ;DL為當(dāng)前未比較的隨機(jī)數(shù)個數(shù)F0UND1: ;判斷一個隨機(jī)數(shù)是否在S3中,不在則置'?'MOVCX,4LEADI,S3 ;每次循環(huán)都會重置MOVAL,[SI] ;一個隨機(jī)數(shù)送ALCLDREPNZSCASB ;掃描字符串S3,直到找到隨機(jī)數(shù)或CX=OJZFOUND2 ;在S3中,轉(zhuǎn)FOUND2MOVAL,'?'MOV[SI],ALJMPTEMPFOUND2: ;判斷關(guān)鍵字是否在對應(yīng)下標(biāo)位置,不在則置'B'MOVCX,SISUBCX,BXLEABP,S3DECDISUBDI,BPCMPDI,CXJZFOUND3MOVAL,'B'MOV[SI],ALJ
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鉆井工程地質(zhì)災(zāi)害預(yù)防合同3篇
- 二零二五年度太陽能熱水器熱水系統(tǒng)節(jié)能改造技術(shù)咨詢合同
- 二零二五年度炊事員勞動合同(含競業(yè)禁止)3篇
- 二零二五年度互聯(lián)網(wǎng)醫(yī)院信息化建設(shè)合同4篇
- 2025版特色農(nóng)家樂項目投資租賃合同范本4篇
- 二零二五年度房地產(chǎn)經(jīng)紀(jì)服務(wù)合同:房地產(chǎn)公司與經(jīng)紀(jì)公司合作3篇
- 二零二五版美容美發(fā)行業(yè)安全責(zé)任與保險合同4篇
- 二零二五年度新能源技術(shù)博士引進(jìn)與項目合作合同4篇
- 二零二五版兒童游樂設(shè)施環(huán)保材料采購與安裝合同4篇
- 課題申報參考:面向信息可供性和信任提升的列車乘客界面視覺表意機(jī)制研究
- 不同茶葉的沖泡方法
- 光伏發(fā)電并網(wǎng)申辦具體流程
- 建筑勞務(wù)專業(yè)分包合同范本(2025年)
- 企業(yè)融資報告特斯拉成功案例分享
- 五年(2020-2024)高考地理真題分類匯編(全國版)專題12區(qū)域發(fā)展解析版
- 《阻燃材料與技術(shù)》課件 第8講 阻燃木質(zhì)材料
- 低空經(jīng)濟(jì)的社會接受度與倫理問題分析
- GB/T 4732.1-2024壓力容器分析設(shè)計第1部分:通用要求
- 河北省保定市競秀區(qū)2023-2024學(xué)年七年級下學(xué)期期末生物學(xué)試題(解析版)
- 2024年江蘇省勞動合同條例
- 六編元代文學(xué)
評論
0/150
提交評論