elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Dado en VB?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Dado en VB?  (Leído 12,433 veces)
Frikimaster

Desconectado Desconectado

Mensajes: 35


Dim Frikimaster As BPF [Battle Programmer Friki]


Ver Perfil
Dado en VB?
« en: 29 Enero 2008, 02:48 am »

Muy buenas a todos, hacia mucho que no posteaba por aquí, pero siempre voy mirando post de gente para aprender cosas nuevas :P, soy un programador novato, hace apenas 1 año que empecé con C++ y VB...y lo que me queda xD

Bueno, ahora me encuentro con que estoy haciendo mi proyecto de fin de curso en VB, se trata de un Trivial, y bueno, tengo todavía tiempo para hacer cosas xD, pero ahora estoy enfurruñado en hacer un dado que haga el efecto de girar, y que se me salga un numero aleatorio, y me gustaría que vosotros, que tenéis mas experiencia que yo, me recomendarais como hacerlo, hay algún tutorial o manual? Encontré este

http://www.lawebdelprogramador.com/cursos/mirtavb/entrega3.php , pero me gustaría "juntar" varios códigos, quedarme con el que mas me gusta >.<, que me recomendáis? ^^

Muchisimas Gracias por adelantado.


Frikimaster


En línea

La musica de la logica nunca fallara al sonar la melodia de la verdad.
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: Dado en VB?
« Respuesta #1 en: 29 Enero 2008, 06:08 am »

Mira buscate un dado, y dibujalo en paint o busca imagenes e intenta dibujarlo en una perspectiva que se vean 3 caras o si queres una sola y cargas en cada picture una cara del dado. Ej:

Código
  1. Picture1.Picture = LoadPicture("C:\dado1.jpg")
  2. Picture2.Picture = LoadPicture("C:\dado2.jpg")
  3. Picture3.Picture = LoadPicture("C:\dado3.jpg")
  4. Picture4.Picture = LoadPicture("C:\dado4.jpg")
  5. Picture5.Picture = LoadPicture("C:\dado5.jpg")
  6. Picture6.Picture = LoadPicture("C:\dado6.jpg")

y despues cuando apretas un boton que su funciona sea "tirar los dados" haces:

Código
  1. Private Sub cmdTirar_Click()
  2. Dim i As Integer
  3. Dim x As Integer
  4.  
  5. For i = 1 To Int(Rnd * 15) + 3  'El dado puede llegar a rodar 15 veces, minimo 3
  6.   x = Int(Rnd * 6) + 1 'El dado puede salir entre 1 y 6 (osea sus caras)
  7.   Select Case x
  8.      Case 1: PictureDado.Picture = Picture1.Picture 'Si el dado sale 1 carga dado 1
  9.      Case 2: PictureDado.Picture = Picture2.Picture 'Si el dado sale 2 carga dado 2
  10.      Case 3: PictureDado.Picture = Picture3.Picture 'Si el dado sale 3 carga dado 3
  11.      Case 4: PictureDado.Picture = Picture4.Picture 'Si el dado sale 4 carga dado 4
  12.      Case 5: PictureDado.Picture = Picture5.Picture 'Si el dado sale 5 carga dado 5
  13.      Case 6: PictureDado.Picture = Picture6.Picture 'Si el dado sale 6 carga dado 6
  14.    End Select
  15.    DoEvents 'Para que nuestro programa funcione sin colgarse
  16.    PictureDado.Refresh 'Redibujamos la imagen del dado para visualizar bien
  17.    Call Sleep(250) 'Duerme al programa por 0.25 segundos
  18. Next i
  19. End Sub

Y por ultimo agregamos esta API y esta funcion en el Form_Load para que empieze a crear numeros aleatorios:

Código
  1. Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
  2.  
  3. Randomize

Entonces el codigo bien armado nos queda asi:

Código
  1. Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
  2.  
  3. Private Sub Form_Load()
  4. 'Aca cargamos cada picture con una imagen del dado diferente (1 x cada cara)
  5. Randomize
  6. Picture1.Picture = LoadPicture("C:\dado1.jpg")
  7. Picture2.Picture = LoadPicture("C:\dado2.jpg")
  8. Picture3.Picture = LoadPicture("C:\dado3.jpg")
  9. Picture4.Picture = LoadPicture("C:\dado4.jpg")
  10. Picture5.Picture = LoadPicture("C:\dado5.jpg")
  11. Picture6.Picture = LoadPicture("C:\dado6.jpg")
  12. End Sub
  13.  
  14. Private Sub cmdTirar_Click()
  15. Dim i As Integer
  16. Dim x As Integer
  17.  
  18. For i = 1 To Int(Rnd * 15) + 3  'El dado puede llegar a rodar 15 veces, minimo 3
  19.   x = Int(Rnd * 6) + 1 'El dado puede salir entre 1 y 6 (osea sus caras)
  20.   Select Case x
  21.      Case 1: PictureDado.Picture = Picture1.Picture 'Si el dado sale 1 carga dado 1
  22.      Case 2: PictureDado.Picture = Picture2.Picture 'Si el dado sale 2 carga dado 2
  23.      Case 3: PictureDado.Picture = Picture3.Picture 'Si el dado sale 3 carga dado 3
  24.      Case 4: PictureDado.Picture = Picture4.Picture 'Si el dado sale 4 carga dado 4
  25.      Case 5: PictureDado.Picture = Picture5.Picture 'Si el dado sale 5 carga dado 5
  26.      Case 6: PictureDado.Picture = Picture6.Picture 'Si el dado sale 6 carga dado 6
  27.    End Select
  28.    DoEvents 'Para que nuestro programa funcione sin colgarse
  29.    PictureDado.Refresh 'Redibujamos la imagen del dado para visualizar bien
  30.    Call Sleep(250) 'Duerme al programa por 0.25 segundos
  31. Next i
  32. End Sub

Necesitas:
1 PictureBox llamado PictureDado (Para mostrar el dado)
6 PictureBox llamados Picture1, Picture2, Picture3, etc y con propiedad Visible = False (Para guardar cada cara del dado)
1 CommandButton llamado cmdTirar (Para tirar los dados)
6 Imagenes guardadas en C:\ con nombre dado1.jpg, dado2.jpg hasta el 6


Lo elabore recien, cualquier cosa avisame y espero te sirva

PD: Podes ponerle las imagenes vos a los Picture o buscate 6 imagenes de dados y ponelas en tu Disco C:\ y llamalas Dado1, Dado2, Dado3 y que esan jpg, si queres cambiale la ruta, la extension o lo que te parezca!


Sancho.Mazorka    :¬¬


« Última modificación: 29 Enero 2008, 17:40 pm por Sancho.Mazorka » En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Chefito

Desconectado Desconectado

Mensajes: 122



Ver Perfil WWW
Re: Dado en VB?
« Respuesta #2 en: 29 Enero 2008, 16:13 pm »

Estoy deacuerdo con la respuesta Sancho.Mazorka. Solo voy a puntualizar en dos aspecto....sobre todo uno importante:
En el procedimiento cmd_TirarClick(), mete al principio un Randomize, para que la secuencia de tiradas no se repitan cada vez que pones el programa.
Yo creo que no hace falta poner un Doevents, ya que pones un Sleep.
Ahhhh...por cierto....Int(Rnd * 15) + 3 el dado puede llegar a rodar 17 veces, no 15  ;).
Saludos.
En línea

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: Dado en VB?
« Respuesta #3 en: 29 Enero 2008, 16:44 pm »

Chefito lo del Randomize cuando puse el post me di cuenta al revisarlo y cuando fui a editar se me corto la luz, cuando volvio me re olvide, ahora lo arreglo y lo del Int(Rnd * 15) + 3 ninguno tiene razon porque en realidad son 12 numeros empezando en el 3 (por eso dice +3) y terminando en 15

YA EDITE EL POST Y QUEDO ARREGLADO FUNCIONA PERFECTAMENTE!


Sancho.Mazorka    :¬¬
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Chefito

Desconectado Desconectado

Mensajes: 122



Ver Perfil WWW
Re: Dado en VB?
« Respuesta #4 en: 29 Enero 2008, 17:34 pm »

Haber.........creo que te estas equivocando con los conceptos y resultados un poco. Tu has hecho un for.....next para simular el giro de un dado no?.....pues piensa en tu bucle for.....next por un momento:
for i=1 to int(rnd*15)+3
El int(rnd*15) da un resultado de 0 a 14, siendo 14 el máximo, ok? y a eso se le suma 3 más.......contando con los dedos me salen 14+3=17  ;D.
Por que el maximo de vueltas del dado es 17? Pues por lo anterior, ya que tu bucle for.....next recorre desde 1 (i=1) hasta un maximo de 17 (int(rnd*15)+3).
Saludos.
En línea

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: Dado en VB?
« Respuesta #5 en: 29 Enero 2008, 17:54 pm »

 >:( hace la prueba y fijate, el +3 suma a la base del numero osea desde donde empieza, osea que el minimo de giros es 3 xq el RND da un Double aleatorio que x15 puede dar tanto 1,2,3,4,5,6,7,8,9,10,11,12,13,14 pero yo le digo que sea +3 osea que ahora el valor esta entre 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 osea que puede dar maximo 17 giros y minimo 3 giros osea que esta entre 15 posibilidades. En la respuesta anterior mia yo me confundi  :-[

EDIT: me olvide de responder sobre el DoEvents, lo puse porque generalmente al usar la funcion sleep al igual que otras parecidas el programa no acepta eventos hasta que el sleep o dicha funcion termine.


Sancho.Mazorka    :¬¬
« Última modificación: 29 Enero 2008, 18:06 pm por Sancho.Mazorka » En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Chefito

Desconectado Desconectado

Mensajes: 122



Ver Perfil WWW
Re: Dado en VB?
« Respuesta #6 en: 29 Enero 2008, 18:13 pm »

Jajajajaja......esto es un tira y afloja para una chorrada....jajajaja. No te enfades hombre.....los dos tenemos razon a lo que creemos contestar. Pero este comentario que has puesto: 'El dado puede llegar a rodar 15 veces, minimo 3....pues hace pensar que es lo que yo digo y no lo que tu dices. Bueno, dejemoslo, que es una chorrada. Los dos tenemos razón:
Tu, porque el máximo de posibilidades que determina el valor de las vueltas dadas estan entre 3 y 17, o sea 15(que no es lo mismo que el máximo de vueltas que pueda dar el dado, porque esto esta determinado por el bucle for....next).
Yo, porque el máximo de vueltas que puede realizar el bucle abarca de 1 a 17, o sea, 17 vueltas.
Dejemoslo en empate y decir que han sido dos puntos de vista distintos  :xD.
Ni que estuviesemos discutiendo el protocolo del msn, que es lo que estoy mirando ahora mismo en vb!!!!!  ;D jajajajaja.
Saludos.
En línea

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: Dado en VB?
« Respuesta #7 en: 29 Enero 2008, 18:30 pm »

Tenes razon en lo de las 17 vueltas, x eso me disculpe en mi mensaje anterior!

Va a venir algun Mod y nos va a sacar a patadas de aca  :P

EDIT: y Frikimaster se murio?
:xD


Sancho.Mazorka    :¬¬
« Última modificación: 29 Enero 2008, 18:33 pm por Sancho.Mazorka » En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Frikimaster

Desconectado Desconectado

Mensajes: 35


Dim Frikimaster As BPF [Battle Programmer Friki]


Ver Perfil
Re: Dado en VB?
« Respuesta #8 en: 29 Enero 2008, 19:46 pm »

Lo que muerto es de envidia, madre mia, yo quiero aprender a programar como vosotros >.<.

Entonces...como queda al final la cosa? xD


Frikimaster
En línea

La musica de la logica nunca fallara al sonar la melodia de la verdad.
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Dado en VB?
« Respuesta #9 en: 29 Enero 2008, 19:53 pm »

[broma]Uy FrikiMaster no seas como ellos, son unos creidos. :( :(

Fijate en mi que soy muy humilde.[/broma]



Por cierto, si necesitas ayuda con los dados me avisas. :D
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
que juego les a dado miedo?? « 1 2 »
Juegos y Consolas
Sk9ITk5Z 14 7,472 Último mensaje 19 Octubre 2011, 04:10 am
por flacc
Programa de apuestas de un dado
Programación C/C++
DickGumshoe 0 3,788 Último mensaje 7 Diciembre 2011, 18:51 pm
por DickGumshoe
Alguno se ha dado de alta en la lista de Robinson???
Foro Libre
beholdthe 2 1,895 Último mensaje 16 Julio 2012, 04:39 am
por Minusfour_cierralo_o_baneamefull
Voltear el dado en c++ « 1 2 »
Programación C/C++
shawwilliam 10 6,984 Último mensaje 5 Febrero 2013, 16:09 pm
por TopoJunior
Revelan el verdadero uso dado a la red de anonimato Tor
Noticias
wolfbcn 0 1,820 Último mensaje 12 Septiembre 2013, 17:47 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines