Ruby случайный массив вызова для каждого прохода в цикле? - PullRequest
1 голос
/ 19 марта 2011

Как мне сделать так, чтобы Ruby повторно обрабатывал метод rand в моей переменной "atk" для каждого экземпляра? Прямо сейчас, программа берет случайный номер атка на первом проходе и затем использует его для остальной части программы. Любой совет очень приветствуется!

playerhp = 100
enemyhp = 100
monster = ["Johnny Bravo", "Father Christmas", "Boobzilla", "Lady Gaga", "Derpy-chan"]
m = monster[rand(monster.length)]
melee = [7, 10, 12, 14, 22]
atk = melee[rand(melee.length)]

puts "Your are approached by a horrid looking " + m + "!"
sleep(1)
puts "The " + m + " looks you coldy in the eye and then charges for an attack!"
sleep(1)

while playerhp > 0 do
    puts "The " + m + " has " + enemyhp.to_s + " remaining. What will you do? (type 'attack' or 'defend')"
    action = gets.chomp
        if action == "attack" then
            thisatk = atk.to_i
            enemyhp = enemyhp - thisatk
            puts "You hit the " + m + " for " + thisatk.to_s + " damage!"
        end
        if action == "defend" then
            puts "You crouch in a defensive position!"
        end

    if enemyhp < 1 then
        puts "You completely destroyed that " + m + "! Victory!"
        break   
    end
end

Я уверен, что это худший код на Ruby, который вы когда-либо видели, но имейте в виду, что это моя первая программа на Ruby (только сегодня запущенная) . Я делаю это в первый день, когда провожу изучение любого языка.

Я не умею читать книги ... единственный способ выучить язык - создать с ним боевую игру. Я считаю, что это лучший способ получить меня в среде, которую я узнаю и многому учусь одновременно.

1 Ответ

0 голосов
/ 19 марта 2011

О боже ... Я идиот.Я обработал рандомизацию вне цикла @ _ @.

Извините за смущение.Для всех, кто заинтересован, если вы так же глупы, как и я:

Убрал переменную "atk"

Переместил метод ближнего боя [rand (melee.length)] в цикл.

Новый процесс выглядит следующим образом:

if action == "attack" then
        thisatk = melee[rand(melee.length)]
        enemyhp = enemyhp - thisatk
        puts "You hit the " + m + " for " + thisatk.to_s + " damage!"
    end

Если у кого-то есть дополнительные комментарии о том, как лучше кодировать это конкретное действие, я весь в ушах !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...