【问题标题】:how to delay choice (batch) in under a second?如何在一秒钟内延迟选择(批次)?
【发布时间】:2015-06-28 21:22:34
【问题描述】:

有什么方法可以将选择命令(批量)延迟在一秒钟内?

例如,如果我想制作一个你可以四处走动的游戏,并且你有一些敌人需要战斗,那么敌人的移动速度就不会那么快(它们只会每秒移动一次!)。

这是我尝试过的:

choice /c 123 /n /t 0.2 /d c

如您所见,我想延迟大约 0.2 秒。

我也尝试过使用0,但是当我这样做时,1, 2 and 3 按钮不起作用...

告诉我是否需要更具体!

感谢大家的帮助:D

【问题讨论】:

    标签: batch-file delay choice


    【解决方案1】:

    不,本机 CHOICE 命令不支持小于 1 秒的超时值。即使有,我也不认为它会对你有所帮助。

    根据您问题中的信息,听起来您正在尝试开发一款实时运行(非回合制)的图形游戏。我假设您希望游戏通过移动对象不断更新屏幕,并在用户按下某些键时以某种方式做出响应。

    CHOICE 命令只会识别在等待时发生的按键 - 换句话说,按键不会被缓冲。大概您的批处理脚本处于一个循环中,该循环获取用户输入,进行一系列计算,然后刷新屏幕。计算和刷新屏幕需要时间。有些按键会起作用,因为它们恰好在 CHOICE 执行时发生,而有些则不会。这可能会让用户非常沮丧。

    (请注意,来自管道或重定向输入的输入被缓冲,但不是直接按键)

    我相信您需要以下所有内容来开发图形游戏:您需要某种机制来缓冲按键,并在批处理循环中测试并在检测到按键时采取行动。您希望按键测试是“即时的”(非阻塞)。您还需要一种通过引入亚秒级睡眠来控制游戏速度的机制。还有很多其他问题需要解决。所有这一切都可以使用批处理来实现,但是非常困难,需要大量关于批处理脚本如何工作的无证知识,以及大量晦涩难懂的语法和技巧。

    有第三方工具可以让工作更轻松,但有什么意义呢?

    注意 - 以下是我的意见,StackOverflow 不赞成基于意见的答案。但是,这里...

    如果您只是想开发游戏,和/或自学一些编程技能,那么批处理是一个糟糕的起点。使用几乎可以找到的任何其他语言都会好得多。使用批处理以外的任何东西,你最终会以更少的努力得到一个更优秀的产品,并在你做的时候学习更多有用的技能。

    但是,如果您想纯粹为了挑战和乐趣而使用批处理开发游戏,那么我喜欢您的思维方式,并且给您更多力量 :-) 但是,如果这是您的目标,那么我建议不要使用任何第三方工具,否则它在我的书中作弊。

    意见结束

    如果你确定你真的想使用批处理开发游戏,那么我强烈建议你学习我的SNAKE.BAT game。阅读整个线程,并研究代码。但我警告你,有很多先进的技术和技巧很难理解。理解所有内容可能需要多次阅读和大量时间。

    我解决的一件事是如何以“即时”、非阻塞的方式检测按键。我在http://www.dostips.com/forum/viewtopic.php?p=31035#p31035 描述了这项技术。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-02
      • 2023-02-16
      • 1970-01-01
      • 2020-03-07
      • 2022-01-18
      • 2018-04-08
      • 2019-10-25
      • 1970-01-01
      相关资源
      最近更新 更多