Bueno como había comentado, estoy haciendo un Piedra, Papel O Tijera.
Y mi duda es la siguiente:
Una vez que elegis la opción y ganás, perdés o empatas el programa se queda ahi. Probando y probando todavía no se me ocurrio como hacer para volver a preguntar si volver a jugar o no. Se que se haría con un bucle pero probé y todavía no lo saqué.
Pensé que funcionaría con la función load (para volver a cargar el form) pero no funcionó. Les dejo el código:
Private Sub image1_Click()
Frame1.Enabled = False
imgpiedra.Visible = True
Randomize (Timer)
alea = Int((3 - 1 + 1) * Rnd + 1)
If alea = 1 Then
imgpiedra2.Visible = True
ElseIf alea = 2 Then
imgpapel2.Visible = True
ElseIf alea = 3 Then
imgtijera2.Visible = True
End If
If imgpiedra.Visible = True And imgpiedra2.Visible = True Then
MsgBox ("EMPATE!!")
ElseIf imgpiedra.Visible = True And imgpapel2.Visible = True Then
MsgBox ("PERDISTE!!")
ElseIf imgpiedra.Visible = True And imgtijera2.Visible = True Then
MsgBox ("GANASTE")
End If
End Sub
Private Sub image2_Click()
imgpapel.Visible = True
Frame1.Enabled = False
Randomize (Timer)
alea = Int((3 - 1 + 1) * Rnd + 1)
If alea = 1 Then
imgpiedra2.Visible = True
ElseIf alea = 2 Then
imgpapel2.Visible = True
ElseIf alea = 3 Then
imgtijera2.Visible = True
End If
If imgpapel.Visible = True And imgpiedra2.Visible = True Then
MsgBox ("GANASTE!!")
ElseIf imgpapel.Visible = True And imgpapel2.Visible = True Then
MsgBox ("EMPATE!!")
ElseIf imgpapel.Visible = True And imgtijera2.Visible = True Then
MsgBox ("PERDISTE!!")
End If
End Sub
Private Sub image3_Click()
imgtijera.Visible = True
Frame1.Enabled = False
Randomize (Timer)
alea = Int((3 - 1 + 1) * Rnd + 1)
If alea = 1 Then
imgpiedra2.Visible = True
ElseIf alea = 2 Then
imgpapel2.Visible = True
ElseIf alea = 3 Then
imgtijera2.Visible = True
End If
If imgtijera.Visible = True And imgpiedra2.Visible = True Then
MsgBox ("PERDISTE!!")
ElseIf imgtijera.Visible = True And imgpapel2.Visible = True Then
MsgBox ("GANASTE!!")
ElseIf imgtijera.Visible = True And imgtijera2.Visible = True Then
MsgBox ("EMPATE!!")
End If
End Sub
Y la otra duda que tengo es que porqué una vez compilado y ejecutado varias veces, el proceso siempre queda abierto? Yo juego una partida, lo cierro y vuelvo a abrir y tengo el proceso anterior abierto. Les dejo una imágen.
(http://img27.imageshack.us/img27/9706/screenyyo.jpg)
Como ven, ya había cerrado el juego pero el proceso se seguía ejecutando. La verdad me parece rarísimo, nunca me había sucedido.
Esas son mis dos dudas, muchas gracias como siempre
Salu2!
Mas info.
como se ve estas haciendo un hide a un formualrio o andas dejando algo cargado en la memoriaaun no cierras, descargas TODOS los elementos de la misma (la memoria) usa "unload objeto" para descargar el formulario x que queda cargado igual prueba con terminarTOdo bucle "Do While" si lo implementaste o ya si no te resulta usa el "END" para terminar ya todo tu proceso a lo bruto (no se recomienda)
Okz, eso lo solucioné. Muchas gracias.
Con respecto a que pregunté, volver a jugar o no? Como puedo hacer?
Donde tendría que ubicar el bucle?
Saludos!
Luego de ganaste, perdiste ,empate , pones un MsgBox que haga la pregunta , si la respuesta es si ( VBYes ) pues oculatas todas las imagenes y listo =P
Cita de: YST en 9 Abril 2009, 21:18 PM
Luego de ganaste, perdiste ,empate , pones un MsgBox que haga la pregunta , si la respuesta es si ( VBYes ) pues oculatas todas las imagenes y listo =P
Estoy tratando de hacer eso de la siguiente manera:
If imgpiedra.Visible = True And imgpiedra2.Visible = True Then
resp = MsgBox ("EMPATE!! ¿Querés jugar de nuevo?"), vbQuestion + vbYesNo, "Resultado"
If resp = vbYes Then
Frame1.Enabled = True
imgpiedra.Visible = False
imgpapel.Visible = False
imgtijera.Visible = False
ElseIf resp = vbNo Then
End
End If
Pero al tratar de probar la aplicación me dice Sintax Error, y me marca la 2da línea del código anterior. Eso me aparecio desde que puse una variable adelante de todo. Pero viendo tutoriales vi que lo usan así y no tienen problema y a mi me tira ese error :S.
---------------------------------------
EDITT.... YA PUDE SOLUCIONAR ESTO..
muchas gracias de nuevo y disculpen :$
Citar
resp = MsgBox ("EMPATE!! ¿Querés jugar de nuevo?"), vbQuestion + vbYesNo, "Resultado"
Sería:
resp = MsgBox ("EMPATE!! ¿Querés jugar de nuevo?", vbQuestion + vbYesNo, "Resultado")
Con el paréntesis al final.
resp = MsgBox ("EMPATE!! ¿Querés jugar de nuevo?", vbQuestion + vbYesNo, "Resultado")
Cambialo por la segunda linea
para que una variable para el MsgBox?? directamente pregunta asi:
If imgpiedra.Visible = True And imgpiedra2.Visible = True Then
If MsgBox("EMPATE!! ¿Querés jugar de nuevo?", vbQuestion + vbYesNo, "Resultado") = vbYes Then
Frame1.Enabled = True
imgpiedra.Visible = False
imgpapel.Visible = False
imgtijera.Visible = False
Else
End
End If
End If
saludos.
Sí, justo después había editado el mensaje porque me había dado cuenta que iba el cierre de parentesis al final.
Cita de: seba123neo en 9 Abril 2009, 23:54 PM
para que una variable para el MsgBox?? directamente pregunta asi:
If imgpiedra.Visible = True And imgpiedra2.Visible = True Then
If MsgBox("EMPATE!! ¿Querés jugar de nuevo?", vbQuestion + vbYesNo, "Resultado") = vbYes Then
Frame1.Enabled = True
imgpiedra.Visible = False
imgpapel.Visible = False
imgtijera.Visible = False
Else
End
End If
End If
saludos.
Lo tendré en cuenta, muchas gracias a todos! :)