【发布时间】:2013-10-30 17:11:07
【问题描述】:
我正在创建一个游戏,我希望如果用户按 F10 或任何其他功能键,那么程序应该结束。
【问题讨论】:
我正在创建一个游戏,我希望如果用户按 F10 或任何其他功能键,那么程序应该结束。
【问题讨论】:
你还没有回答这个问题真是太糟糕了......
首先,您必须找到您希望作为出口的任何键的 ASCII 值。
要做到这一点,要么制作一个简单的程序来使用 chr$、asc() 和一个输入来计算它。或者只是快速搜索它。
您要做的是在您的游戏区域中使用 inkey$(我假设您是,因为大多数游戏都会有移动,这几乎是必需的)并检查是否按下了键连同其他所有键。 例如:
一个简单的运动游戏:
10 cls
20 K$=inkey$
30 if K$="a" then REM move left
40 if K$="d" then REM move right
50 if K$= EXITKEY then REM EXIT
60 goto 20
-另外,很抱歉,如果这是不正确的方法,但这应该可以工作......我对 GW 还是有点生疏
【讨论】:
我假设你正处于某种 BASIC 程序的中间,你想“退出”,退出这个?
按ENTER 进入空白区域并输入system,再次点击ENTER 即可退出!
【讨论】:
对于未来的搜索者,此答案提供了额外的背景信息,为退出 BASIC 程序的机制设计提供信息。
对于一些设计简单的 BASIC 程序,唯一的退出方法是 Control-C 或 Control-Break。但是一些模拟器(例如 DOSBox)不会以将 Control-C 呈现给底层程序的方式处理它。
在某些系统上,you can press Ctrl-ScrollLock as a workaround:
我有一个小技巧给感兴趣的人:使用 Ctrl-ScrollLock,它 行为类似于 Ctrl-Break,其中运行了许多 BASIC 解释器 DOS框。它适用于 GW-BASIC、BASICA(通常与兼容的 DOS (如 Compaq's)、QBasic、QuickBasic 以及可能的其他 开发“工作台”接口。
这个工作的原因有点复杂,所以请继续阅读 你有兴趣知道。 DOSBox 没有真正的 Ctrl-Break 像真正的 DOS 一样处理,它是硬件和 软件中断和内部标志。但是,DOS Ctrl-Break handler 只是一个默认处理程序,都以 INT 9 开头, 键盘硬件中断。许多程序开发应用程序挂钩 INT 9 并在 DOS 看到之前拦截密钥,以便他们可以执行他们的操作 自己加工。毕竟,Ctrl-Break 的 DOS 默认行为是 终止应用程序,这通常不是我们想要的。 INT 9 处理程序代码通过检查 在 BIOS 数据中移动状态字节,然后从 键盘数据端口 60h。 ScrollLock 的扫描码是 46h,并且 Ctrl-Break 的扫描码是 E0h 46h 的 2 字节“转义”序列, 其中 E0h 是转义码。似乎处理程序例程通常是 他们对转义码的处理不是很严格,只是 放下它,所以 Ctrl-ScrollLock 最终与 Ctrl-Break 一样工作。
【讨论】:
当在 Qbasic 中按下功能键时,此代码片段会退出程序:
DO
DO
' read keyboard
X$ = INKEY$
IF LEN(X$) THEN
EXIT DO
END IF
LOOP
IF LEN(X$) = 2 THEN
x = ASC(RIGHT$(X$, 1))
' exit program on F1 to F10
IF x >= 59 AND x <= 68 THEN
END
END IF
END IF
LOOP
【讨论】: