我从学校得到了一个组装蛇游戏的任务。
我已经完成了所有的游戏,但我无法想出一个办法来做一件事 - 让没有按键的蛇在相同的方向移动。ASM:检查是否没有按键
目前,每个步骤后,我的代码调用此代码来获取下一个关键:
mov ah,1h int 21h ; store at al
但这个代码等待,直到用户将按下的东西,所以他不适合这种情况下。
是否有人知道一段时间后,如果没有按键被按下,计数代码?
此外感谢:)
我从学校得到了一个组装蛇游戏的任务。
我已经完成了所有的游戏,但我无法想出一个办法来做一件事 - 让没有按键的蛇在相同的方向移动。ASM:检查是否没有按键
目前,每个步骤后,我的代码调用此代码来获取下一个关键:
mov ah,1h int 21h ; store at al
但这个代码等待,直到用户将按下的东西,所以他不适合这种情况下。
是否有人知道一段时间后,如果没有按键被按下,计数代码?
此外感谢:)
试试这个:
mov ah, 0Bh ;CHECK IF ANY KEY WAS PRESSED.
int 21h ;RESULT IN AL : ==0:NO KEY, !=0:KEY.
cmp al, 0
je JUMP_TO_MOVE_SNAKE
;GET PRESSED KEY.
mov ah,1h
int 21h
JUMP_TO_MOVE_SNAKE:
...
服务0Bh
不会停止代码的执行,这样你就可以知道什么时候按下一个键或者当它不是。
有中断设置变量。读取后使用计时器清除它。使用变量来确定执行哪个代码:直/左/右
嗨,但我没有得到你的答案。我的问题是,程序一直在等待,直到按下一个键,如果没有按键 - 程序将不会继续。我已经有了你提到的功能,所以如果你可以更清楚你的答案? – Idan
非常感谢!这是工作:) – Idan
关于'INT 21/AH = 0Bh' vs'INT 16/AH = 01'的好处是前者从DOS2 +开始检查STDIN,而不是物理键盘。 Upvoted。 –