2

我正在创建一个游戏,我希望如果用户按 F10 或任何其他功能键,那么程序应该结束。

4

4 回答 4

4

有点糟糕,你没有得到这个答案......

首先,您必须找到您希望作为出口的任何键的 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 还是有点生疏

于 2014-01-15T23:33:45.470 回答
2

我假设你正处于某种 BASIC 程序的中间,你想“退出”,退出这个?按下ENTER进入空白区域并输入systemENTER再次点击,您就出局了!

于 2015-01-19T17:18:17.000 回答
1

对于未来的搜索者,这个答案提供了额外的背景信息,为退出 BASIC 程序的机制设计提供信息。

对于一些设计简单的 BASIC 程序,唯一的退出方法是 Control-C 或 Control-Break。但是某些仿真器(例如 DOSBox)不会以将 Control-C 呈现给底层程序的方式处理 Control-C。

在某些系统上,您可以按Ctrl-ScrollLock作为解决方法

对于那些感兴趣的人,我有一个小技巧:使用 Ctrl-ScrollLock,它的行为类似于 Ctrl-Break,许多 BASIC 解释器在 DOSBox 中运行。它与 GW-BASIC、BASICA(通常与 Compaq 等兼容的 DOS 捆绑在一起)、QBasic、QuickBasic 以及可能的其他开发“工作台”接口一起使用。

这个工作的原因有点复杂,所以如果你有兴趣知道,请继续阅读。DOSBox 不像真正的 DOS 那样具有真正的 Ctrl-Break 处理,后者是硬件和软件中断以及内部标志的组合。但是,DOS Ctrl-Break 处理程序只是一个默认处理程序,它都以 INT 9 开头,即键盘硬件中断。许多程序开发应用程序挂钩 INT 9 并在 DOS 看到密钥之前拦截它们,因此它们可以进行自己的处理。毕竟,Ctrl-Break 的 DOS 默认行为是终止应用程序,而这通常不是我们想要的。INT 9 处理程序代码通过检查 BIOS 数据中的移位状态字节来查找被按下的控制键,然后从键盘数据端口 60h 读取扫描码。ScrollLock 的扫描码是 46h,Ctrl-Break 的扫描码是 E0h 46h 的 2 字节“转义”序列,其中 E0h 是转义码。似乎处理程序例程在处理转义码时通常不是很严格,只是将其删除,因此 Ctrl-ScrollLock 最终与 Ctrl-Break 一样工作。

于 2017-06-07T15:24:23.900 回答
0

当在 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
于 2017-06-09T02:06:02.040 回答