Я создаю игру палача и не знаю, как заменить подчеркивания в hidden_word (String) соответствующими буквами в player_input (Array).Есть идеи, что мне делать?Заранее спасибо, я ценю это!
def update
if @the_word.chars.any? do |letter|
@player_input.include?(letter.downcase)
end
puts "updated hidden word" #how to replace underscores?
end
puts @hidden_word
puts "You have #{@attempts_left-1} attempts left."
end
У меня есть две строки: the_word и hidden_word и массив, player_input.Всякий раз, когда игрок выбирает букву, которая совпадает с словом, скрытое слово должно обновляться.
Например
the_word = "RUBY"
hidden_word = "_ _ _ _ "
Игрок выбирает" g ", все еще скрытое слово" _ _ _ _ "
Игрок выбирает" r ", обновления скрытого слова" R _ _ _ "
Вот остаток кода:
class Game
attr_reader :the_word
def initialize
@the_word = random_word.upcase
@player_input = Array.new
@attempts_left = 10
end
def random_word
@the_word = File.readlines("../5desk.txt").sample.strip()
end
def hide_the_word
@hidden_word = "_" * @the_word.size
puts "Can you find out this word? #{@hidden_word}"
puts "You have #{@attempts_left} attempts left."
puts @the_word #delete this
end
def update
if @the_word.chars.any? do |letter|
@player_input.include?(letter.downcase)
end
puts "updated hidden word" #how to replace underscores?
end
puts @hidden_word
puts "You have #{@attempts_left-1} attempts left."
end
def guess_a_letter
@player_input << gets.chomp
puts "All the letters you have guessed: #{@player_input}"
end
def has_won?
if !@hidden_word.include?("_") || @player_input.include?(@the_word.downcase)
puts "You won!"
elsif @attempts_left == 0
puts "You lost..."
end
end
def game_round #the loop need fixin
puts "Let's play hangman!"
hide_the_word
while @attempts_left > 0
guess_a_letter
update
@attempts_left -= 1 #fix this
has_won?
break if @player_input.include?("q") #delete this
end
end
end
new_game = Game.new
new_game.game_round