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, 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 )