Trucos sobre manejo de softwarelibre y gnu linux. También a los programas que hago en gambas3, python, java, etc.... Consejos y trucos sobre otros programas: excel, word, internet, instalación de programas, Arduino y demás....
Páginas
▼
sábado, 30 de julio de 2011
Pagina Web: Desarrollo de Componentes en Gambas2
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 Gracias |
martes, 19 de julio de 2011
Cronómetro para #controlar la duración de tus #videos de #yotutube
Controlar la duración
de tus videos de youtube: Herramienta Cronómetro
Esta es una pequeña herramienta que me he hecho para controlar la duración de mis videotutoriales. Es fácilmente adaptable a vuestras necesidades.
Al iniciarla presenta un formulario, que nos solicita los datos que nos mostrará en la posterior pantalla de presentación.
Luego se activa la pantalla de presentación, donde ya podremos iniciar la grabación del video y poner en marcha el cronometro (pulsar el botón "iniciar").
Con el botón "recortar" haremos que se reduzca el formulario y solo aparezca el cronómetro.
Hay un pequeño botón junto al marcador de los segundo, el cual al pulsarlo, se vera de nuevo el formulario.
Este botón cuando el cronometro llegue a cero, aparecerá intermitente.
Código de los dos formularios:
Formulario Fmain:
' Gambas class file
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
ME.center
ComboBoxgestorpantalla.Add("Gnome")
ComboBoxgestorpantalla.Add("KDE")
ComboBoxgestorpantalla.Add("XFCE")
ComboBoxgestorpantalla.Add("Unity")
ValueBoxfecha.value = Now
END
PUBLIC SUB Button1_Click()
ME.visible = FALSE
FormPresentar.show()
END
PUBLIC SUB ButtonSalir_Click()
ME.close()
END
FormularioPresentar:
' Gambas class file
PUBLIC a AS Integer
PUBLIC b AS Integer
PUBLIC c AS Integer
PUBLIC d AS Integer
PUBLIC SUB Form_Open()
ME.center
ME.Caption = "Tiempo..."
minutos.value = 15 'tiempo inicial en minutos
segundos.value = 0 'tiempo inicial en segundos
a = segundos.value
b = minutos.value * 60
tema.Text = FMain.TextBoxTema.text
parte.text = FMain.TextBoxparte.Text
version.text = FMain.TextBoxgambas.Text
distroygestor.text = FMain.TextBoxgnulinux.text & " , " & FMain.ComboBoxgestorpantalla.text
fecha.Text = "Fecha: " & Format(FMain.ValueBoxfecha.value, "dd/mm/yyyy")
END
PUBLIC SUB ToolButton1_Click()
cronometrodescontar.Enabled = TRUE
c = (a + b) / 60
d = (a + b) MOD 60
END
PUBLIC SUB cronometrodescontar_Timer()
IF c = 0 AND d = 0 THEN
IF ToggleButton1.Background = Color.Red THEN
ToggleButton1.Background = Color.green
ELSE
ToggleButton1.Background = Color.Red
ENDIF
ELSE
IF d = 0 THEN
c = c - 1
d = d + 59
ELSE
d = d - 1
ENDIF
'show the countdown
minutos.Value = c
segundos.Value = d
ENDIF
END
PUBLIC SUB Button1_Click()
FormPresentar.w = 159
FormPresentar.h = 49
END
PUBLIC SUB ToggleButton1_Click()
FormPresentar.w = 800
FormPresentar.h = 640
END
PUBLIC SUB form_Close()
FMain.Visible = TRUE
END
Os dejo aquí el enlace para descargar el código fuente completo
Nota:
28 / 08 / 2011: Mejora incluida, ahora podemos parar el reloj y continuar. Para realizar paradas en la grabación del video.
Saludos a G3RAR284, espero que te sea útil.
sábado, 16 de julio de 2011
VOZ: nuestro ordenador habla y lee por nosotros
"Y se hizo la voz..."
Bueno pues os traigo una pequeña aplicación-herramienta realizada en Gambas, para leer texto en voz alta, usando el programa espeak, siendo nuestra aplicación Gambas un front-end para este comando de gnu/linux.
El código es asi de simple:
' Gambas class file
PUBLIC SUB PictureBoxPegar_MouseDown()
TextArea1.text = Clipboard.Paste()
END
PUBLIC SUB PictureBoxLeer_MouseDown()
EXEC ["aoss", "espeak", "-ves", "-s120", TextArea1.text]
END
PUBLIC SUB PictureBoxBorrar_MouseDown()
TextArea1.text = ""
END
El código lo que hace son 3 cosas:
- Cuando pulso sobre el pictureboxBorrar: borra el contenido del textarea.
- Cuando pulso sobre el pictureboxPegar: pega el contenido del portapapeles en el textarea.
- Cuando pulso sobre el pitureboxLeer: ejecuta la orden "aoss espeak -ves -s120 " añadiendole el texto que contenga el textarea.
Como veis, en vez de botones, he utilizado PictureBox, para definir "los botones", ya que así me permitía meter la imagen que me interesaba redimensionada con la propiedad del picturebox "Strech" como "true".
Para ejecutar el programa, teneis que tener instalado el alsa-oss y el espeak:
sudo apt-get install alsa-oss
sudo apt-get install espeak
Os dejo el código fuente en este enlace
Saludos
Fuente:
Mi antiguo blog
http://jsbsan.wordpress.com/2009/02/16/003-programar-programas-que-hablen/
http://gambaslinux.wordpress.com/2008/01/06/gambas-levantate-y-habla/ Sacamos partido a las redes sociales...la búsqueda de empleo "activa" por internet
Este blog me ha parecido interesante, tiene una sección de consejos entre ellos he vistos estos:
Cómo manejarse en LinkedIn para encontrar #empleo (I)
Cómo manejarse en LinkedIn para encontrar #empleo (II)
Sacamos partido a las redes sociales en ocho sesiones. Día 1.
Sacamos partido a las redes sociales en ocho sesiones. Día 2.
Sacamos partido a las redes sociales en ocho sesiones. Día 3.
Sacamos partido a las redes sociales en ocho sesiones. Día 4
....Los artículos están escritos por Antonio Vallejo
Gambas2 y OOP Trabajando con clases (06) Trabajando con la #Herencia y #Polimorfismo #Práctica 7b
Gambas2 y OOP (VI)
Trabajando con la
Herencia y Polimorfismo
Herencia y Polimorfismo
Práctica 7b
Veamos la práctica 7b:
Desarrollar una aplicación de encriptación de códigos numéricos.
El encriptador recibirá un código numérico y una implementación de un algoritmo
de encriptación/desencriptación y la orden de encriptar o desencriptar el código.
Existen distintos algoritmos:
• Multiplicar por un número determinado.
• Diferencia existente a un número determinado.
• El XOR con un número determinado.
Desarrollar la clase Practica9 que en su método main cree un encriptador, y le
pida encriptar y desencriptar varios códigos usando distintos algoritmos de
encriptación.
Resolución:
Clase Algoritmo:
' Gambas class file
PUBLIC FUNCTION encriptar() AS Integer
END
PUBLIC FUNCTION desencriptar() AS Integer
END
Clase AlgoritmoDiferencia:
' Gambas class file
INHERITS Algoritmo
PRIVATE num AS Integer = 0
'constructor
PUBLIC SUB _new(param AS Integer)
num = param
END
'metodos
PUBLIC FUNCTION encriptar(param AS Integer) AS Integer
RETURN num - param
END
PUBLIC FUNCTION desencriptar(param AS Integer) AS Integer
RETURN num - param
END
Clase AlgoritmoMultiplicacion
' Gambas class file
INHERITS Algoritmo
PRIVATE num AS Integer = 0
'constructores
PUBLIC SUB _new(param AS Integer)
num = param
END
'metodos
PUBLIC FUNCTION encriptar(param AS Integer) AS Integer
RETURN param * num
END
PUBLIC FUNCTION desencriptar(param AS Integer) AS Integer
RETURN param / num
END
Clase AlgoritmoXOR
' Gambas class file
INHERITS Algoritmo
PRIVATE num AS Integer = 0
'constructores
PUBLIC SUB _new(param AS Integer)
num = param
END
PUBLIC FUNCTION encriptar(param AS Integer) AS Integer
RETURN param * num
END
PUBLIC FUNCTION desencriptar(param AS Integer) AS Integer
RETURN param ^ num
END
Clase Encriptador:
' Gambas class file
PUBLIC SUB _new()
END
'metodos
PUBLIC FUNCTION encriptar(param1 AS Integer, param2 AS Algoritmo) AS Integer
RETURN param2.encriptar(param1)
END
PUBLIC FUNCTION desencriptar(param1 AS Integer, param2 AS Algoritmo) AS Integer
RETURN param2.desencriptar(param1)
END
Clase Fmain
' Gambas class file
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
DIM codigo AS Integer
DIM e AS NEW Encriptador
DIM aux AS Integer = 0
DIM a1 AS NEW AlgoritmoMultiplicacion(10)
DIM a2 AS NEW AlgoritmoDiferencia(2147483467)
DIM a3 AS NEW AlgoritmoXOR(2)
codigo = 12345
aux = e.encriptar(codigo, a1)
TextArea1.text = "Codigo: " & Str$(codigo)
TextArea1.text &= "\n" & "Algoritmo Multiplicacion"
TextArea1.text &= "\n" & " Encriptado: " & Str$(aux)
TextArea1.text &= "\n" & " Desencriptado: " & Str$(e.desencriptar(aux, a1))
aux = e.encriptar(codigo, a2)
TextArea1.text &= "\n" & "Algoritmo Diferencia"
TextArea1.text &= "\n" & " Encriptado: " & Str$(aux)
TextArea1.text &= "\n" & " Desencriptado: " & Str$(e.desencriptar(aux, a2))
aux = e.encriptar(codigo, a3)
TextArea1.text &= "\n" & "Algoritmo XOR"
TextArea1.text &= "\n" & " Encriptado: " & Str$(aux)
TextArea1.text &= "\n" & " Desencriptado: " & Str$(e.desencriptar(aux, a3))
END
Pantallazo de la aplicacion
Enlace de descarga del código:
http://manualjsb.googlecode.com/files/practica7b-0.0.1.tar.gz
Saludos