martes, 24 de julio de 2012

Números aleatorios.Ejemplo 2

Aquí tenemos otro ejemplo con dados de poker. :-)



Con los números aleatorios podemos crear simulaciones.
Serán fundamentales en nuestras aplicaciones.


' Gambas class file

Private carasdadosalida As New Integer[]
Private odadopoker As PictureBox

Public Sub Form_Open()
    Me.Center()
    Me.Caption = "DADOS DE POKER"
End


Public Function mostrardados() As Integer
   Dim contador As Integer
   Dim cara As Integer
  
   For contador = 1 To 6
      cara = Int(Rnd(7, 13))
     odadopoker.Picture = Picture[cara & ".gif"] 'Para que veamos una repetición de las caras
      Wait 0.1
  Next
  carasdadosalida.Add(cara) 'Añadimos la ultima cara que ha salido al array
  Return cara
End


Public Sub tobDados_Click()
   Dim objeto As Object
   Dim x As Integer
   Dim coincidencias As Integer
   Dim temporal As New Integer[]
  
   LblSalida.Caption = "" 'Limpiamos la etiqueta que nos dice la jugada que se ha hecho
   For Each objeto In HBox2.Children
       If objeto Is PictureBox Then
          objeto.delete 'Borramos todos los objetos si hubiera algunos. Para limpiar el contenedor
       Endif
   Next
   carasdadosalida.Clear 'Limpiamos el array que contendrá los valores de los dados en este array
    creadadospoker() 'Creamos 5 dados
  carasdadosalida.Sort 'Clasificamos el array donde están los valores de los dados para identificar mejor la jugada
   Do While x <= carasdadosalida.Count - 2 'Mientras x sea menor que el número de dados en el array
      If carasdadosalida[x] = carasdadosalida[x + 1] Then 
'Si el primero coincide con el segundo,el segundo con el tercero....etc.
'Siempre sin salirnos del numero máximo de elementos del array carasdadosalida
      temporal.Add(carasdadosalida[x + 1]) 'Añadimos al array temporal la cara del dado que se repite
       coincidencias = coincidencias + 1 'Aumentamos el número de coincidencias
     Endif
     x += 1
    Loop
'Según el número de coincidencias que existan,decimos la jugada que se ha hecho
    If coincidencias = 1 Then LblSalida.Caption = "Pareja" 'Una sola coincidencia
    If coincidencias = 2 Then
        If temporal[0] = temporal[1] Then 'Dos coincidencias
            LblSalida.Caption = "Trio" 'Ejemplo 777XX
       Else
            LblSalida.Caption = "Doble Pareja" 'Ejemplo 7788X
       Endif
    Endif
    If coincidencias = 3 Then
       If (temporal[0] = temporal[1]) And (temporal[0] = temporal[2]) Then 'Ejemplo 8888X
           LblSalida.Caption = "Poker!"
      Else
            LblSalida.Caption = "Full" 'Ejemplo 88899
      Endif
   Endif
   If coincidencias = 4 Then
       LblSalida.Caption = "Repoker!!" 'Si hay 5 números iguales
   Endif
End


Public Sub creadadospoker() 'Para crear los 5 dados con su imagen
   Dim contador As Integer
   For contador = 1 To 5
          odadopoker = New PictureBox(HBox2)
          With odadopoker
               .Width = 64
               .Height = 64
               .Stretch = True
               .Picture = Picture[mostrardados() & ".gif"]
         End With
   Next
End

Podéis bajar el código aquí:

No hay comentarios:

Publicar un comentario