私は端末ゲームを書いています。これは毎秒ゲームフィールドを書き換えます。私は、ユーザーがキーを押すことによって対話したい。ここに私が思いついたものの単純化された例があります:Rubyで入力を取得
require 'io/console'
move = true
thr = Thread.new do
while move do
puts "Foo"
sleep(1)
end
end
loop do
input = $stdin.getch
if input == "a"
move = false
break
end
end
このように見えます。
ゲームを作成している場合は、['curses'](https://github.com/ruby/curses)ライブラリを使用し、キーボードの読み取り可能な状態をチェックするイベントループが必要な場合があります。スレッドの理由はありません。 – tadman
スレッドによる正しい出力方法 –
私はあなたのコードを試してみたとき、 "Foo"は常にあなたの場合のように挿入されていない行の先頭に書かれています。これは、端末の設定が異なるためです。 'puts'は文字列の最後に改行を書き出し、使用している端末は改行を改行コードとして解釈します。 Foo \ r "'を書くときの出力はどうですか? – user1934428