我正在制作“四人连线”游戏。
播放器必须输入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寄存器中产生结果!
用cmp al, 31h
比较的“1”按键。
要使屏幕上不回显输入,请使用DOS功能7代替1。
mov ah, 7
int 21h
cmp al, 31h
Player1Pressed1: mov ah, 1 int 21h cmp al, 31h je Player1Check1 Player1Check1:
使用此代码,您始终可以在Player1Check1上执行该代码。当输入不为“ 1”时,您需要跳开它。添加一个jmp
Player1Pressed1:
mov ah, 1
int 21h
cmp al, 31h
je Player1Check1
jmp ELSEWHERE_YOU_KNOW_WHERE_THIS_IS
Player1Check1:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句