【问题标题】:How to exit a gw basic program at any time?如何随时退出 gw 基本程序?
【发布时间】:2013-10-30 17:11:07
【问题描述】:

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

【问题讨论】:

    标签: basic gw-basic


    【解决方案1】:

    你还没有回答这个问题真是太糟糕了......

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        对于未来的搜索者,此答案提供了额外的背景信息,为退出 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 一样工作。

        【讨论】:

          【解决方案4】:

          当在 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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-12
            • 1970-01-01
            • 1970-01-01
            • 2011-01-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多