viernes, 5 de febrero de 2016

Adivinar el número secreto

Puede descargar el archivo de Excel: adivina.xlsm


Vamos a programar un juego sencillo con una Macro de Excel para ilustrar los bucles Do ... Loop. Puede ver la información sobre estos bucles en el siguiente post.

Juego de adivinar el número secreto



Se trata de un juego donde el ordenador piensa un número secreto entre 1 y 100, sin decimales, y nosotros tenemos que adivinar qué número ha pensado.


El ordenador nos pide que introduzcamos por teclado un número y luego nos informa con una de las siguientes posibilidades:
  • El número el menor
  • El número el mayor
  • Felicidades, ha adivinado el número secreto
  • Si superamos los 10 intentos nos avisa de ello y nos muestra el número secreto. 

Veamos la macro que hemos utilizado.


Sub adivina()
    Dim zona As String
    Dim x As Byte, n As Byte
    Dim tirada As Byte
    Randomize
    x = Fix(Rnd * 101): tirada = 1   'FIX=INT=parte entera
    Do
        If zona = "" Then
            n = InputBox("Introduzca un número entero del 0 al 100" & vbCrLf _
            & "Dispone de 10 tiradas para lograrlo", "Tirada número " & tirada)
        Else
            n = InputBox("El número secreto es " & zona & vbCrLf & _
            "Introduzca otro", "Tirada número " & tirada)
        End If
        If n = x Then
            MsgBox "Felicidades!!!" & vbCrLf & "Ha adivinado el número secreto " _
            & x & ", en " & tirada & " tiradas"
            Exit Sub
        End If
        If x < n Then
            zona = "Inferior"
        Else
            zona = "Superior"
        End If
        tirada = tirada + 1
    Loop Until tirada > 10
    MsgBox "Ha agotado las 10 tiradas disponibles" & vbCrLf _
    & "El número secreto es " & x
End Sub


Ejercicio propuesto


Modifique el código anterior para emplear alguno de los siguientes tipos de bucles:

  • Do While ... Loop
  • Do ... Loop While

Otra pregunta: ¿Se podría emplear un bucle Do ... Loop sin usar ningún While, ni usar Until?

1 comentario: