Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/06/2007, 08:51
vrael
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años, 10 meses
Puntos: 1
Exclamación Juego Basic, Problema con un Bucle!

Hola, estoy realizando un pequeño "juego" como trabajo para la clase de informática. El caso, es que aunque puede tener un código muy rudimentario, tiene un pequeño fallo, pero por más que lo reviso no encuentro el porqué:

A continuación les explico un poco y les pongo el códgo para ver si encuentran ustedes el fallo:

Es un programa en el cual se tirarán al principio unos dados y se genera un valor aleatorio para tí y para tu contrincante (el pc, tu enemigo). En función del que saque más alta puntuación, empezará tirando. El valor de la tirada, será restado a la vida total que se nos asigne (en esete caso 100 para nosotros, 150 para el pc). El caso es que te irá pidiendo que cada vez, que pulses los dados para tirar de nuevo.
Ahora bien, el problema surge cuando lo ejecuto. Todo va perfecto, hasta llegar al bucle while, que pareceser que origina un desbordamiento y se queda pillado el programa. Pero por más que busco como cambiarlo o arreglarlo, no lo consigo. Haber si me puediesen ayudar por favor.

Código:

Option Explicit

Dim i As Single
Dim num1
Dim num2
Dim a
Dim vm
Dim vt
Dim dr
Dim dp
Dim h
Dim turno


Private Sub Command1_Click()

i = i + 1
vm = 100
vt = 150

If i = 1 Then

Randomize
num1 = Int((Rnd * 20) + 1)
Text1.Text = "Has sacado: " & num1

Randomize
num2 = Int((Rnd * 20) + 1)
Text1.Text = Text1.Text + vbCrLf + vbCrLf + "Tu enemigo ha sacado: " & num2

If num1 > num2 Then
h = -1
Text1.Text = Text1.Text + vbCrLf + vbCrLf + vbCrLf + " EMPIEZAS ATACANDO: ¡PREPARATE!"
Timer1.Enabled = True
End If

If num2 > num1 Then

Text1.Text = Text1.Text + vbCrLf + vbCrLf + vbCrLf + " TU ENEMIGO EMPIEZA ATACANDO: ¡PREPARATE!"
Timer1.Enabled = True

End If

End If


If i >= 2 Then
If num1 > num2 Then
turno = -1
While vm > 0 Or vt > 0
If turno = -1 Then
Text1.Text = "Tira los Dados:"
h = h * (-1)

If h > 0 Then

Randomize
dp = Int((Rnd * 20) + 1)
Text1.Text = vbCrLf + vbCrLf + "Tu ataque quita " & dp & " de daño."
vt = vt - dp
turno = turno * (-1)
End If
End If


If turno = 1 Then

Randomize
dr= Int((Rnd * 20) + 1)
Text1.Text = "Tu enemigo te quita:" & dr & " de vida."
vm = vm - dr
turno = turno * (-1)
End If

Wend
End If
End If
End Sub




Private Sub Timer1_Timer()

a = a + 1
If a = 3 Then
Text1.Text = vbCrLf + vbCrLf + vbCrLf + vbCrLf + " ¡¡EMPIEZA EL COMBATE!!"
End If

If a = 5 And num2 > num1 Then

Randomize
num2 = Int((Rnd * 20) + 1)
Text1.Text = vbCrLf + vbCrLf + "Tu enemigo ha sacado: " & num2
End If

If a = 5 And num1 > num2 Then
Text1.Text = "Tira los Dados:"
End If
End Sub

Última edición por vrael; 15/06/2007 a las 08:20