El gestor de contenidos en PHP y el engine de sonido en JSCRIPT para MüchiGame están listos.
Se puede descargar aquí ( https://forja.rediris.es/frs/shownotes.php?release_id=176 )
La demo se ha actualizado, pero ahora usando el motor de gestor de contenidos directamente desde
http://www.agenciaq4.com/muchigame/jugar/
Para crear una web del marco de aplicación “juego” en PHP necesitamos muy pocas líneas para hacer cosas muy potentes:
______ INICIO (index.php) ______
require_once(’config/config.php’); //La configuración del marco para cargar todo lo necesario..
include_once(’clases/clase_juego.php’); //La clase de la aplicacion web del juego
//en el constructor y separado por comas introducimos las clases que vamos a usar
$app = new juego(crearHtml(),crearNoticias()’);
require_once(DIR_IDIOMA.’index.php’);
//Carga las constantes para el idioma actual (seleccionado automáticamente por la clase juego)
$p = new clase_plantilla($app); //Para cargar una plantilla necesitamos la clase de plantillas
$contenido[’arbol’] = TXT_HOME; //indica la situación actual del árbol de la aplicación web
//La constante TXT_HOME viene definida en config/config.php
$contenido[’titulo’] = TXT_TITULO; //constante definida en el fichero de idioma
$p->cargar(’indice.html’); //carga del directorio de plantillas del idioma actual la plantilla para el indice
$noticia = $app->noticias->leerNoticia( //obtiene la noticia con su identificador en concreto
$app->noticias->ultima_noticia(), //Selecciona la ultima noticia
$app->idioma //El idioma establecido al cargar la clase automáticamente
);
$p->pasarAplantilla(array( //Reemplaza las constantes de la plantilla por sus valores correspondientes
‘DIRECTORIO_IDIOMA’ => SITIO_WEB.”idiomas/”.$app->idioma.”/”,
‘titulo_noticia’ => reconstruye_html($noticia[’titulo_’.$app->idioma]),
‘descripcion_noticia’ => substr(reconstruye_html($noticia[’HTML_’.$app->idioma]),0,250).”…”
));
$contenido[’contenido’]= $p->contenido; //El contenido de la pagina viene a ser todo lo guardado en la plantilla $p
$app->html->escribirContenido($contenido);
//Muestra el contenido de la plantilla por defecto con el contenido actual
______ FIN (index.php)______
Otro ejemplo del potencial del gestor de contenidos es el poder utilizarlo para crear PDF’s con información del juego. En el respositorio se encuetra pdf.php que es un generador de PDF’s con las noticias.
El sentido de éste gestor es separar el código [HTML]—[PHP]—[HTML] de ésta forma, es decir, separar lo más posible php de html y xml,javascript,etc, y hacer que se escriba código de aplicación. De ésta forma, en las capas más internas de la jerarquía web se encontrará el lenguaje SQL (la BD es compartida por Django y el CMS PHP,también accesible por PERL), en las externas el HTML ,JSCRIPT y XML,para operar con ellas usamos PHP y está todo muy bien ordenado.
En cuanto al JavaScript y A*
Haciendo remember y flashback de asignaturas como Modelos de la Inteligencia Artificial, he rescado un viejo algoritmo que se usa en laberintos para robot muy famoso: Algoritmo A*, con éste algoritmo se pueden calcular las rutas óptimas de caminos de un punto a otro de un mapa como el de un videojuego.
Pruebas:
Éstas son algunas de las pruebas para crear escenarios, las celdas pueden sustituirse por otras como:



etc , y formar así un pequeño escenario más “animado”
Con el engine en DHTML sería tan fácil como escribir:
—-
var celda = new muchigame.Celda(”id_celda”, “img/suelo.gif”,x,y,z);
escena.anadirCelda( celda );
—-
Desde aquí ,las posibilidades son ilimitadas, como por ejemplo, cargar en Ajax un evento, y hacer que al pisarse una celda por un jugador se escuche un sonido de una puerta,
if (sprite.x==0 && sprite.y==0)muchigame.manejador_sonido.play(’puerta’);
//Sonido creado con muchigame.manejador_sonido.createSound(’puerta’,’sounds/puerta.mp3′);