- 11
- 0
- 约4.52千字
- 约 11页
- 2017-04-22 发布于湖北
- 举报
猜数字游戏设计文档
(源代码是上传文档加上去的,见最后面)
需求分析
首先,用户输入猜测次数, 游戏开始循环。
数字有四位,格式为: 1234
每次用户输入一个数字,游戏都会显示四个字符:
A 代表数字和位置都正确
B 代表数字正确, 但是位置不对
?代表没有这个数字
比如:
假如要猜的数字是4321, 用户输入4321, 程序显示AAAA, 用户获胜!
假如要猜的数字是4321, 用户输入1234, 程序显示BBBB
假如要猜的数字是4321, 用户输入5674, 程序显示???B
假如要猜的数字是4321, 用户输入5678, 程序显示????
如果在给定次数内,用户猜对,则用户胜利,游戏结束;
如果在给定的次数里, 用户没有猜到,则用户失败,游戏结束。
概要设计
采用封装函数的思想,将 生成随机数、比较用户输入结果 分别封装成函数
游戏分成四个功能模块
生成四个随机数
用户输入猜测次数
用户猜数
显示猜测结果戏
总体流程图:
开始游戏
生成随机数
输入游戏次数
输入数字
判断数字
N
游戏次数是否用完
输出判断结果
N
判断游戏是否成功
fail
N
success
输出结果
Y
游戏结束
生成随机数 流程图:
生成1个随机数
判断是否跟已有随机数重复
重复
不重复
将随机数保存到S3
判断是否生成4个随机数
N
Y
比较输入结果 流程图:
判断一个字符是否在系统生成的S3中
N
置 ‘ ?‘
Y
判断是否在对应下标
N
置 ‘B’
Y
置 ‘A’
判断4个字符是否比较完
N
Y
详细设计
输入数字,游戏次数
使用DOS功能调用来实现键盘输入。输入单个字符(游戏次数)用1号功能,输入字符串(数字)用9号功能。
生成随机数
读取时钟数值,进行运算得到随机数。
比较结果
首先将输入的数字和生成的四位随机数进行比较,按照要求输出判断结果;然后,判断游戏次数是否用完。
输出结果
按照要求输出结果,分游戏成功和游戏失败两种情况。
运行调试
源代码:
DATA SEGMENT
S3 DB 4 DUP(30H), :IS the random number. ,0AH,0DH,$ ;产生的4个数
NUM DB 5,0,5 DUP(?),0AH,0DH,$ ;输入缓冲区
RESULT DB AAAA,0AH,0DH,$
GUS DB 4 DUP(30H),0AH,0DH,$ ;用户输入的4个数
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 ;调用封装的函数RANDOM产生随机数
;-------显示系统生成的4个随机数--------
;MOV DX,OFFSET S3
;MOV AH,09H
;INT 21H
;-------提示输入猜测次数,并保存在BL--------
MOV DX,OFFSET S1
MOV AH,09H
INT 21H
MOV AH,01H ;输入次数
INT 21H
SUB AL,30H
MOV BX,0
MOV BL,AL ;猜测次数入BL
MOV AH,02H ;回车换行
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT
原创力文档

文档评论(0)