我在Ruby中编写了一个刽子手游戏,但在每个单词的末尾打印出两个额外的空格,这可以防止程序知道用户何时获胜,以及让玩家感到困惑。我该如何解决这个问题?代码:
class HangmanGame
def initialize(word)
@word = word
@current_word = "_" * word.size
end
def current_word
@current_word
end
def word
@word
end
def take_guess(guess_ltr)
@word.split("").each_with_index do |word_ltr, i|
if word_ltr == guess_ltr.downcase
@current_word[i] = guess_ltr.downcase
else
print word_ltr
end
end
end
def done?
if @word == @current_word
true
else
false
end
end
end
thewordlist = []
file = File.open("5desk.txt")
答案 0 :(得分:0)
在尝试解决问题时,我还重新编写了一些代码但与问题无关。所以张贴它可能有助于某人:
class Hangman
attr_reader :word
def initialize(word)
@word = word.downcase
@guesses = []
end
def take_guess(c)
character = c.downcase.strip
@guesses << character unless @guesses.include? character
end
def current_word
@word.gsub(/[^#{@guesses.join}\s]/, '_')
end
def done?
!(@word.tr(@guesses.join, '*') =~ /\w/)
end
end
注意:
@current_word
attr_reader
例如:@word
guess_ltr
guess_ltr
current_word
通过使用_
替换猜测和空格以外的所有内容来计算游戏的当前状态。done?
检查在尝试替换猜测后@word
中是否还有任何单词字符。答案 1 :(得分:0)
这不是您问题的答案,但这可能会有所帮助。
最近我建立了一个ruby gem来直接在终端上玩hangman,它被称为play_hangman
。为了构建它,我使用了hangman_engine
gem,它实现了游戏逻辑和一个视图助手来在终端上绘制游戏。查看这些库的代码,也许你觉得它们很有用。
代码来源在这里: