problema en visual basic

EvIS

hola, tengo un pequeño problema con una chorradilla de visual basic. exactamente, no se me ejecuta la parte final del programa. no me aparece ni el numero de intentos del usuario ni la suma de las respuestas ni el juicio del juego del usuario.. era por si le encontrais el fallo... aqui os lo pego. gracias


Option Explicit
Sub main()

'Explicamos en qué consiste el juego

MsgBox (" Debe adivinar un número escogido aleatoriamente por el ordenador. Usted define el rango y el máximo de intentos. ¡Suerte! ")

'Definimos las variables

Dim rango As Integer
Dim aleatorio As Integer
Dim maxintentos As Integer
Dim i As Integer
Dim prueba As Integer

'Solicitamos el rango y el número de intentos

rango = InputBox("Por favor, introduzca el rango.")
While rango < 0
rango = InputBox("El rango debe ser mayor que cero.")
Wend

maxintentos = InputBox("Por favor, introduzca el máximo de intentos.")
While maxintentos >= rango Or maxintentos < 0
maxintentos = InputBox("El máximo de intentos debe ser mayor que 0 y menor que  " & rango)
Wend

'Generamos el aleatorio

Randomize

aleatorio = Rnd * rango

'Comienza el juego

For i = 1 To maxintentos
    prueba = InputBox("Por favor, introduzca un número entre 0 y  " & rango)
        If prueba = aleatorio Then
        MsgBox ("¡Enorabuena, ha acertado!")

Exit For
    
        Else
            If prueba < aleatorio Then
            MsgBox ("El número correcto es mayor.")
                Else
                MsgBox ("El número correcto es menor.")
            End If
        End If
Next

    If prueba <> aleatorio Then
    MsgBox ("Lo sentimos, no lo ha acertado. Ojalá tenga más suerte la próxima vez.")
    End If

End Sub


Sub main2()

'Definimos las variables

Dim rango As Integer
Dim aleatorio As Integer
Dim maxintentos As Integer
Dim i As Integer
Dim prueba As Integer

Dim j As Integer
Dim suma As Integer

'Solicitamos el rango y el máximo de intentos

rango = InputBox("Por favor, introduzca el rango.")
While rango < 0
rango = InputBox("El rango debe ser mayor que cero.")
Wend

maxintentos = InputBox("Por favor, introduzca el máximo de intentos.")
While maxintentos > rango
maxintentos = InputBox("El máximo de intentos debe ser menor que  " & rango)
Wend

'Generamos el aleatorio

Randomize

aleatorio = Rnd * rango

'Comienza el juego, introduciendo la suma de los números que introduce el usuario y el número de intentos del usuario.

For i = 1 To maxintentos
    prueba = InputBox("Por favor, introduzca un número entre 0 y  " & rango)
    suma = suma + prueba
    j = j + 1
    If prueba = aleatorio Then
    MsgBox ("¡Enorabuena, ha acertado!")

Exit For

    Else
        If prueba < aleatorio Then
            MsgBox ("El número correcto es mayor.")
        Else
            MsgBox ("El número correcto es menor.")
        End If
    End If
Next
    If prueba <> aleatorio Then
        MsgBox ("Lo sentimos, no lo ha acertado. Ojalá tenga más suerte la próxima vez.")
    End If
MsgBox ("Ha tenido  " & j & "  intentos")
MsgBox ("La suma de los números que ha introducido es  " & suma)

End Sub



Sub main3()


'Definimos las variables

Dim rango As Integer
Dim aleatorio As Integer
Dim maxintentos As Integer
Dim i As Integer
Dim prueba As Integer

Dim j As Integer
Dim suma As Integer

'Solicitamos el rango y el máximo de intentos

rango = InputBox("Por favor, introduzca el rango.")
While rango < 0
rango = InputBox("El rango debe ser mayor que cero.")
Wend

maxintentos = InputBox("Por favor, introduzca el máximo de intentos.")
While maxintentos > rango
maxintentos = InputBox("El máximo de intentos debe ser menor que  " & rango)
Wend

'Generamos el aleatorio

Randomize

aleatorio = Rnd * rango

'Comienza el juego, introduciendo un juicio sobre el juego del usuario.

For i = 1 To maxintentos
    prueba = InputBox("Por favor, introduzca un número entre 0 y  " & rango)
    suma = suma + prueba
    j = j + 1
    If prueba = aleatorio Then
    MsgBox ("¡Enorabuena, ha acertado!")

Exit For

    Else
        If prueba < aleatorio Then
            MsgBox ("El número correcto es mayor.")
        Else
            MsgBox ("El número correcto es menor.")
        End If
    End If
Next
    If prueba <> aleatorio Then
        MsgBox ("Lo sentimos, no lo ha acertado. Ojalá tenga más suerte la próxima vez.")
    End If
MsgBox ("Ha tenido  " & j & "  intentos")
MsgBox ("La suma de los números que ha introducido es  " & suma)
  
  
Select Case intentos
Case intentos <= intentos / 4
    MsgBox ("Teniendo en cuenta que sólo ha tenido  " & j & "  intentos podemos decir que es usted muy bueno. ¡Enorabuena!")
Case intentos / 4 To intentos / 2
    MsgBox ("Teniendo en cuenta que ha tenido  " & j & "  intentos podemos decir que es usted bastante bueno.")
Case intentos / 2 To 3 * intentos / 4
    MsgBox ("Teniendo en cuenta sus  " & j & "  intentos solo podemos destacar su mediocridad.")
Case 3 * intentos / 4 To intentos
    MsgBox ("Despues de sus  " & j & "  intentos le diremos que es usted realmente malo.")
End Select

End Sub


Cyph3r

En el primer main no estaria mal el for ?

For i = 1 To maxintentos
prueba = InputBox("Por favor, introduzca un número

entre 0 y " & rango)

If prueba = aleatorio Then
   MsgBox ("¡Enorabuena, ha acertado!")

Else If prueba < aleatorio Then

     MsgBox ("El número correcto es mayor.")
     Else
     MsgBox ("El número correcto es menor.")
     End If

End If

Exit For

Next

If prueba <> aleatorio Then
MsgBox ("Lo sentimos, no lo ha acertado. Ojalá tenga más suerte la próxima vez.")
End If

End Sub

No seria asi ?

orzuelo

Con un par de puntos de interrupcion y un par de inspecciones, y 5 minutos lo sacas, y lo mejor es que te sirve para otros problemas.

Usuarios habituales

  • orzuelo
  • Cyph3r
  • EvIS