Ruby Hangman游戏,当我输入完整单词时不起作用,但只有当我输入一个字母时才起作用
在ruby解释器上运行我的代码,查看我的代码。然后,试着猜完整的单词。程序会告诉你你的猜测是正确的,但是如果你一个接一个地猜出整个单词而不是每个字母,那么游戏就不会结束 我还想在我的代码中添加一个字典,以便能够在电脑上玩,而不是和我自己或朋友玩Ruby Hangman游戏,当我输入完整单词时不起作用,但只有当我输入一个字母时才起作用,ruby,command-line,Ruby,Command Line,在ruby解释器上运行我的代码,查看我的代码。然后,试着猜完整的单词。程序会告诉你你的猜测是正确的,但是如果你一个接一个地猜出整个单词而不是每个字母,那么游戏就不会结束 我还想在我的代码中添加一个字典,以便能够在电脑上玩,而不是和我自己或朋友玩 def clear_screen return system('cls') if Gem.win_platform? system('clear') end loop do incorrect_guesses = 0 puts ''
def clear_screen
return system('cls') if Gem.win_platform?
system('clear')
end
loop do
incorrect_guesses = 0
puts ''
puts 'Welcome to Hangman, Win or lose your life!'
puts ''
puts 'Choose Category: It can be anything you desire!'
player1_category = gets.chomp
puts ''
puts 'Player 1, Please enter your desired word'
secret_word = gets.chomp.downcase
clear_screen
correct_guess = ['-'] * secret_word.length
clear_screen
puts "The category is: #{player1_category}"
puts 'Player 2, Please enter your guess'
loop do
puts '_ ' * secret_word.length
player2_guess = gets.chomp.downcase
clear_screen
if secret_word.include? player2_guess
secret_word.each_char.with_index do |letter, i|
next unless letter == player2_guess
correct_guess[i] = letter
end
puts "The category is: #{player1_category}"
puts ''
print 'Guess the word: '
print correct_guess.join('')
puts ''
puts 'Correct. Keep trying!!'
puts ''
else
puts "The category is: #{player1_category}"
puts ''
print 'Guess the word: '
print correct_guess.join('')
puts ''
puts "The word doesn't contain that letter '#{player2_guess.upcase}'"
puts ''
incorrect_guesses += 1
end
puts "Incorrect Guesses: #{incorrect_guesses}"
puts ''
if incorrect_guesses == 6
puts ''
puts '|---+---+- '
puts '| |'
puts '| 0'
puts '| |\\'
puts '| /\\'
puts '-+----------'
puts "The Secret Word is '#{secret_word.capitalize!}'"
puts ''
break
end
next unless secret_word == correct_guess.join('')
puts ''
puts ' (@)'
puts ' ^\\|'
puts ' |/^'
puts '____|_____'
puts ''
puts 'You Win!'
puts ''
puts "You correctly guessed the word '#{secret_word.capitalize!}'"
break
end
end
你的问题不是很清楚,但这里有一些评论/答案:
包起来,如果是secret\u word.include?player2_guess
在另一个测试中,如果测试输入的长度。(假设所有单词都大于1个字母)。if语句应该测试user\u input.length>1
。如果是,评估猜测是否正确,等等{'category_1'=>[word,word,word],'category_2'=>[word,word,word]}
。然后可以从散列(类别)中选择一个随机值,然后从相应的数组中选择一个随机值我在下一个测试中进行了以下更改:
if secret_word.include? player2_guess
secret_word.each_char.with_index do |letter, i|
next unless player2_guess.include? letter
correct_guess[i] = letter
end
您正在将整个条目与单个字符进行比较。”t'!='测试'
至于字典,中的答案应该有帮助嗨,欢迎来到stackoverflow。有几件事-如果您遇到错误,请包括完整的堆栈跟踪。另外,请强调你问题的核心,尽量不要包含太多无关紧要的信息。编写Ruby时,您可以使用类似于
pry
的调试器进行大量工作。