Loteria Mexicana
Objetivo
Crear mediante el uso B4A una loteria mexicana que barajee las cartas aleatoriamente y usando nuestra voz para decirlas
Codigo
Sub Class_Globals
Private Root As B4XView
Private xui As XUI
Private btnAuto As B4XView
Private btnReiniciar As B4XView
Private btnSiguiente As B4XView
Private imgCarta As B4XView
Private lblNombreCarta As B4XView
Private ivfondo As ImageView
Dim cartas As List
Dim indiceActual As Int
Dim mp As MediaPlayer
Dim tmrAuto As Timer
Dim ivfondo As ImageView
End Sub
Public Sub Initialize
' No se requiere código aquí por ahora
End Sub
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("MainPage")
ivfondo.Initialize("")
Root.AddView(ivfondo, 0, 0, Root.Width, Root.Height)
ivfondo.Bitmap = LoadBitmap(File.DirAssets, "mexico-cinco-mayo-fondo-sombrero-mexicano_1101-3237-removebg-preview.png")
ivfondo.SendToBack
ivfondo.Gravity = Gravity.FILL
mp.Initialize
tmrAuto.Initialize("tmrAuto", 3000)
EstilizarBotones
InicializarCartas
BarajarCartas
indiceActual = 0
MostrarCarta(indiceActual)
End Sub
Sub InicializarCartas
cartas.Initialize
For i = 1 To 54
cartas.Add(i)
Next
End Sub
Sub MostrarCarta(index As Int)
Dim numcarta As Int = cartas.Get(index)
imgCarta.SetBitmap(LoadBitmap(File.DirAssets, $"carta${numcarta}.jpg"$))
lblNombreCarta.Text = NombreCarta(numcarta)
imgCarta.SetVisibleAnimated(400, True)
lblNombreCarta.SetVisibleAnimated(400, True)
If mp.IsPlaying Then mp.Stop
mp.Load(File.DirAssets, $"carta${numcarta}.mp3"$)
mp.Play
End Sub
Sub btnSiguiente_Click
SiguienteCarta
End Sub
Sub btnAuto_Click
tmrAuto.Enabled = Not(tmrAuto.Enabled)
btnAuto.Visible = False
btnAuto.Visible = True
End Sub
Sub tmrAuto_Tick
SiguienteCarta
End Sub
Sub btnReiniciar_Click
tmrAuto.Enabled = False
BarajarCartas
indiceActual = 0
MostrarCarta(indiceActual)
End Sub
Sub SiguienteCarta
indiceActual = indiceActual + 1
If indiceActual >= cartas.Size Then
tmrAuto.Enabled = False
indiceActual = 0
Wait For (xui.MsgboxAsync("¡Se acabaron las cartas!", "Lotería")) Complete (Result As Int)
Return
End If
MostrarCarta(indiceActual)
End Sub
Sub BarajarCartas
cartas = ShuffleList(cartas)
End Sub
Sub ShuffleList(original As List) As List
Dim nueva As List
nueva.Initialize
nueva.AddAll(original)
For i = nueva.Size - 1 To 1 Step -1
Dim j As Int = Rnd(0, i + 1)
Dim temp As Object = nueva.Get(i)
nueva.Set(i, nueva.Get(j))
nueva.Set(j, temp)
Next
Return nueva
End Sub
Sub EstilizarBotones
EstilizarIcono(btnAuto, "push-control-button-blue-steel-technology-switch-sign-symbol-business-electronic-equipment-icon-start-stop-off-on-object-power-device-communication-system-computer-multimedia-click-concept-3d-render-p.png")
EstilizarIcono(btnReiniciar, "reiniciar.png")
EstilizarIcono(btnSiguiente, "siguiente.png")
End Sub
Sub EstilizarIcono(boton As B4XView, nombreIcono As String)
Dim b As Button = boton
Dim bmp As Bitmap = LoadBitmap(File.DirAssets, nombreIcono)
Dim bd As BitmapDrawable
bd.Initialize(bmp)
b.Background = bd
b.Text = "" ' Oculta el texto
End Sub
Sub NombreCarta(numero As Int) As String
Dim nombres As List = Array As String( _
"El Gallo", "El Diablo", "La Dama", "El Catrín", "El Paraguas", "La Sirena", _
"La Escalera", "La Botella", "El Barril", "El Árbol", "El Melón", "El Valiente", _
"El Gorrito", "La Muerte", "La Pera", "La Bandera", "El Bandolón", "El Violoncello", _
"La Garza", "El Pájaro", "La Mano", "La Bota", "La Luna", "El Cotorro", "El Borracho", _
"El Negrito", "El Corazón", "La Sandía", "El Tambor", "El Camarón", "Las Jaras", _
"El Músico", "La Araña", "El Soldado", "La Estrella", "El Cazo", "El Mundo", _
"El Apache", "El Nopal", "El Alacrán", "La Rosa", "La Calavera", "La Campana", _
"El Cantarito", "El Venado", "El Sol", "La Corona", "La Chalupa", "El Pino", _
"El Pescado", "La Palma", "La Maceta", "El Arpa", "La Rana", "El Pájaro")
If numero >= 1 And numero <= nombres.Size Then
Return nombres.Get(numero - 1)
Else
Return $"Carta #${numero}"$
End If
End Sub

Comentarios
Publicar un comentario