0
我正在尝试创建一个像游戏一样的“tamagoshi”来练习红宝石。我希望程序能够等待用户输入来做某些事情,但有时候(现在我用了10秒钟,直到我理解正确)我想要一种方法发生(宠物失去能量,随着时间变得更加悲伤) 。但是,如果用户输入一个动作,我希望定时器停止重置。在等待用户输入红宝石时制作一个时间计数器
我有一些问题,尝试了不同的东西,现在,我只能做一个动作。之后,没有任何反应。我想在做“.join”之后我没有创建一个新线程,但我不确定。
在我刚开始学习Ruby时,我非常欢迎所有关于其他代码的批评者提高我的技能和知识。
dog = Dog.new 'Yoshi'
def play pet
user_action = nil
timer_thread = Thread.new do
while !user_action
(1..10).each do |number|
sleep(1)
puts number
end
pet.time_goes_on
user_action = nil
end
end
user_action = gets.chomp
case user_action
when "play"
pet.play_fetch
when "eat"
pet.feed
when "train"
pet.training
when "sleep"
pet.sleep
when "walk"
pet.take_for_a_walk
else
puts "invalid command, try again"
play(pet)
end
timer_thread.join
end
while dog.is_alive
play(dog)
end
下面是完整的代码在repl.it: tama'yoshi'
请把代码放在问题中。外部链接需要额外的工作才能打开,有些人不愿点击任意的非现场链接,其内容可能会过期。 – tadman
好的。我不想在这里发布这么大的代码块,所以如果有人想要看到Dog对象,只需点击我保存该项目的链接repl.it –
最好发布最少量的代码你的问题,并允许其他人重现它。你在这里有什么是几乎太多,但很好。你真正需要的是一个事件循环,你可以在等待用户输入时旋转。这是大多数游戏的基本核心。 – tadman