2010-10-06 18 views
8

Está bien, estoy tratando de escribir una simulación de rubí de mi abuela. No obstante, no puedo hacer funcionar el lazo de la manera que me gustaría. Quiero abuelita a responder conRuby Loops con la abuela

"Oh, eso me recuerda BACK IN (año al azar) ..."

cuando su respuesta en todas las tapas, pero también quiero que ella responde con

"WHAT'D YOU SAY ????"

cuando no utilice todas las tapas. Puedo hacer que cada uno trabaje por separado, pero parece que no puedo hacer un bucle continuo de abuelita con sus locas respuestas. Aquí está el código:

puts 'HELLO SONNY! WHAT\'S NEW IN THE WHO\'S IT WHAT\'S IT?' 
response = gets.chomp 

while response == response.upcase 
    puts 'OH, THAT REMINDS ME OF BACK IN ' + (rand(50) + 1905).to_s + '...' 
    response = gets.chomp 
end 

while response != response.upcase 
    puts 'WHAT\'D YOU SAY????' 
    response = gets.chomp 
end 

¿Alguna idea?

+3

Get off my lawn! –

+0

Dado que, obviamente, simplemente comenzó a aprender Ruby (comencé con el mismo tutorial), solo quería señalar que no tiene que escapar caracteres en una cadena si utiliza comillas dobles "" en lugar de comillas simples. Es conveniente en situaciones simples como estas. –

Respuesta

7

El problema es que una vez que sale del primer bucle while, nunca volverá a él. Intentar algo como esto:

while true 
    response = gets.strip 
    if response == response.upcase 
    puts msg1 
    else 
    puts msg2 
    end 
end 

Que a correr para siempre, hasta que decida matar virtual abuelita con Ctrl-C.

+0

¡Genial, eso la corrigió! ¿Alguna ventaja al usar .strip sobre .chomp? – 585connor

+0

Me gusta porque hace tanto espacios en blanco iniciales como finales de cualquier tipo, donde chomp simplemente saca líneas nuevas. En este caso, sin embargo, realmente no necesitas tampoco. – perimosocordiae

+0

"kill virtual-abuelita" - eso está mal ... –

0

Este programa funciona, aunque soy novato, así que puede que no sea la mejor manera. También mi matemática es más creativa que práctica, los otros muchachos son mucho mejores. :)

puts 'Talk to your grandma!' 

while true 
    say = gets.chomp 

    if say == say.downcase 
    puts 'WHAT DID YOU SAY? SPEAK UP!' 

    else say == say.upcase 
    puts "NO HONEY, NOT SINCE 19" + (rand(90) + 10).to_s 

    end 

    break if say == 'bye'.upcase 

end