Shordi 28-01-2023, 11:58
Cuando empiezas a programar te entra la fiebre de las líneas de código y te parece que cuanto más largo tu código, cuantas más líneas tengan tus funciones, más calidad tendrá. Luego empiezas a entender el valor de la simplicidad y caes en una fiebre por simplificar el código y llegar a hacer sentencias complejísimas. Finalmente encuentras el pulso justo. Tu código tiene lo que debe tener, ni más ni menos.

(Inciso tangencial: Así recuerdo, hace ya bastantes años, que alguien subió al foro antiguo una función que hacía no recuerdo qué con más de 200 líneas. Le sugerí algunas simplificaciones y al final me dejé llevar y le puse un equivalente que hacía lo mismo con 2 líneas. En un privado se me enfadó y me dijo que yo no quería ayudar, que sólo quería lucirme... una pena, porque me enfadé y desde entonces no le contesté a ninguno de sus temas.)

Pues después de meses de pelearme con algo que no me funcionaba como yo quería, de hacer pruebas y más pruebas, de llegar a perderme, de intentar esto, aquello y lo de más allá, anoche conseguí que me quedase perfecto... en sólo 4 líneas de código. Creo que han sido las líneas que más me ha costado en mi vida parir.

Te quedas con una grata sensación de triunfo... y otra no tan grata de ser bastante tonto por aquello de "¿y para esto tanto?".

Solo un desahogo era esto.


Saludos
Shell 27-01-2023, 23:28
Buenas!.

Programar es un arte, es encontrar la forma más rápida y eficaz de solucionar un problema. Quizás  solo la eficaz.
Pero , ¿ cómo podemos mejorar esa habilidad ?. En este vídeo se muestra una serie de consejos que nos
puede interesar conocer.

Del vídeo que parto dio estos tres consejos:

1º Jugar con juegos de lógica, estimular tu cerebro. Ajedrez, puzzles.rompecabezas.
2º Leer libros especializados
3º Practicar.

Como este vídeo es algo más largo, creo que se extiende algo más que el primero.



Buen finde

Saludos
Shell 27-01-2023, 20:28
Buenas!.

En este ejemplo se trata de escribir la palabra "gambas" en todas las cajas de texto, evitando
los cambios de foco en los texboxes.

[Imagen: qXHIHKk.png]

Código:
' Gambas class file

'Fuentes
'https://icon-icons.com

Const NUMCAJASDETEXTO As Integer = 4
Const PALABRA As String = "gambas"
Const TIEMPO As Integer = 400 'Cada 400 milisegundos cambia el foco

Private etiqueta1 As Label
Private etiqueta2 As Label
Private cajadetexto As TextBox
Private Timer1 As Timer
Private atextboxes As New TextBox[]
Private indice As Integer

Public Sub Form_Open()

  Dim ocatexto As Object

  Randomize

  With Me
    .Arrangement = Arrange.Vertical
    .Spacing = True
    .Margin = True
    .Padding = 20
    .AutoResize = True
  End With

  etiqueta1 = New Label(Me)
  With etiqueta1
    .Font = Font["Arial, 11, Bold"]
    .Alignment = Align.Center
    .Text = PALABRA
    .H = 50
    .W = 150
  End With

  For j As Integer = 0 To NUMCAJASDETEXTO - 1
    cajadetexto = New TextBox(Me) As "Manipula"
    With cajadetexto
      .Font = Font["Arial, 18, Bold"]
      .Alignment = Align.Left
      .H = 50
      .w = 150
    End With
  Next

  etiqueta2 = New Label(Me)
  With etiqueta2
    .Font = Font["Arial, 11, Bold"]
    .Alignment = Align.Center
    .H = 50
    .W = 150
  End With

  For Each ocatexto In Me.Controls
    If ocatexto Is TextBox Then atextboxes.Add(ocatexto)
  Next

  indice = Rand(0, atextboxes.max)
  atextboxes[indice].SetFocus()

  Timer1 = New Timer As "Reloj"
  Timer1.Delay = TIEMPO
  Timer1.Start


End


Public Sub Reloj_Timer()

  indice += Rand(-1, 1)
  'Si indice es menor que cero
  If indice < 0 Then
    'Asignamos a indice el valor máximo del array de cajas de texto
    indice = atextboxes.Max
    'Si indice supera el valor máximo del array de cajas de texto
  Else If indice > atextboxes.Max
    'Asignamos el indice 0
    indice = 0
  Endif
  'Ponemos el foco en el elemento del array atexboxes con valor indice
  atextboxes[indice].SetFocus()

End

Public Sub Manipula_Change()

  Dim ocatexto As Object
  Dim cuenta As Integer

  For Each ocatexto In Me.Controls
    If ocatexto Is TextBox Then
      'Si los caracteres de la cadena Palabra con longitud de ocatexto es distinto al texto de ocatexto
      If Left(PALABRA, Len(ocatexto.text)) <> ocatexto.text Then
        etiqueta2.Text = "Prueba no superada!"
        Timer1.Stop
        DeshabilitarTextBoxes()
        Stop Event
      Endif
      'Si la cadena que tiene ocatexto es igual a PALABRA entonces cuenta uno más
      If ocatexto.Text = PALABRA Then cuenta += 1
    Endif
  Next

  'Si cuenta es igual al número de cajas de texto
  If cuenta = atextboxes.Count Then
    etiqueta2.text = "Prueba Superada!"
    Timer1.Stop
    DeshabilitarTextBoxes
    Stop Event
  Endif
  cuenta = 0

End

Public Sub DeshabilitarTextBoxes()

  Dim ocatexto As Object

  'Deshabilitamos cada una de las cajas de texto del formulario
  For Each ocatexto In Me.Controls
    If ocatexto Is TextBox Then ocatexto.Enabled = False
  Next

End

Me hubiera gustado usar .Next o .Previous en el evento Timer, pero de la forma que lo hice es más difícil ganar ya que es más aleatorio. Smile
Ah, si, no se usa el ratón. Debería haber deshabilitado el uso de ratón si es que es posible.

Saludos
Archivos adjuntos
.gz
FocoJuego-0.0.1.tar.gz (Tamaño: 13.08 KB Descargas: 1)
Páginas (571):    1 228 229 230 231 232 571   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 309
Último miembro: toniroman
Temas del foro: 1,761
Mensajes del foro: 9,153
Últimos temas
Problema con el repósito ...
Foro: Instalación
Último mensaje por: guizans, 14-04-2026, 21:38
Respuestas: 2 - Vistas: 274
UEFI y BIOS
Foro: Hardware & IoT
Último mensaje por: guizans, 13-04-2026, 21:22
Respuestas: 3 - Vistas: 2,429
Visual Studio Code con Ga...
Foro: General
Último mensaje por: guizans, 07-03-2026, 14:24
Respuestas: 2 - Vistas: 642
WebForm con mysql gridvie...
Foro: WebApp/WebForms
Último mensaje por: vjarvelo, 03-03-2026, 16:32
Respuestas: 2 - Vistas: 3,317
Sobre la proteccion del c...
Foro: General
Último mensaje por: Shordi, 19-02-2026, 11:07
Respuestas: 7 - Vistas: 1,206
Powered By MyBB, © 2002-2026 MyBB Group.
Made with by Curves UI.