骰子模拟程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
骰子模拟程序设计
一、设计目标
模拟实现骰子游戏。
二、设计要求
1. 通过按某键模拟投掷骰子。
2. 模拟显示骰子的旋转,经过一段时间后骰子静止,根据静止时的数字大小确定输赢。
3. 通过按某键可停止骰子旋转。
4. 模拟投掷骰子的力度,通过按某键的时间长短或两次按键之间的时间间隔,控制骰子的旋转时间和转速。
5. 通过按某键可正常退出模拟程序。
三、设计提示
本课题可用1~8分别代替骰子的八面数字,当按下某键的时候,数字开始滚动显示,当按下结束键时停止,屏幕上显示的就是当前数字。其中,按键检测、数字显示、时间长短均可以通过DOS、BIOS功能调用完成。
STACK SEGMENT
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
MESSAGE DB'NOTE:ENTER "1,2,3" TO CHOOSE SPEED,"S" TO STOP,"E" TO EXIT','$'
RESULT DB'YOUR NUMBER IS ','$'
GO DB'GOING!','$'
STOP DB'STOP!','$' TIME DB?
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE POINT MACRO OP1,OP2 ;置光标位置
PUSH AX
PUSH BX
PUSH DX
MOV AH,02H
MOV BH,0
MOV DH,OP1
MOV DL,OP2
INT 10H
POP DX
POP BX
POP AX
ENDM
PRINT MACRO M ;输出字符
PUSH AX
PUSH DX
MOV DL,M
MOV AH,02H
INT 21H
POP DX
POP AX
ENDM
START:
MOV AX,DATA
MOV DS,AX
LEA SI,TIME
MOV AH,01H
MOV CX,3000H
INT 10H
MOV AX,0600H
XOR CX,CX
MOV DX,1850H
INT 10H
POINT 7,18
LEA DX,MESSAGE
MOV AH,09H
INT 21H
MOV AX,0600H
MOV BH,0FCH
MOV CX,0B26H
MOV DX,0D2AH
INT 10H
POINT 12,20
LEA DX,RESULT
MOV AH,09H
INT 21H RESET:
MOV AH,08
INT 21H
CMP AL,'1'
JZ A0
CMP AL,'2'
JZ A0
CMP AL,'3'
JZ A0
CMP AL,'E'
JZ EXIT
JMP RESET
A0:
AND AH,00H
MOV CL,0FFH
MUL CL
MOV CX,AX
PUSH CX
LEA DX,GO
MOV AH,09H
INT 21H
POP CX
A1:
PUSH CX
CALL RAND
POP CX
ADD BL,31H
POINT 12,40
PRINT BL
MOV AH,01H
INT 16H
CMP AL,'S'
JZ CONTINUE
LOOP A1 CONTINUE:
POINT 9,38
LEA DX,STOP
MOV AH,09H
INT 21H
MOV AH,01H
INT 16H
CMP AL,'1'
JZ A1
CMP AL,'2'
JZ A1
CMP AL,'3'
JZ A1
CMP AL,'E'
JZ EXIT
JMP RESET RAND PROC
PUSH CX
PUSH DX
PUSH AX
CALL DELAY
CALL DELAY
MOV AH,00H INT 1AH
MOV AX,DX
AND AH,00H
MOV DL,6
DIV DL
MOV BL,AH
POP AX
POP DX
POP CX
RET
RAND ENDP
DELAY PROC
PUSH CX
PUSH DX
MOV DX,
DEC DX
JNZ D11
D11: MOV CX,0FFFFH
D12: LOOP D12
POP DX
pop CX
RET
DELAY ENDP
EXIT: INT 20H
AG: JMP AG
CODE ENDS
END START
调试结果:
按下一次“1”键后:
再按下一次“1”键后: