我正在制作一个名为'Pushback'的红宝石街机游戏,你将每个数字推回零,游戏的目标是不让任何数字超过9.但是......有一个问题屏幕刷新时,屏幕输出线程仅提供开始状态(000),并且不输出除此之外的任何内容。
代码在这里:
$screen = '000'
Thread.new do
loop do
puts $screen
sleep 1
$screen[0] = ($screen[0].to_i + 1).to_s
$screen[1] = ($screen[1].to_i + 1).to_s
$screen[2] = ($screen[2].to_i + 1).to_s
clear
end
end
loop do
case gets.chomp.downcase
when ?l
$screen[0] = '0'
when ?m
$screen[1] = '0'
when ?r
$screen[2] = '0'
end
end
编辑:
(1)我尝试在线程外部创建一个函数,然后从内部调用它,但这仍然不起作用。
(2)其中一个答案是关于Mutex。我用它并且它起作用了。这是最终的代码