我正在制作游戏“Connect Four”。
玩家必须输入 1-4 之间的数字,以便圆盘落入其中一列。我目前正在研究第一专栏。问题是你可以输入任何字符并且它会起作用(它只需要在你按“1”时起作用)并且我不知道如何修复它。
此外,该数字出现在屏幕左侧。如何才能让我输入数字时屏幕上不显示该数字?
PlayerOneTurn:
cmp [Player1Turn], 255
je Player1Pressed1
Player1Pressed1:
mov ah, 1
int 21h
cmp al, 31h
je Player1Check1
Player1Check1:
cmp [FirstColumnArray], 0
inc [FirstColumnArray]
je DrawPlayer1Disc
cmp [FirstColumnArray + 1], 0
inc [FirstColumnArray]
je DrawPlayer1Disc
cmp [FirstColumnArray + 2], 0
inc [FirstColumnArray]
je DrawPlayer1Disc
cmp [FirstColumnArray + 3], 0
inc [FirstColumnArray]
je DrawPlayer1Loop
DrawPlayer1Loop:
mov bh,0h
mov cx,[Player1Draw1x]
mov dx,[Player1Draw1y]
mov al,[player1disccolor]
mov ah,0ch
int 10h
inc [Player1Draw1x]
cmp cx, 38h
jl DrawPlayer1Loop
DrawPlayer1Disc:
mov bh, 0h
inc [Player1Draw1y]
mov [Player1Draw1x], 25h
cmp dx, 09Bh
jl DrawPlayer1Loop
运行我的项目时如下所示:
mov ah, 1
int 21h
cmp ah, 31h
您使用的 DOS 函数会在 AL 寄存器中生成结果!
Use cmp al, 31h
比较“1”按键。
To not使用 DOS 功能 7 而不是 1 让输入在屏幕上回显。
mov ah, 7
int 21h
cmp al, 31h
Player1Pressed1:
mov ah, 1
int 21h
cmp al, 31h
je Player1Check1
Player1Check1:
使用此代码,您始终执行代码玩家1检查1。当输入不是“1”时,你需要跳开它。添加一个jmp
Player1Pressed1:
mov ah, 1
int 21h
cmp al, 31h
je Player1Check1
jmp ELSEWHERE_YOU_KNOW_WHERE_THIS_IS
Player1Check1:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)