Feliz diciembre.
Bien, entrando en materia... Tengo casi listo un editor de texto como cualquier otro salvo por el hecho de que este te ayuda a programar en html. Ya está trabajando de forma estable, aunque tiene muchos detalles y eso es solo lo que yo veo. La idea es que sirva para desarrollar las páginas de ayuda para sistemas tanto on-line, como en modo local. Incluso permite que un programador no dedicado a html, pero con conocimientos muy básicos, pueda crear y usar sus propias hojas de estilo css3, tiene un visor sencillo para evitar al programador tener que cargar sus pruebas en mozilla, chromium. opera o cualquier otro.
Para hacer una demostración de sus resultados en un acto de poca modestia, decidí escribir un juego de ahorcado, colgado, como se llame.
Porque teóricamente es algo sencillo donde podría hacer otras cosas, como afianzar mas aquello de los settings, algo mas sobre procesos en lotes de SQLite3 y bingo....
me ha estallado la gracia en la cara...
Public Sub Cajas(l As Integer)
Dim i, baseX, BaseY As Integer
' l es el numero de cajas a crear
' Caja es obviamente un control label creado en tiempo de ejecución
' lo demas son medidas, posiciones y otras bobadas
baseX = (279 - ((21 * l))) / 2
baseY = 148
For i = 1 To l
Caja = New Label(FMain.TP1.Current) As "Caja"
Caja.X = baseX
Caja.W = 21
Caja.H = 21
Caja.Tag = i
Caja.Border = 1
Caja.Alignment = 3
Caja.Y = baseY
baseX = BaseX + Caja.W + 2
Next
End
Public Sub Asigna_letras(p As String)
Dim i As Integer = 1
Dim hijo As Control
' Como la propiedad Children retorna una colección de controles en su contenedor
' solo pregunto por el nombre del hijo con la esperanza de que asigne en orden de
' aparición en la propiedad text, la letra que correspondería a esa posición
'
' Lamentablemente solo coloca correctamente la última letra en el último label
'
For Each hijo In FMain.TP1.Children
If hijo.name = "Caja" Then
Caja.Text = Mid(p, i, 1)
i = i + 1
Endif
Next
End
Dim i, baseX, BaseY As Integer
' l es el numero de cajas a crear
' Caja es obviamente un control label creado en tiempo de ejecución
' lo demas son medidas, posiciones y otras bobadas
baseX = (279 - ((21 * l))) / 2
baseY = 148
For i = 1 To l
Caja = New Label(FMain.TP1.Current) As "Caja"
Caja.X = baseX
Caja.W = 21
Caja.H = 21
Caja.Tag = i
Caja.Border = 1
Caja.Alignment = 3
Caja.Y = baseY
baseX = BaseX + Caja.W + 2
Next
End
Public Sub Asigna_letras(p As String)
Dim i As Integer = 1
Dim hijo As Control
' Como la propiedad Children retorna una colección de controles en su contenedor
' solo pregunto por el nombre del hijo con la esperanza de que asigne en orden de
' aparición en la propiedad text, la letra que correspondería a esa posición
'
' Lamentablemente solo coloca correctamente la última letra en el último label
'
For Each hijo In FMain.TP1.Children
If hijo.name = "Caja" Then
Caja.Text = Mid(p, i, 1)
i = i + 1
Endif
Next
End
Ahora bien, tengo una lista de preguntas.
1.- ¿como puedo acceder a una de las cajas, cualquiera de ellas directamente, me refiero a usando código?
2.- ¿como elimino esas cajas cuando el juego vuelva a iniciar, sin haber cerrado.?(*)
3.- mi forma de juego es poco conservadora, tiene 3 niveles de dificultad, 1 fácil con igual número de intentos que letras y disminuyendo 1 intento por cada nivel de dificultad. Pero deseo hacer el reto mas interesante haciendo que se juegue contra reloj en una cuarta modalidad. ¿Se puede hacer eso? es decir, ¿estar jugando y un timer corriendo al mismo tiempo?(**)
En estas "sub-rutinas" solo se crean los controles label, que bien podrían ser de otro tipo, y se le asigna una letra a cada label (eso no funciona como esperaba).
Disculpen lo largo de la explicación... De antemano gracias por su tiempo...
(*) existe un botón jugar que inicia el juego.
(**) esto no es muy importante, solo es curiosidad, ya que al no existir hilos en gambas, se enreda todo.