在计时器运行时将命令输入ruby?

在计时器运行时将命令输入ruby?,ruby,timer,sleep,Ruby,Timer,Sleep,我正在构建一个基于文本的冒险游戏,我有一个实例,用户遇到敌人,有3秒钟的时间做出反应。我的计时器代码如下所示: def timer puts "1" sleep(2) puts "2" sleep(2) puts "3" sleep(2) end 这很有效,但是在将1、2、3打印到控制台时,它不会让我输入命令。因此,我希望用户能够在计时器运行时键入“攻击”。此时,可以在定时器期间输入命令,但直到定时器完成后,命令才会在控制台上注册。这能做到吗 谢谢您需要在不同的线程上运

我正在构建一个基于文本的冒险游戏,我有一个实例,用户遇到敌人,有3秒钟的时间做出反应。我的计时器代码如下所示:

def timer
  puts "1"
  sleep(2)
  puts "2"
  sleep(2)
  puts "3"
  sleep(2)
end
这很有效,但是在将1、2、3打印到控制台时,它不会让我输入命令。因此,我希望用户能够在计时器运行时键入“攻击”。此时,可以在定时器期间输入命令,但直到定时器完成后,命令才会在控制台上注册。这能做到吗


谢谢

您需要在不同的线程上运行计时器:

def timer
  Thread.new do
    puts "1"
    sleep(2)
    puts "2"
    sleep(2)
    puts "3"
    sleep(2)
  end
end

现在,您可以在计时器运行时收听输入。当计时器过期时,您仍然需要与主逻辑通信…

感谢Uri解决了我的问题!但是,当在屏幕上打印1、2、3时,用户输入的数字与正在打印的数字冲突。例如,在键入攻击时,数字2被打印出来,ruby无法识别2攻击。我需要1,2,3独立于用户的输入。有什么建议吗?@user3315570-AFAIK它们不应该冲突。打印输入,确保它是您认为的。。。