Meta: Adivina el número de la criaturita en este juego de adivinanza.
Vocabulario: random, > (greater than sign), < (less than sign)
to startup
set "question "pos [-200 140]
set "announce "pos [-200 140]
setbg 0
t1, setsh "critter
conversation
end
to conversation
make "mynumber 1 + random 100
question [¡Hola! ¡Juguemos a las adivinanzas! ¿Cómo te llamas?]
if empty? answer [stop]
make "yourname answer
question (se :yourname [, adivina un número entre 1 y 100.] )
guessing-game
end
to guessing-game
if empty? answer [stop]
if answer > :mynumber [question (se answer [es demasiado alto. ¡Prueba otra vez!] ) ]
if answer < :mynumber [question (se answer [es demasiado bajo. ¡Prueba otra vez!] ) ]
if answer = :mynumber [announce (se "¡Bien, :yourname [! ¡] answer [es el número correcto!] ) stop]
guessing-game
end
to Let's_play_again!
startup
end
Notas Podemos crear un juego de adivinanza en una conversación.
- En el procedimiento conversation, pide al computador que escoja un número al azar (random) entre 1 y 100 y que lo recuerde creando una variable con este comando:
make "mynumber 1 + random 100
- En el procedimiento guessing-game, compara cada respuesta con mynumber (usando >, <, y = ) y dile al visitante si su número es demasiado alto, demasiado bajo, o justo el correcto. Ya que deseamos que el usuario siga intentando, será una buena idea crear un procedimiento recursivo sólo para los intentos. Este procedimiento seguirá ejecutándose hasta que el usuario haya adivinado el número.
- Una nota sobre paréntesis y corchetes:
¡El procedimiento guessing-game utiliza muchos corchetes y paréntesis!. Esta es la razón:
1. Cuando usamos if necesitamos poner corchetes alrededor de el comando o comandos que el computador debe hacer si la condición es verdadera.
2. Ya que estamos incluyendo cada respuesta en la pregunta siguiente, necesitamos usar se para insertar esa respuesta, y necesitamos usar paréntesis alrededor de todo lo que es incluido en la frase.
3. Ya que estamos usando grupos de palabras dentro de la frase, necesitamos poner corchetes alrededor de esas palabras.
Así que cuando veas esto al final de la línea: ] ) ]
el primer corchete cierra el grupo de palabras en la frase,
el paréntesis cierra la frase, y
el último corchete cierra el comando if.
Cuando veas esto al final de una línea: ] ) stop ].
stop está todavía dentro del comando if, y por lo tanto, si la condición es verdadera, el juego se detendrá luego de que el computador anuncie que esa es la respuesta correcta.
¿Qué pasa si?
Intenta un número diferente después de random. Intenta 50... intenta 999. ¿Cuántos intentos te toma, en promedio, adivinar el número ahora?
Intenta dar un nombre diferente a la variable mynumber (en todas partes). ¿Funciona de igual manera?
Desafío
¿Puedes establecer un rango diferente de números para el juego de adivinanza para que, por ejemplo, el número siempre esté entre 100 y 200? o entre 250 y 500? o entre -100 y 100?
|