May 25

Empezando con GODOT

Estoy empezando a estudiar GODOT, el motor de desarrollo para videojuegos.

Para empezar he comprado un par de libros y me he bajado de Youtube unos cuantos cursos de iniciación.

Los libros son:

  • Videojuegos 2D con Godot (Alberto Cuevas Álvarez)
  • La biblia de Godot (nivel 1 (Iki Capitan – Alan Wilhelm)

Los tutoriales en vídeo de Youtube son:

Otros ficheros que he bajado y están en la carpeta programacion/Godot

  • PixelEdit
  • Pixelorama
  • Cómo Aprender a Programar desde CERO con GDScript y Godot para videojuegos – findemor.mp4

Y algunas cosas que he ido añadiendo antes de empezar

  • Copilot – EmpujarObjeto.docx
  • IdeasJuego.html
  • tutorialGodot.pdf

Algunos vídeos para tener en cuenta (posibles cursos que deba bajar)

https://luismaseda.com/wp/?page_id=899

Oct 06

AjedrezPlus – Estrategia con las Posiciones tácticas

Ante esta segunda parte de AjedrezPlus objetivo 2024, dedicada a las posiciones tácticas de partidas reales he pensado en una estrategia que voy a tratar de implementar.

Se trata de hacerlo en dos fases:

Fase 1: Selección completa de problemas

Fase 2: Publicación de los problemas

En la primera fase se trata de recopilar todos los problemas a publicar, documentarlos en la hoja excel y preparar las bases de posiciones y partidas con estos problemas.

Se trata de recopilar unos 209 problemas.

En la segunda fase me dedicaré a publicar en el blog de AjedrezPlus y en AjedrezenMadrid los problemas seleccionados.

Tal vez para probar la viabilidad de este procedimiento haga una pequeña prueba con unos cuantos problemas, y si lo veo efectivo lo realizaré hasta el final de esta segunda parte del proyecto AjedrezPlus objetivo 2024.

 

Oct 06

Posiciones tácticas en el Blog AjedrezPlus sin partida

Lo importante del apartado de posiciones tácticas en AjedrezPlus son las posiciones, eso no me debe hacer perder la perspectiva y encorsetar mi trabajo.

He llegado a la conclusión de que obligar a que cada posición táctica esté respaldada por una partida completa es una limitación inaceptable.

El razonamiento de esta política de publicación es que hay una gran cantidad de posiciones tácticas fantásticas de las que no se conocen (o yo no las tengo) las partidas completas. Y ese no puede ser motivo para dejarlas a un lado. Me parece un desperdicio innecesario.

La solución es tan sencilla como no enlazar a ninguna partida si no se tiene la partida completa. Ya se planteaba así en los primeros problemas del blog, así que por lo tanto no es nada nuevo.

A los usuarios de esta sección se les presentan problemas tácticos ocurridos en partidas reales, y la partida completa es un pequeño plus al problema. Conocer el origen de la posición y su desarrollo completo no cabe duda de que es algo enriquecedor, pero es sólo eso, un pequeño añadido al objetivo principal que es la posición y su correspondiente solución.

Técnicamente hablando mantendré para trabajar las dos bases de datos (posicionesBlog y posicionesBlogPartidas) pero salvando en la de partidas la misma posición que en la de posiciones, para que la numeración entre ambas siga siendo la misma.

Oct 03

Fin de la primera etapa en AjedrezPlus 2024

Ayer terminé la primera etapa de mi proyecto de publicar problemas en AjedrezPlus hasta 2024.

En concreto he programado publicaciones de los problemas de Mate en 2 hasta el 11 de abril de 2024. Es un problema por semana, así que son aproximadamente unos 235 problemas a día de hoy, hasta la fecha de publicación del último.

Pienso que este tipo de problema es el más sencillo de publicar de los tres que planteo, y sospecho que el que menos gusta a los visitantes de la web por su dificultad y «truculencia» en ocasiones. Los otros dos, Táctica y Red de mate, serán un trabajo más duro debido a que la elaboración de cada problema es más compleja.

Mi objetivo sigue siendo conseguir que en marzo de 2020 tenga todos los problemas programados hasta cuatro años vista (2024). Fecha en la que, si mi salud me lo permite, estaré ya jubilado y podré retomar éste proyecto. Pudiendo en esos cuatro años dedicarme a otras cosas.

Por otro lado sigo trabajando, dentro del apartado de test de AjedrezPlus en dos nuevos grupos de problemas, concretamente en el de Finales de Torres, que está muy avanzado, y el de la Defensa Holandesa Sistema Muro de Piedra con Negras, que estoy empezando en estos días. Lo que no sé es cuando los podré publicar ya que ahora no son prioritarios y sólo les dedico tiempo cuando no estoy muy saturado con los problemas de Táctica y Red de mate para 2024.

Ago 05

Añadiendo entradas en AjedrezPlus (Agosto 2019)

Una vez concluidas las modificaciones en Ajedrez en Madrid, voy a dedicar un tiempo a dar altas de problemas en AjedrezPlus.

El objetivo va a ser ambicioso ya que pretendo dejar entradas programadas hasta marzo de 2024, es decir tres meses después de mi probable jubilación.

Va a ser un trabajo arduo ya que hablamos de cerca de 627 entradas entre los tres tipos de problemas (Posiciones, Mates y Mate en 2/3).

Y no es el único objetivo, ya que pretendo convertir los problemas antiguos a la nueva versión (con movimiento de piezas por parte del usuario), lo que significa que tendré unos 408 problemas que actualizar.

La proyección es que para las navidades de este año esté todo hecho, así que a partir de ahora todo el tema web de ajedrez estará volcado en esta actividad que hoy comienzo.

Ago 04

Cambiando a MySqli en ajedrezenmadrid.com

Una vez preparados los datos con los nuevos campos y las modificaciones en las vistas, voy a proceder a realizar los cambios necesarios para que las consultas a la base de datos se realice mediante MySqli.

Realizando los cambios

  • application/config/database.php -> $db[‘default’][‘dbdriver’] = ‘mysqli’;
  • application/controllers/noticia.php -> $filanoticia = mysqli_fetch_array($ssqldatos_noticia);
  • application/models/torneos_model.php -> reemplazar:
    • mysql_query por mysqli_query
    • tabla_torneos_8x8 por tabla_torneos (si se copia desde ajedrez_8x8)
    • tabla_noticias_8x8 por tabla_noticias (si se copia desde ajedrez_8x8)
  • system/database/DB_driver.php -> var $dbdriver = ‘mysqli’;
  • application/views/plantillas/inicio_titulares_noticias.php -> if (mysqli_num_rows($rs_hoytitulares)!=0){
    while ($fila = mysqli_fetch_array($rs_hoytitulares)) {
  • En todas las funciones que contengan return mysql_query, incluir la línea que define el $link, la línea que define el encoding UTF8 y añadir ese parámetro a la instrucción mysqli_query
    • $link = mysqli_connect(«localhost», «luismase_admin», «Rioja/17»,
    • if (!$link->set_charset(«utf8»)); «Esto es muy importante para evitar que salgan ñakas en lugar de acentos y ñ» Más información
    • return mysqli_query($link, $ssqlultorpub);
  • En todas las vistas(inicio_noticias.php, inicio_partidas_en_directo.php, inicio_partidas_actualidad.php, inicio_fotos_actualidad.php) que contengan if (mysql_num_rows($rs_hoynoticias)!=0) o if (mysql_num_rows($rs_hoytorneos)!=0) sustituirlos respectivamente por:
    • if(!empty($rs_hoynoticias) AND mysqli_num_rows($rs_hoynoticias) > 0)
    • if(!empty($rs_hoytorneos) AND mysqli_num_rows($rs_hoytorneos) > 0)
  • application\views\plantillas\inicio_partidas_en_directo.php sustituir:
    • $contaTordir = mysqli_num_rows($rs_tordir);
    • $contaDir = mysqli_num_rows($rs_dir);
  • application\views\plantillas\inicio_partidas_actualidad.php sustituir:
    • $contaToract = mysql_num_rows($rs_toract); -> $contaToract = mysqli_num_rows($rs_toract);
  • application\views\plantillas\inicio_fotos_actualidad.php sustituir:
    • $contaFotos = mysql_num_rows($rs_fotos); -> $contaFotos = mysqli_num_rows($rs_fotos);
  • application\views\plantillas\inicio_proximos_torneos.php incluir delante del while la línea y modificar el while:
    • if(!empty($rs_protorneos20) AND mysqli_num_rows($rs_protorneos20) > 0) {
    • while ($fila = mysql_fetch_array($rs_protorneos20)) { -> while ($fila = mysqli_fetch_array($rs_protorneos20)) {
    • Añadir un } tras el cierre del while.
  • application\views\plantillas\inicio_torneos_finalizados.php incluir delante del while la línea y modificar el while:
    • if(!empty($rs_fintorneos20) AND mysqli_num_rows($rs_fintorneos20) > 0) {
    • while ($fila = mysql_fetch_array($rs_fintorneos20)) { -> while ($fila = mysqli_fetch_array($rs_fintorneos20)) {
    • Añadir un } tras el cierre del while.
  • application\views\plantillas\lista_torneos_julio.php incluir delante del while la línea y modificar el while:
    • if(!empty($rs_torneos07) AND mysqli_num_rows($rs_torneos07) > 0) {
    • while ($fila = mysql_fetch_array($rs_torneos07)) { -> while ($fila = mysqli_fetch_array($rs_torneos07)) {
    • $conta_jul += 1;
    • $c_pgn_jul += $fila[‘numpartidas_torneo’];
    • Añadir un } tras el cierre del while.
  • Realizar la operación anterior en las siguientes plantillas cambiando los datos relativos a cada mes: $rs_torneosxx y $conta_xxx 
    • application\views\plantillas\
      • lista_torneos_enero.php
      • lista_torneos_febreroo.php
      • lista_torneos_marzoo.php
      • lista_torneos_abril.php
      • lista_torneos_mayo.php
      • lista_torneos_junio.php
      • lista_torneos_agosto.php
      • lista_torneos_septiembre.php
      • lista_torneos_octubre.php
      • lista_torneos_noviembre.php
      • lista_torneos_diciembre.php
  • application\views\plantillas\lista_torneos_anual.php incluir delante del while la línea y modificar el while:
    • if(!empty($rs_torneos01) AND mysqli_num_rows($rs_torneos01) > 0) {
    • while ($fila = mysql_fetch_array($rs_torneos01)) { -> while ($fila = mysqli_fetch_array($rs_torneos01)) {
  • application\views\plantillas\lista_torneos_menu_anyodejuego.php añadir líneas de 2019 y 1999 (Esto de momento es manual, pero habrá que automatizarlo).

Una vez terminado he comprobado la funcionalidad de la web y parece que todo funciona correctamente.

¡He dado un gran paso!

 

Ago 03

Actuando sobre ajedrezenmadrid.com

Voy a empezar la modificación de la web ajedrezenmadrid.com con el añadido de dos campos nuevos y su consecuencia en la vista muestra_torneo.

Para ello hago un duplicado de la tabla original de tabla_torneos de ajedrezenmadrid.com sobre tabla_torneos_190803, y una copia de tabla_noticias sobre tabla_noticias_190803.

A continuación comienzo los cambios en tabla_torneos.

  • Paso 1 –  creo el campo pre_torneo y lo relleno con «20» que refleja los dos primeros dígitos del año del torneo.
  • Paso 2 – creo el campo formato_torneo, que nos dirá si el torneo se genera con tablas (valor 1) o con fichero de texto incrustado (como se hace ahora mismo) (valor predeterminado 0).
  •  

Cambios en la programación

Cambiar en applications/views/muestra_torneo:

<?php include ‘torneos/’ . substr($rs_tor[‘cdgo_torneo’], 0, 4) . ‘/’ . $rs_tor[‘info_torneo’]?>

por

<?php include ‘torneos/’ . $rs_tor[‘pre_torneo’] . substr($rs_tor[‘cdgo_torneo’], 0, 2) . ‘/’ . $rs_tor[‘info_torneo’]?>

 

Todo parece funcionar correctamente, así que ahora puedo incluir torneos de siglos anteriores y serán visibles en el listado de torneos.

Jul 31

El código de torneo nuevo

Voy a empezar la modificación de la web ajedrez8x8.com con el añadido de dos campos nuevos y su consecuencia en la vista muestra_torneo.

Para ello hago un duplicado de la tabla original de ajedrezenmadrid.com sobre ajedrez8x8.com

  • Paso 1 –  creo el campo pre_torneo y lo relleno con «20» que refleja los dos primeros dígitos del año del torneo.
  • Paso 2 – creo el campo formato_torneo, que nos dirá si el torneo se genera con tablas (valor 1) o con fichero de texto incrustado (como se hace ahora mismo) (valor predeterminado 0).
  •  

Cambios en la programación

Cambiar en applications/views/muestra_torneo:

<?php include ‘torneos/’ . substr($rs_tor[‘cdgo_torneo’], 0, 4) . ‘/’ . $rs_tor[‘info_torneo’]?>

por

<?php include ‘torneos/’ . $rs_tor[‘pre_torneo’] . substr($rs_tor[‘cdgo_torneo’], 0, 2) . ‘/’ . $rs_tor[‘info_torneo’]?>

 

Si todo funciona correctamente me puedo plantear aplicar estos cambios a la web de ajedrezenmadrid.com, incluyendo los referidos a MySql.

Esto sería un paso muy importante porque me dejaría solucionado el problema de no quedarme obsoleto por la sentencia MySql, y por otro lado estaría iniciado el camino para las mejoras en cuanto a torneos y noticias, siendo todo ello transparente para los usuarios.

Jul 31

Nuevo replanteamiento

Voy a reflexionar sobre la situación de los cambios que pretendo hacer en la web de Ajedrez en Madrid.

Torneos

Para el nuevo formato de torneo que me gustaría implementar serían necesarias distintas nuevas tablas:

  • Clasificaciones
  • Rondas
  • Ordenes de fuerza
  • Bases
  • Crónicas
    • Crónicas con pestaña propia en la ficha del torneo
      • Crónicas previas
      • Crónica final
    • Crónicas embebidas en la ronda

Para complicar más las cosas las bases sólo son activas si son el único elemento a mostrar, en cualquier otro caso la pestaña activa sería la clasificación, que debe existir obligatoriamente.

Hay que pensar que para montar la ficha del torneo hay que recorrer todas las tablas mencionadas.

Noticias

Para las noticias hay que presentar:

  • Clasificación
  • Ronda

La crónica final o las de ronda es duda si se pueden mostrar en noticias o no.

Reflexiones

El código de torneo

Para solucionar el tema del código de torneo me inclino a pensar que podría incluirlo al final del código de torneo. Ésto permitiría que los torneos anteriores seguirían funcionando aunque tengan dos caracteres más, ya que éstos estarían en blanco.

En este caso tendría que chequear siempre las dos últimas posiciones del código de torneo, si no existen damos por sentado que es un 20, en caso contrario tomamos los dos dígitos que vengan (por ejemplo 19) y eso nos permitirá acceder a los directorios de torneos de siglos anteriores.

No obstante creo que habría que habilitar un campo con el código de siglo para otras funcionalidades de la aplicación.

Los torneos con datos en tablas

Se clasifican los torneos en dos tipos

  • Tipo 0 – los que no generan noticias (todos los antiguos o que no nos interesen).
  • Tipo 1 – los que generan noticias

Los torneos de tipo 1 están gestionados por tablas (clasificación, rondas, orden de fuerza, bases, etc.) y son los que cuando se mantienen actualizados generan noticias automáticas en la web, sin necesidad de que haya que incluir una noticia en la tabla de noticias.

Jul 29

Generar noticias a partir de torneos

La idea es generar a partir de la información de los torneos las noticias del día ¿Qué implica esto?

Para empezar habrá al menos tres tipos de noticias:

  • La información de resultados de ronda y clasificación de un torneo.
  • Los problemas de AjedrezPlus.
  • Alguna noticia «especial» que tenga que incluirse en primera página.

Divagando

Ahora mismo tenemos una base de noticias que es a partir de la cual generamos la primera página de la web. Si diferencio estos tres tipos de noticias la información podría venir de dos fuentes diferentes (no sé si eso es bueno).

Por otro lado la información de los torneos pasaría a ser de un cuerpo de texto del torneo creado a mano, a ser generado por programa a partir de unas bases de datos en las que habría resultados de rondas y clasificaciones según rondas, orden de fuerza, e incluso las bases del torneo.

Posible registro de ronda

  • Torneo 
  • Número de ronda (texto)
  • Cuerpo de ronda (igual que el texo de la noticia)
  • Fecha de ronda aaaa-mm-dd

Posible registro de clasificación

  • Torneo
  • Número de ronda o final (texto)
  • Cuerpo de clasificación
  • Fecha de clasificación aaaa-mm-dd

Posible registro de orden de fuerza

  • Torneo
  • Cuerpo de Orden de fuerza

Posible registro de bases

  • Torneo
  • Fichero pdf de bases

¿Con estos mimbres podría componer la página del torneo?

Veamos

  • 1º comprobaríamos si hay clasificación, si la hay se incorpora.
  • 2º comprobaríamos las rondas que tenemos de ese torneo, si las hay se incorporan.
  • 3º buscaríamos las bases del torneo y las incorporaríamos siempre.

El contenido de una página de torneo está dividido en dos partes:

  • El menú de enlaces (clasificación, Ronda 1, Ronda 2… , Ronda 9, Participantes, Bases)
  • Los contenidos a los que apuntan los enlaces