# Flujo de control confuso (Ruby)

2023-01-25 04:19:05

Estoy tratando de crear un juego en Ruby que implique seleccionar números en un orden determinado y obtener la secuencia correcta en un número limitado de intentos, bla, bla, bla. Mi problema es que, independientemente de los números que adivine, no se suma a la variable `@correct_r` ni se muestra si está en la posición correcta.

Estoy casi seguro de que me falta una declaración `if`/`else` en alguna parte, pero no estoy seguro de dónde. Cualquier ayuda es apreciada.

Código

``````#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
``````

- Touka

Source
##### Responder

0
• Su problema radica en diferentes tipos de secuencias y variables de conjetura. La secuencia es una matriz de enteros y la conjetura es una matriz de cadenas. Debe convertirlos al mismo tipo.

``````guess = guess.map(&:to_i)
``````
x 3935
x 3723
x 3180
x 2388
x 4246