Otras dos dudas...

Iniciado por ka0s, 9 Abril 2009, 19:54 PM

0 Miembros y 1 Visitante están viendo este tema.

ka0s

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:

Código (vb) [Seleccionar]
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.



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!

BlackZeroX

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)
The Dark Shadow is my passion.

ka0s

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!

YST

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


Yo le enseñe a Kayser a usar objetos en ASM

ka0s

#4
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:

Código (vb) [Seleccionar]

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 :$

aaronduran2

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.


YST

resp = MsgBox ("EMPATE!! ¿Querés jugar de nuevo?", vbQuestion + vbYesNo, "Resultado")
Cambialo por la segunda linea


Yo le enseñe a Kayser a usar objetos en ASM

seba123neo

para que una variable para el MsgBox?? directamente pregunta asi:

Código (vb) [Seleccionar]
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.

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

ka0s

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:

Código (vb) [Seleccionar]
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! :)