
14/06/2007, 08:51
|
| | Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años, 10 meses Puntos: 1 | |
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 |