骰子模拟程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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”键后:

相关文档
最新文档