Allanando el camino a los iniciados en Gambas, porque programar en Gambas es un placer!!
miércoles, 25 de diciembre de 2013
Cargar/Guardar datos de un ListBox
' Gambas class file
Public Sub BtnAgregar_Click()
Dim ListaIndex As Integer
ListBox1.Add(TextBox1.Text, ListaIndex)
End
Public Sub btnGuardarLista_Click()
Dim JugadoresSon As String
JugadoresSon = ListBox1.List.Join("\n")
File.Save(User.Home & "/ListaPostapase", JugadoresSon)
btnCargarLista.Enabled = True
End
Public Sub BtnBorrarTodo_Click()
ListBox1.Clear
End
Public Sub btnCargarLista_Click()
ListBox1.List = Split(File.Load(User.Home & "/ListaPostapase"), "\n")
End
domingo, 1 de diciembre de 2013
ColorChooser
' Gambas class file
Public Sub Form_Open()
End
Public Sub btnpintar_Click()
If RadioButtonFondo.Value = True Then
btnmuestra.Background = ColorChooser1.SelectedColor
Else
btnmuestra.Foreground = ColorChooser1.SelectedColor
Endif
End
Public Sub btnsalir_Click()
Me.Close
End
lunes, 18 de noviembre de 2013
Tanteador de Tenis de mesa
Buenas gente tanto tiempo, estoy medio desconectado de la programación y por eso me cuesta mucho retomar y programar se me olvidan cosas recién aprendidas, les consulto algo, soy jugador de ping pong y se me ocurrió crear un anotador de tantos digital para visualizar en pantalla completa, pero me encontré que no es simple como pensaba pues esta lleno de variables, y la verdad necesito mucha ayuda o mejor dicho me gustaría que alguien se sumara con este proyecto ojala sean todos a ver si sacamos este proyecto adelante ya que seria muy beneficioso para el deporte.
Recién comense el proyecto y esta plagado de errores y código basura pero soy novato y estoy aprendiendo voy a subir lo que he hecho, si alguien le interesa y le hace mejoras me gustaría que las subieran también. gracias
Tres cosas importantes faltan, una es terminar el proyecto que funcione bien
dos: que se ponga en pantalla completa
tres: que se pueda ir para atrás y para adelante en los tantos manteniendo todo como estaba antes por si el que anota se equivoca.
Nota: este post es estrategico: Como Crear Grupos De Trabajo Para Hacer Proyectos De Programación...
http://www.gambas-es.org/viewtopic.php?f=7&t=2799
Código fuente: Dropbox: Tanteador-0.0.3
(el boton mas del jugador 2 esta funcionando, algunas mejoras visuales en el codigo fuente)
Dropbox: Tanteador-0.0.4.tar.gz
Dropbox: Tanteador-0.0.7.tar.gz
Dropbox: Tanteador-0.0.8.tar.gz
(ahora el boton saque indica adecuadamente quien saca en cada nuevo set)problema 2 resuelto.
Dropbox: Tanteador-0.0.9.tar.gz
problema 1 resuelto ( bueno por primera vez el programa toma color y esta funcionando, aun hay pequeños detalles que corregir pero FUNCIONAAAAAA!!!!)
DEJO UN PAQUETE DE INSTALACION DEB AQUI: gambas3-tanteador_0.0.1-0ubuntu1_all.deb (ubuntu, mint)
sourceforge: tanteador 0.1.3
Tanteador-0.1.7.tar.gz
gambas3-tanteador_0.0.1-0ubuntu3_all.deb
Última versión
ForgeGambas
Nuevo repositorio de aplicaciones en Gambas de la Comunidad.
Este sistema permite llevar un repositorio svn, un wiki para realizar páginas relativas al proyecto, un foro, un bug tracker para llevar el control de peticiones, sean bugs, mejoras o soporte, estadísticas, gráficos gantt, etc. y la visualización web del repositorio con las revisiones y diferencias entre ellas. Visita la página y solicita el alta si tienes un proyecto interesante que compartir.
jueves, 27 de junio de 2013
Dibujo1(Línea)
bueno primeras pruebas de dibujo en Gambas3 y lo comparto con ustedes
' Gambas class file
Public Sub _new()
End
Public Sub Form_Open()
Me.Center
Draw.Begin(DrawingArea1) ' si en esta línea salta el error
'cannot paint outside Of draw Event handler
'tienen que poner en las propiedades de DrawingArea1 lo siguiente:
'Cached=true
Draw.Line(10, 100, 90, 80)
Draw.End
End
---------------------------------------------------------------------------------------------------------------------
' Gambas class file
'Declaramos la variable que determinara el ancho de la línea
'y para empezar le damos el valor 5, el tipo de dato
' que tendra la variable es numérico por tanto la declaramos de tipo integer
Public anchodelinea As Integer = 5
Public Sub Form_Open()
'centramos el formulario
Me.Center
'limpiamos el DrawingArea para poder redibujar
' y ver adecuadamente los nuevos resultados
DrawingArea1.Clear
'comenzamos a dibujar en el DrawingArea
Draw.Begin(DrawingArea1) ' si en esta línea salta este error
'cannot paint outside Of draw Event handler
'tienen que poner en las propiedades de DrawingArea1 lo siguiente:
'Cached=true
Draw.LineWidth = anchodelinea
Draw.Line(10, 100, 90, 80)
Draw.End ' finaliza el trazado
End
Public Sub BtnDibujar_Click()
'le asignamos el valor a la variable anchodelinea
'antes ingresado en el textbox
anchodelinea = TxtAnchoLinea.Text
'se vuelve a cargar el formulario para asi poder ver los resultados
Form_Open()
End
domingo, 16 de junio de 2013
domingo, 9 de junio de 2013
AdivinarNúmero v0.0.1
Mas vale tarde que nunca.... este es un clásico programa donde el programa elije un número y el usuario intenta descubrirlo con 10 posibilidades, el programa nos da la única pista que consiste en decir si el número que tenemos que descubrir es menor o mayor. Le agregue mas dificultad por medio de niveles,en el nivel 1 el programa elige entre 1 y 50,en el nivel dos de 1 a 200, nivel 3 de 1 a 500, nivel 4 de 1 a 700 y el nivel mas difícil de 1 a mil.
Tiene una lista de usuarios que acertaron y los ordena de mayor a menor(bueno ese detalle todavía no lo resuelvo, espero que a ustedes se les ocurra una brillante idea y la compartan) donde los puntos se dan asi: 1000 porque juega en el nivel 5, 700 porque juega en el nivel 4 y asi sucesivamente, agregando a esas cifras el número de intentos que no se uso. Ejemplo: postapase juega en el nivel 5 y acierta en el primer intento son 10 puntos mas (1010), otro usuario juega en el nivel 3 y acierta en el 5 intento, los punto son 505 y así con lo demás. Bueno algo es algo :)
Fmain:
' Gambas class file
Public espandir As Boolean = False
Public offniveles As Boolean = True
Public Nmagico As Float
Public Ningresado As Integer
Public intentos As Integer
Public puntaje As Integer
Public nomJugador As String
Public Const N1 As Integer = 50
Public Const N2 As Integer = 200
Public Const N3 As Integer = 500
Public Const N4 As Integer = 700
Public Const N5 As Integer = 1000
Public nivelelegido As Integer
Public Sub Form_Open()
' exxpandir(False)
Me.Center
Me.Width = 210
ValueBox1.Enabled = False
nivelelegido = N1
nivel1.Checked = True
intentos = 10
Labintentos.Visible = False
offniveles = False
End
Public Function nivelesNO(offniveles As Boolean) As Boolean
If offniveles = True Then
nivel1.Enabled = False
nivel2.Enabled = False
nivel3.Enabled = False
nivel4.Enabled = False
nivel5.Enabled = False
Else
nivel1.Enabled = True
nivel2.Enabled = True
nivel3.Enabled = True
nivel4.Enabled = True
nivel5.Enabled = True
Endif
Return
End
Public Sub btnborrar_Click()
ValueBox1.Value = 0
ValueBox1.SetFocus
End
Public Sub btnVer_Click()
Dim agrandar, achicar As Integer
If espandir = True Then
For achicar = 595 To 210 Step -1
FMain.Width = achicar
Wait 0.00049
Next
espandir = False
btnVer.Text = "V\nE\nR\n" "\nR\nE\nC\nO\nR\nE\nS"
Else
For agrandar = 210 To 595 Step 1
FMain.Width = agrandar
Wait 0.00049
Next
espandir = True
btnVer.Text = "O\nC\nU\nL\nT\nA\nR"
Endif
End
Public Sub btnSalir_Click()
Me.Close
End
Public Sub btnComenzar_Click()
Dim achicar As Integer
Labinfo.Text = ""
Labintentos.Text = ""
If espandir = True Then
For achicar = 595 To 210 Step -1
FMain.Width = achicar
Wait 0.00049
Next
espandir = False
btnVer.Text = "V\nE\nR\n" "\nR\nE\nC\nO\nR\nE\nS"
usuario.Show
Else
btnVer.Enabled = False
Labintentos.Caption = ""
Labinfo.Caption = ""
usuario.Show
intentos = 10
Randomize
Nmagico = Int(Rnd(1, nivelelegido))
ValueBox1.SetFocus
Print Nmagico
Print nivelelegido
Endif
End
Public Sub btnIngresar_Click()
Dim level As Integer
If ValueBox1.Text = 0 Then
Message.Info("El numero mínimo es 1")
ValueBox1.Value = 1
Else
If ValueBox1.Text = Null Then
Message.Info("ingrese un número para continuar")
ValueBox1.Text = ""
ValueBox1.SetFocus
Return
Else
Labintentos.Caption = nomJugador & "\nTe quedan " & intentos & "\n restantes para adivinar\n el número Magico"
Ningresado = ValueBox1.Text
If Ningresado = " " Then
Message.Info("Ingrese un numero")
Else
If intentos = 1 Then
Labinfo.Caption = "Has perdido"
Labintentos.Caption = nomJugador & "\n suerte para\n el próximo juego"
ValueBox1.Text = 0
btnborrar.Enabled = False
btnIngresar.Enabled = False
ValueBox1.Enabled = False
btnComenzar.Enabled = True
nivelesNO(False)
Else
If Ningresado > nivelelegido Then
Select Case nivelelegido
Case 50
level = 1
Case 200
level = 2
Case 500
level = 3
Case 700
level = 4
Case 1000
level = 5
End Select
Message.Info("Esta jugando en nivel: " & level & "\n" & "eliga un número menor o igual a " & nivelelegido)
ValueBox1.Text = ""
ValueBox1.SetFocus
Else
If Ningresado >= 1001 Then
Message.Info("Elija un número entre 1 y 1000")
Else
Select Case Ningresado
Case Nmagico
Labintentos.Caption = "FELICITACIONES \n HAS ACERTADO!!!"
Labinfo.Caption = "GANASTE!!!"
puntaje = nivelelegido + intentos
ListBox1.Add(puntaje & " <= " & nomJugador & " => " & Date)
ListBox1.Sorted = True
btnVer.Enabled = True
offniveles = False
nivelesNO(offniveles)
ValueBox1.Value = 0
ValueBox1.Enabled = False
btnIngresar.Enabled = False
btnComenzar.Enabled = True
btnborrar.Enabled = False
Case Else
If Ningresado > Nmagico Then
Labinfo.Caption = "numero menor"
Dec intentos
Labintentos.Caption = nomJugador & "\nTe quedan " & intentos & "\n restantes para adivinar\n el número Magico"
Else
Labinfo.Caption = "numero mayor"
Dec intentos
Labintentos.Caption = nomJugador & "\nTe quedan " & intentos & "\n restantes para adivinar\n el número Magico"
Labintentos.Refresh
Endif
End Select
Endif
Endif
Endif
Endif
Endif
Endif
Print intentos
End
Public Sub Form_KeyRelease()
If ValueBox1.Text <> Null Then
btnIngresar.Enabled = True
Else
Return
Endif
End
Public Sub nivel3_Click()
nivelelegido = N3
btnNivel.Text = "N3"
nivel3.Checked = True
nivel2.Checked = False
nivel1.Checked = False
nivel4.Checked = False
nivel5.Checked = False
End
Public Sub nivel1_Click()
nivelelegido = N1
btnNivel.Text = "N1"
nivel1.Checked = True
nivel2.Checked = False
nivel3.Checked = False
nivel4.Checked = False
nivel5.Checked = False
End
Public Sub nivel2_Click()
nivelelegido = N2
btnNivel.Text = "N2"
nivel2.Checked = True
nivel1.Checked = False
nivel3.Checked = False
nivel4.Checked = False
nivel5.Checked = False
End
Public Sub nivel4_Click()
nivelelegido = N4
btnNivel.Text = "N4"
nivel4.Checked = True
nivel2.Checked = False
nivel3.Checked = False
nivel1.Checked = False
nivel5.Checked = False
End
Public Sub nivel5_Click()
nivelelegido = N5
btnNivel.Text = "N5"
nivel5.Checked = True
nivel2.Checked = False
nivel3.Checked = False
nivel4.Checked = False
nivel1.Checked = False
End
Public Sub salir_Click()
Me.Close
End
Public Sub acercade_Click()
info.Show
End
usuario:
' Gambas class file
Public Sub btnAceptar_Click()
If Txtnombre.Text = Null Then
Message.Info("Ingrese su nombre para continuar")
Return
Else
FMain.intentos = 10 ' agregue esta línea pues mostraba los intentos que restaban al jugador anterior :oops:
FMain.btnborrar.Enabled = True
FMain.Enabled = True
FMain.nomJugador = UCase$(Txtnombre.Text)
FMain.Labintentos.Visible = True
FMain.Labintentos.Caption = FMain.nomJugador & "\nTe quedan " & FMain.intentos & "\n restantes para adivinar\n el número Magico"
FMain.btnComenzar.Enabled = False
FMain.offniveles = True
FMain.nivelesNO(FMain.offniveles)
Endif
FMain.ValueBox1.Enabled = True
FMain.ValueBox1.SetFocus
FMain.btnIngresar.Enabled = True
Me.Close
End
Public Sub Form_Open()
FMain.Enabled = False
Me.Center
Me.Title = "Ingrese su nombre"
End
Public Sub btnCancelar_Click()
Me.Close
FMain.Enabled = True
FMain.btnVer.Enabled = False
End
info:
' Gambas class file
Public Sub Form_Open()
Me.Center
End
Public Sub Form_Leave()
Me.Close
End
Código fuente: AdivinarNumero-0.0.1.tar.gz
Le agregue una lista de los numeros ingresados,
guarda recores en un archivo *.lst
sigue con errores pero.... se lo dejo para que practiquen modificaciones o agregados
AdivinarNumero-0.0.2.tar.gz
AdivinarNumero_v0.0.3.tar.gz
domingo, 2 de junio de 2013
Usando el comando shell
' Gambas class file
'declaración de constantes ya que sudo, cat y pipe
'son comandos que seguramente usaremos mas de una vez
Public Const cat1 As String = " cat"
Public Const sudo1 As String = "sudo"
Public Const pipe1 As String = "|"
Public Sub Form_Open()
Me.center
End
'creamos esta función así nos ahorramos código,
'jeje que algún programador explique como funciona una función
Public Function comandoymodificadores(fvar1 As String, fvar2 As String, fvar3 As String, fvar4 As String, fvar5 As String, fvar6 As String, fvar7 As String, fvar8 As String)
Dim va1, va2, va3, va4, va5, va6, va7, va8, resultado As String
va1 = fvar1
va2 = fvar2
va3 = fvar3
va4 = fvar4
va5 = fvar5
va6 = fvar6
va7 = fvar7
va8 = fvar8
Shell va1 & va2 & va3 & va4 & va5 & va6 & va7 & va8 To resultado
TextArea1.Text = resultado
End
Public Sub btnifconfig_Click()
Dim ifconfig1 As String
ifconfig1 = "ifconfig"
comandoymodificadores(ifconfig1, Null, Null, Null, Null, Null, Null, Null)
End
Public Sub btnuname_Click()
Dim uname1, help1 As String
help1 = " --help"
uname1 = "uname"
comandoymodificadores(uname1, help1, Null, Null, Null, Null, Null, Null)
End
Public Sub btngroup_Click()
Dim group1, help1 As String
group1 = " /etc/group"
comandoymodificadores(sudo1, cat1, group1, Null, Null, Null, Null, Null)
End
Public Sub btnarchivo_Click()
Dim grep1, dir1, nano1, xfile1 As String
TextArea1.Clear
grep1 = "grep"
dir1 = " /proc/meminfo"
nano1 = "nano"
xfile1 = "/home/vector/Escritorio/memtoral.txt"
comandoymodificadores(grep1, cat1, dir1, pipe1, nano1, xfile1, Null, Null)
TextArea1.Text = "Acción ejecutada"
End
Public Sub btnsalir_Click()
Me.Close
End
'Gracias Shell, con tu código pude resolver ( Shell orden & modificador To TextArea1.Text )
lunes, 27 de mayo de 2013
Estado de memoria
'declaramos variables
Public memlibre As String
Public memusada As String
Public memtotal As String
Public largo1 As Integer
Public largo2 As Integer
Public fecha1 As String
Public Sub Form_Open()
Dim i, e As Integer 'contadores de los for
Dim b, z, x, w, mbmemusada, mbmemlibre, mbmemtotal As String
'exec ejecuta el comando como en consola y deja el resultado
'en la variable fecha1. en consola seria: date +%A\ %d\ %B\ %Y
'devuelve este formato: lunes 27 mayo 2013
Exec ["date", "+%A %d %B %Y"] To fecha1
'agregamos un título personalizado a nuestro formulario
Me.Title = "Estado de Memoria" & " - " & fecha1
'centramos el formulario
Me.Center
'obtenemos las 2 primeras lineas de informacion de memoria de /proc/meminfo
Exec ["grep", "MemTotal:", "/proc/meminfo"] To memtotal
Exec ["grep", "MemFree:", "/proc/meminfo"] To memlibre
largo1 = Len(memtotal) 'obtenemos el largo de la primera línea del archivo /proc/meminfo
largo2 = Len(memlibre) 'obtenemos el largo de la segunda línea del archivo /proc/meminfo
'aquí empieza el proceso de extracción de los números que es el dato que nos interesa mostrar
'tomamos el primer caracter, si es un número lo agregamos a la variable x sino seguimos
'en el ciclo hasta recorrer todo el string sacando la cifra numérica.
'La variable x va concatenando los números que vamos encontrando
'asi se muestra el dato crudo:
' MemTotal: 1805400 kB
' MemFree: 184108 kB
For i = 1 To largo1 Step +1
z = Mid$(memtotal, i, 1)
Select Case Asc(z)
Case 47 To 57
x &= z
End Select
Next
'El mismo proceso que el for anterior, pero con la sengunda línea obtenida de /proc/meminfo
For e = 1 To largo2 Step +1
b = Mid$(memlibre, e, 1)
Select Case Asc(b)
Case 47 To 57
w &= b
End Select
Next
'Convirtiendo de kb a mb
mbmemtotal = Int(x / 1024)
mbmemlibre = Int(w / 1024)
'Ingreso de datos de memoria total en los textbox
txtmemtotalmb.Text = mbmemtotal & " MB"
txtmemtotalkb.Text = x & " KB"
'Ingreso de datos de memoria libre en los textbox
txtlibremb.Text = mbmemlibre & " MB"
txtLibrekb.Text = w & " KB"
'Calculo e ingreso de datos de memoria usada en los textbox
mbmemusada = mbmemtotal - mbmemlibre
memusada = mbmemusada * 1024
txtusadamb.Text = mbmemusada & " MB"
txtusadakb.Text = memusada & " KB"
End
Public Sub btnSalir_Click()
'cerramos el programa
Me.close
End
Reverseme
Reverseme
Aquí les dejo el código de un simple
programa que a los entusiastas que recién comienzan a programar en
Gambas sabrán valorar, no así los programadores que sin dudas
largaran una sonrisa jaja. Se trata simplemente de poner los
caracteres de un texto cualquiera en forma inversa. Ejemplo: si
ponemos la palabra HOLA y presionamos en el botón “Poner al revés
ahora”, el resultado sera ALOH. La idea es ir compartiendo código,
enlaces, manuales y lo que sea sobre la programación en gambas.
----------------------------------------- Comienzo de código -----------------------------------------
' Gambas class filePublic palabrax As String
Public revirtiendo As String
Public largoX As Integer
Public Sub Form_Open()
Me.Center
Me.Title = "Reverseme"
TextBox1.Text = "odinevneiB"
Button1.SetFocus
End
Public Sub Button1_Click()
Dim palabrarevertida As String
Dim contador As Integer
If TextBox1.Text = Null Then
Message.Info("No a ingresado texto")
TextBox1.SetFocus
Else
palabrax = TextBox1.Text
largoX = Len(palabrax)
For contador = largoX To 1 Step -1
revirtiendo = Mid$(palabrax, contador, 1)
palabrarevertida &= revirtiendo
TextBox2.Text = palabrarevertida
Next
Endif
End
Public Sub Button3_Click()
Dim pregunta As String
pregunta = Message.Question("Esta seguro que quiere salir del programa?", "Sí, estoy seguro", "No, quiero volver")
Select Case pregunta
Case 1
Me.Close
Case 2
Return
End Select
End
Public Sub Button2_Click()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox1.SetFocus
End
Public Sub Button4_Click()
Message.Info("Programado por postapase \n http://postapase.blogspot.com/ \n Gambas 3.4 \n http://gambas.sourceforge.net/es/main.html")
End
----------------------------------------- Final del código -----------------------------------------
Descargar código fuente: reverseme-0.0.1.tar.gz
Suscribirse a:
Entradas (Atom)