混乱的控制流(Ruby)

Confusing control flow (Ruby)

我正在尝试在 Ruby 中创建一个游戏,其中涉及按一定顺序选择数字并在有限的尝试次数中获得正确的顺序,等等,等等,等等。我的问题是,无论我猜什么数字,它都不会添加到 @correct_r 变量中,如果它位于正确的位置,它也不会显示。

我几乎确定我在某处遗漏了一个 if/else 语句,但不确定在哪里。感谢任何帮助。

代码

#by Touka, ©2015
actions = (0..9).to_a
@sequence = []
4.times do |key|
    key = actions.sample
    @sequence << key
end
@fails_left = 10
@correct_a = 0
@correct_r = 0
@a = " "
@b = " "
@c = " "
@d = " "
def sel
    system "cls"
    puts """
    __________________________________
   /   ___     ___     ___     ___    \
   |  |   |   |   |   |   |   |   |   |
   |  | #{@a} |   | #{@b} |   | #{@c} |   | #{@d} |   |
   |  |___|   |___|   |___|   |___|   |
   \__________________________________/

Tries left:                      #{@fails_left}
Correct numbers (in wrong spot): #{@correct_r}

Enter guess (x x x x):"""
    guess = gets.chomp
    guess = guess.split(" ")
    case guess[0]
    when @sequence[0]
        @correct_a += 1
        @a = "#"
    when @sequence[1]
        @correct_r += 1
    when @sequence[2]
        @correct_r += 1
    when @sequence[3]
        @correct_r += 1
    end
    case guess[1]
    when @sequence[0]
        @correct_r += 1
    when @sequence[1]
        @correct_a += 1
        @b = "#"
    when @sequence[2]
        @correct_r += 1
    when @sequence[3]
        @correct_r += 1
    end
    case guess[2]
    when @sequence[0]
        @correct_r += 1
    when @sequence[1]
        @correct_r += 1
    when @sequence[2]
        @correct_a += 1
        @c = "#"
    when @sequence[3]
        @correct_r += 1
    end
    case guess[3]
    when @sequence[0]
        @correct_r += 1
    when @sequence[1]
        @correct_r += 1
    when @sequence[2]
        @correct_r += 1
    when @sequence[3]
        @correct_a += 1
        @d = "#"
    end
    ct = @correct_r + @correct_a
    if ct == 0
        @fails_left -= 1
    else
        hi = " "
    end
    sel
end
sel

你的问题在于不同类型的序列和猜测变量。序列是整数数组,猜测是字符串数组。您需要将它们转换为相同的类型。

guess = guess.map(&:to_i)