Páginas

domingo, 24 de julio de 2011

Juguemos al BingoGambas con Gambas2

Bingo-Gambas


Es un programa para simular el juego de Bingo, genera la salida de  los números aleatorios (de 1 a 75), y los señala en la pantalla.



En el aspecto sobre la programación de este programa, os comento:

Es fácilmente ampliable para más (o menos) números, al utilizar array de label para dibujar y hacer cambios en el cartón de la pantalla.
Módulo "var" donde se encuentras las variables globales:

' Gambas module file
PUBLIC num_max AS Integer = 75
PUBLIC num_sinsalir AS Integer = 75
PUBLIC incx AS Integer
PUBLIC incy AS Integer
PUBLIC fichas AS NEW Object[] ' var.num_max]
PUBLIC ficha_temp AS Object
PUBLIC texto AS String



Módulo "carton":

' Gambas module file

PUBLIC SUB rellenacarton()
DIM a AS Integer
var.incx = -47 + 4
var.incy = 70
FOR a = 0 TO var.num_max - 1
var.ficha_temp = NEW Textlabel(FormCarton)
var.incx = var.incx + 47
IF var.incx > 670 THEN
var.incy = var.incy + 47
var.incx = 4
ENDIF
var.ficha_temp.x = var.incx
var.ficha_temp.y = var.incy
var.ficha_temp.Background = &H5FAFFF&
var.ficha_temp.Alignment = 3
var.ficha_temp.border = 3
var.ficha_temp.height = 42
var.ficha_temp.width = 42
var.ficha_temp.text = Str(a + 1)
var.fichas.Add(var.ficha_temp)
NEXT
END
 

 Y  acceder a ellos para cambiar el color del fondo es también muy sencillo. Módulo "sacar"
 
…..
'pongo la el numero de la ficha en fondo rojo....
var.fichas[numero - 1].Background = &HFF3D5D&
…..


El sistema de elegir el "número" aleatorio, es similar al que utilice en el programa "Refranero":
- Se crea una lista con todos los números.
- Luego elegimos aleatoriamente la posición,
- sacamos el numero elegido de la lista
-  y recostruimos la lista con un elemento menos.

Todo este proceso se realiza con ayuda del archivo "bolas.txt", que es el que tiene la lista de los números que aun no han salido.
 
….
posicion = Rnd(0, var.num_sinsalir)
'una cosa es el numero y otra es la posicion de la lista...
'abre el archivo que contiene las bolas
cadena = lista.leer()
bolas_txt = Split(cadena, "|")
'crear un nuevo array con los datos
FOR a = 0 TO bolas_txt.count - 2
bolas[a] = CInteger(bolas_txt[a])
NEXT
' coge el que ocupa la posicion
numero = bolas[posicion]
'crea una nuevo array sin esa posicion
c = -1
FOR a = 0 TO bolas_txt.count - 2
IF a <> posicion THEN
c += 1
bolas_reformada[c] = bolas[a]
ENDIF
NEXT
'lo guarda
cadena = ""
FOR a = 0 TO bolas_reformada.Count - 1
cadena &= Str$(bolas_reformada[a]) & "|"
NEXT
File.Save(User.home & "/bolas.txt", cadena)
….


 También he añadido la opción de decir en voz el número que sale escogido, usando el comando speak. Módulo "hablar"

' Gambas module file

PUBLIC SUB di(texto AS String)
EXEC ["aoss", "espeak", "-ves", "-s 120", texto] 
END

Aquí tenéis una captura de la pantalla del IDE, donde podéis ver los módulos que forman el programa.


Enlace restaurado: 25/7/2014 NEW


Saludos.


Nota:
Me podeis ayudar a continuar subiendo programas apuntandoos atraves de este enlace a Beruby

beruby.com - Empieza el día ganando

Gracias