Merhaba Chris Pine'ın öğrencisiydim, Ruby hakkında kitap programlamayı ve bitirdiğimden beri bir metin macera oyunu yazmaya çalışıyorum. "Ruby'de maceralar" adlı bitsel makaleden bazı fikirler.Beginner Question - Gets.chomp, zamanlayıcımın çalışmasını durdurur ve bir çökmeye neden olur
Savaşta, oyuncunun hit puanları ya da düşmanın vuruş puanları 0'a ulaştığında kırılan bir açıklama yazdım. Her 2 saniyede bir hasarı matematik için çalıştıran bir zamanlayıcı var. Oyuncunun zamana müdahale etmeyecek bir şekilde dövüş sırasında komutları yazmasına izin vermenin bir yolunu kullanmak istiyorum, ancak kodun bir gets.chomp çağırması istendiğinde, oynatıcı 2 saniyeden fazla sürerse, zamanlayıcı çöker. Başka bir zamanlayıcı yenileme gets.chomp her 2 saniyede olması
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
yapılabilir olabilir ben şeyi can yoldur ama bunu yapmak için düşünemiyorum: - İşte yararsız bit çoğuyla kod çıkarıldı .
Herhangi bir yardım beni çok takdir ederdi.
İçinde bulunduğunuz sorunlar, aynı anda iki şeyi yapmaya çalıştığınız içindir. Programın giriş için engellenmesine izin verirken bir zamanlayıcının çalışmasını istiyorsanız, iş parçacığı veya EventMachine gibi bir eşzamanlılık çerçevesini kullanmaya ihtiyacınız vardır. – Jeremy
Teşekkürler Jeremy, konulara bir göz attım ve temel bir sistemi devreye sokmayı başardım. Böylelikle, mücadele, döngüyü içeren yeni bir iş parçacığı başlatır ve aktör öldüğünde, ana oyun döngüsüne geri döner. Çok teşekkür ederim :) –