こんにちは、私は Chris Pine's から学んでおり、Ruby に関する本をプログラミングすることを学んでいます。終了してから、ビットごとの記事「adventures in ruby」からいくつかのアイデアを取り入れて、テキスト アドベンチャー ゲームを書こうとしています。
戦闘では、プレイヤーのヒット ポイントまたは敵のヒット ポイントのいずれかが 0 になったときにブレークする while ステートメントを挿入しました。2 秒ごとにダメージの計算を実行するタイマーがあります。プレイヤーがタイマーを中断しない方法で戦闘中にコマンドを入力できるようにする方法が欲しいのですが、コードに gets.chomp を呼び出すように要求するとき、プレイヤーが 2 秒以上かかる場合、タイマーはクラッシュします。不要なビットのほとんどを取り除いたコードを次に示します。
while true
start_time = Time.now
hp[1] = hp[1] - (enemy.stats[0] - rand(enemy.stats[0]))
enemy.hp = enemy.hp.to_i - (mystats[0] - rand(mystats[0]))
if hp[1] <= 0 or enemy.hp <= 0
break
end
puts " "
puts "(hp: #{hp[1]} mp: #{mp[1]} st: #{st[1]})"
#enemy conditions go here
puts "Enemy condition: " + condition
puts " "
total_time = Time.now - start_time
sleep(2.0 - total_time)
end
私ができる方法は、2秒ごとにgets.chompを別のタイマーで更新することですが、それを行うことは考えられません。
どんな助けでも大歓迎です。