我正在製作一款名爲'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
EDITS:
(1)我試圖做的線程之外的功能,然後從裏面調用它,但仍然不工作。
(2)其中一個答案是關於互斥。我用它,它的工作。下面是最終代碼
https://gist.github.com/nolcay/c6572089c8292331e2f3
你的'clear'命令在幹什麼?你在哪裏定義它? – LukeS
哦,對,我沒有定義,它清除了屏幕(系統'清除') –
你不必使用''.to_s'',一個數組可以做得很好''screen = [0, 0,0]''。然後您可以使用''screen.map!'更新所有屏幕! {| x | x + = 1}''(記住然後將'''0'''改爲''0'') –