Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ka0s en 9 Abril 2009, 19:54 pm



Título: Otras dos dudas...
Publicado por: ka0s en 9 Abril 2009, 19:54 pm
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
  1. Private Sub image1_Click()
  2. Frame1.Enabled = False
  3. imgpiedra.Visible = True
  4.  
  5. Randomize (Timer)
  6. alea = Int((3 - 1 + 1) * Rnd + 1)
  7.  
  8. If alea = 1 Then
  9.    imgpiedra2.Visible = True
  10. ElseIf alea = 2 Then
  11.    imgpapel2.Visible = True
  12. ElseIf alea = 3 Then
  13.    imgtijera2.Visible = True
  14. End If
  15.  
  16. If imgpiedra.Visible = True And imgpiedra2.Visible = True Then
  17.    MsgBox ("EMPATE!!")
  18. ElseIf imgpiedra.Visible = True And imgpapel2.Visible = True Then
  19.   MsgBox ("PERDISTE!!")
  20. ElseIf imgpiedra.Visible = True And imgtijera2.Visible = True Then
  21.    MsgBox ("GANASTE")
  22. End If
  23. End Sub
  24.  
  25. Private Sub image2_Click()
  26. imgpapel.Visible = True
  27. Frame1.Enabled = False
  28.  
  29. Randomize (Timer)
  30. alea = Int((3 - 1 + 1) * Rnd + 1)
  31.  
  32. If alea = 1 Then
  33.    imgpiedra2.Visible = True
  34. ElseIf alea = 2 Then
  35.    imgpapel2.Visible = True
  36. ElseIf alea = 3 Then
  37.    imgtijera2.Visible = True
  38. End If
  39.  
  40. If imgpapel.Visible = True And imgpiedra2.Visible = True Then
  41.    MsgBox ("GANASTE!!")
  42. ElseIf imgpapel.Visible = True And imgpapel2.Visible = True Then
  43.    MsgBox ("EMPATE!!")
  44. ElseIf imgpapel.Visible = True And imgtijera2.Visible = True Then
  45.    MsgBox ("PERDISTE!!")
  46. End If
  47.  
  48. End Sub
  49.  
  50. Private Sub image3_Click()
  51. imgtijera.Visible = True
  52. Frame1.Enabled = False
  53.  
  54. Randomize (Timer)
  55. alea = Int((3 - 1 + 1) * Rnd + 1)
  56.  
  57. If alea = 1 Then
  58.    imgpiedra2.Visible = True
  59. ElseIf alea = 2 Then
  60.    imgpapel2.Visible = True
  61. ElseIf alea = 3 Then
  62.    imgtijera2.Visible = True
  63. End If
  64.  
  65. If imgtijera.Visible = True And imgpiedra2.Visible = True Then
  66.    MsgBox ("PERDISTE!!")
  67. ElseIf imgtijera.Visible = True And imgpapel2.Visible = True Then
  68.    MsgBox ("GANASTE!!")
  69. ElseIf imgtijera.Visible = True And imgtijera2.Visible = True Then
  70.    MsgBox ("EMPATE!!")
  71. End If
  72. End Sub
  73.  
  74.  

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!


Título: Re: Otras dos dudas...
Publicado por: BlackZeroX en 9 Abril 2009, 21:03 pm
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)


Título: Re: Otras dos dudas...
Publicado por: ka0s en 9 Abril 2009, 21:10 pm
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!


Título: Re: Otras dos dudas...
Publicado por: 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


Título: Re: Otras dos dudas...
Publicado por: ka0s en 9 Abril 2009, 22:05 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
  1. If imgpiedra.Visible = True And imgpiedra2.Visible = True Then
  2.    resp = MsgBox ("EMPATE!! ¿Querés jugar de nuevo?"), vbQuestion + vbYesNo, "Resultado"
  3.    If resp = vbYes Then
  4.        Frame1.Enabled = True
  5.        imgpiedra.Visible = False
  6.        imgpapel.Visible = False
  7.        imgtijera.Visible = False
  8.    ElseIf resp = vbNo Then
  9.        End
  10.    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 :$


Título: Re: Otras dos dudas...
Publicado por: aaronduran2 en 9 Abril 2009, 22:11 pm
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.



Título: Re: Otras dos dudas...
Publicado por: YST en 9 Abril 2009, 22:11 pm
Código:
resp = MsgBox ("EMPATE!! ¿Querés jugar de nuevo?", vbQuestion + vbYesNo, "Resultado")
Cambialo por la segunda linea


Título: Re: Otras dos dudas...
Publicado por: seba123neo en 9 Abril 2009, 23:54 pm
para que una variable para el MsgBox?? directamente pregunta asi:

Código
  1. If imgpiedra.Visible = True And imgpiedra2.Visible = True Then
  2.    If MsgBox("EMPATE!! ¿Querés jugar de nuevo?", vbQuestion + vbYesNo, "Resultado") = vbYes Then
  3.        Frame1.Enabled = True
  4.        imgpiedra.Visible = False
  5.        imgpapel.Visible = False
  6.        imgtijera.Visible = False
  7.    Else
  8.        End
  9.    End If
  10. End If
  11.  

saludos.



Título: Re: Otras dos dudas...
Publicado por: ka0s en 10 Abril 2009, 00:13 am
Sí, justo después había editado el mensaje porque me había dado cuenta que iba el cierre de parentesis al final.

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

Código
  1. If imgpiedra.Visible = True And imgpiedra2.Visible = True Then
  2.    If MsgBox("EMPATE!! ¿Querés jugar de nuevo?", vbQuestion + vbYesNo, "Resultado") = vbYes Then
  3.        Frame1.Enabled = True
  4.        imgpiedra.Visible = False
  5.        imgpapel.Visible = False
  6.        imgtijera.Visible = False
  7.    Else
  8.        End
  9.    End If
  10. End If
  11.  

saludos.


Lo tendré en cuenta, muchas gracias a todos! :)