微機原理匯編語言之猜數(shù)字游戲.doc
《微機原理匯編語言之猜數(shù)字游戲.doc》由會員分享,可在線閱讀,更多相關《微機原理匯編語言之猜數(shù)字游戲.doc(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。
猜數(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),用戶猜對,則用戶勝利,游戲結束; 如果在給定的次數(shù)里, 用戶沒有猜到,則用戶失敗,游戲結束。 二、 概要設計 采用封裝函數(shù)的思想,將 生成隨機數(shù)、比較用戶輸入結果 分別封裝成函數(shù) 游戲分成四個功能模塊 1. 生成四個隨機數(shù) 2. 用戶輸入猜測次數(shù) 3. 用戶猜數(shù) 4. 顯示猜測結果戲 總體流程圖: 開始游戲 生成隨機數(shù) 輸入游戲次數(shù) 輸入數(shù)字 判斷數(shù)字 N 游戲次數(shù)是否用完 輸出判斷結果 N 判斷游戲是否成功 fail N success 輸出結果 Y 游戲結束 生成隨機數(shù) 流程圖: 生成1個隨機數(shù) 判斷是否跟已有隨機數(shù)重復 重復 不重復 將隨機數(shù)保存到S3 判斷是否生成4個隨機數(shù) N Y 比較輸入結果 流程圖: 判斷一個字符是否在系統(tǒng)生成的S3中 N 置 ‘ ?‘ Y 判斷是否在對應下標 N 置 ‘B’ Y 置 ‘A’ 判斷4個字符是否比較完 N Y 三、 詳細設計 1. 輸入數(shù)字,游戲次數(shù) 使用DOS功能調(diào)用來實現(xiàn)鍵盤輸入。輸入單個字符(游戲次數(shù))用1號功能,輸入字符串(數(shù)字)用9號功能。 2. 生成隨機數(shù) 讀取時鐘數(shù)值,進行運算得到隨機數(shù)。 3. 比較結果 首先將輸入的數(shù)字和生成的四位隨機數(shù)進行比較,按照要求輸出判斷結果;然后,判斷游戲次數(shù)是否用完。 輸出結果 按照要求輸出結果,分游戲成功和游戲失敗兩種情況。 四、 運行調(diào)試 源代碼: DATA SEGMENT S3 DB 4 DUP(30H), :IS the random number. ,0AH,0DH,$ ;產(chǎn)生的4個數(shù) NUM DB 5,0,5 DUP(?),0AH,0DH,$ ;輸入緩沖區(qū) RESULT DB AAAA,0AH,0DH,$ GUS DB 4 DUP(30H),0AH,0DH,$ ;用戶輸入的4個數(shù) S1 DB Please input times from 1 to 9,0AH,0DH,$ S2 DB Please input random number,0AH,0DH,$ S4 DB Your input is wrong,0AH,0DH,$ FAIL DB You have no time, You lost the game!,0AH,0DH,$ WIN DB Congratulations! You succeed!,0AH,0DH,$ DATA ENDS STACK1 SEGMENT PARA STACK DB 10 DUP(0) STACK1 ENDS COSEG SEGMENT ASSUME CS:COSEG, DS:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,S3 CALL RANDOM ;調(diào)用封裝的函數(shù)RANDOM產(chǎn)生隨機數(shù) ;-------顯示系統(tǒng)生成的4個隨機數(shù)-------- ;MOV DX,OFFSET S3 ;MOV AH,09H ;INT 21H ;-------提示輸入猜測次數(shù),并保存在BL-------- MOV DX,OFFSET S1 MOV AH,09H INT 21H MOV AH,01H ;輸入次數(shù) INT 21H SUB AL,30H MOV BX,0 MOV BL,AL ;猜測次數(shù)入BL MOV AH,02H ;回車換行 MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ;--------------用戶猜測--------------- GUESS: PUSH BX CALL COMPARE ;調(diào)用封裝函數(shù),將比較結果保存在GUS POP BX LEA DX,GUS ;顯示猜測結果 MOV AH,09H INT 21H LEA SI,RESULT ;判斷是否完全相同 LEA DI,GUS MOV CX,4 REPZ CMPSB JE OUT1 ;完全相同,轉(zhuǎn)OUT1 DEC BL ;猜錯,則猜測次數(shù)減1 JNZ OUT2 LEA DX, FAIL ;次數(shù)為0,失敗信息 MOV AH,09H INT 21H JMP OVER OUT1: ;輸出獲勝信息 LEA DX,WIN MOV AH,09H INT 21H JMP OVER OUT2: ;提示重新輸入隨機數(shù) MOV DX,OFFSET S4 MOV AH,09H INT 21H JMP GUESS OVER:MOV AH,4CH INT 21H ;----------封裝函數(shù)RANDOM,產(chǎn)生4個不同隨機數(shù),并保存在S3---------- RANDOM PROC PUSH CX PUSH DX PUSH AX STI MOV BH,4 RAND: ;產(chǎn)生一個隨機數(shù) MOV AH,0 INT 1AH ;讀時鐘計數(shù)器值,16位放在DX MOV AX,DX MOV BL,73 MUL BL AND AH,9 ;清高6位 MOV DL,10 DIV DL ;除10,產(chǎn)生0~9余數(shù) ADD AH,30H MOV BL,AH ;余數(shù)存BX,作隨機數(shù) JMP X1 X1: ;使生成的隨機數(shù)不重復 MOV CL,4 LEA DI,S3 MOV AL,BL CLD ;清DF,每次掃描后指針增量 REPNZ SCASB ;直到找到相同隨機數(shù)或CX=0 JZ RAND ;若找到相同的,則重新生成隨機數(shù) JMP X2 ;沒找到 X2: ;隨機數(shù)入字符串 MOV [SI],BL INC SI DEC BH JNZ RAND POP AX POP DX POP CX RET RANDOM ENDP ;-----封裝的函數(shù)COMPARE,根據(jù)用戶輸入的隨機數(shù),把比較結果保存在GUS中-------- COMPARE PROC PUSH CX PUSH DX PUSH AX STI ;猜數(shù)初始化 MOV DX,OFFSET S2 ;提示用戶輸入4個數(shù) MOV AH,09H INT 21H LEA DX,NUM ;用戶輸入4個數(shù) MOV AH,0AH INT 21H LEA SI,NUM+2 ;緩沖區(qū)隨機數(shù)入GUS LEA DI,GUS MOV CX,4 REP MOVSB MOV AH,02H ;回車換行 MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H LEA SI,GUS MOV BX,SI MOV DL,4 ;DL為當前未比較的隨機數(shù)個數(shù) FOUND1: ;判斷一個隨機數(shù)是否在S3中,不在則置‘?’ MOV CX,4 LEA DI,S3 ;每次循環(huán)都會重置 MOV AL,[SI] ;一個隨機數(shù)送AL CLD REPNZ SCASB ;掃描字符串S3,直到找到隨機數(shù)或CX=0 JZ FOUND2 ;在S3中,轉(zhuǎn)FOUND2 MOV AL,? MOV [SI],AL JMP TEMP FOUND2: ;判斷關鍵字是否在對應下標位置,不在則置‘B’ MOV CX,SI SUB CX,BX LEA BP,S3 DEC DI SUB DI,BP CMP DI,CX JZ FOUND3 ;在對應位置,轉(zhuǎn)FOUND3 MOV AL,B ;不在對應位置 MOV [SI],AL JMP TEMP FOUND3: ;置A MOV AL,A MOV [SI],AL JMP TEMP TEMP: ;猜測循環(huán)判斷和輸出猜測結果 INC SI DEC DL CMP DL,0 JNZ FOUND1 ;若4個隨機數(shù)未比較完,轉(zhuǎn)FOUND1 POP AX POP DX POP CX RET COMPARE ENDP COSEG ENDS END START- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 微機 原理 匯編語言 數(shù)字 游戲
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.820124.com/p-6604891.html