english | español

Sokoban en JavaScript v1.01

Jugar al "Sokoban en JavaScript"

¿Para qué bajárselo? Juega On-Line

Descarga el "Sokoban en JavaScript"

Te permite jugar sin estar conectado
Contiene todos los skins y niveles

Úsalo en tu web

Pon una versión ligera del Sokoban en tu blog

Como diseñar un nuevo skin

En esta sección se dan los pasos a seguir para que cualquiera pueda elaborar su propio skin para esta implementación del Sokoban. Lo primero de todo, aclarar que hay dos tipos de skins: el que he venido a llamar "simple" y "complejo".

Lo que diferencia a ambos es la representación gráfica de la pared. Mientras que en el caso "simple" todos los bloques de la pared son idénticos, en el "complejo", se tienen en cuenta otros elementos como son las sombras, si son esquina, rincón, y otras condiciones que hacen que las piezas de la pared sean diferentes.

Las imágenes del nuevo skin

Básicamente, el skin es un conjunto de imágenes. Para guardarlas, crearemos un directorio con el nombre del skin dentro de la carpeta img. Por ejemplo, creamos la carpeta "miNuevoSkin".

Si el skin es simple, contendrá las imágenes:

  • jugador.gif
  • objetivo.gif
  • tesoro.gif
  • pared.gif
  • ojugador.gif
  • otesoro.gif
  • sp.gif

Los nombres de las imágenes son autoexplicativos, excepto ojugador y otesoro, que representan cuando un jugador o un tesoro (caja) está sobre un objetivo. Y sp.gif que realmente representa a esa región del espacio que no está ocupada por ninguna de las entidades anteriores. Vamos que es un hueco vacío.

Las imágenes pueden ser del tamaño que se quiera, incluso no tienen porqué ser cuadradas, pueden ser rectangulares. Pero lo que sí es necesario, es que todas las imágenes sean del mismo tamaño.

Preparando la configuración para el nuevo skin

Ahora vamos a preparar los archivos para que en el juego se pueda visualizar nuestro skin. Para ello, abrimos el archivo "funciones.js".

En el nos encontramos que hay definido un array de la forma

var aSkins = new Array();
  aSkins[0] = ["Mac","img/mac/",16,16,false];
  aSkins[1] = ["Mac (Grande)","img/mac/",32,32,false];
  aSkins[2] = ["Simple (Normal)","img/simple_n/",16,16,true];
  aSkins[3] = ["Simple (Pequeño)","img/simple_p/",8,8,true];
  aSkins[4] = ["eContento","img/eContento/",13,13,true];
  aSkins[5] = ["Yoshio Murase","img/yoshio/",16,16,true];
  aSkins[6] = ["Windows","img/windows/",16,16,false];
  aSkins[7] = ["Gadget para Google","img/google/",13,13,true];

Cada elemento del array representa un skin. A su vez cada elemento está formado por varios campos:

  aSkins[i] = ["Nombre","nombreDir",w,h,esSimple];

  • Nombre del skin
  • Direcorio donde se encuentra el skin
  • Ancho de cada imagen
  • Alto de cada imagen
  • Indicamos si la pared es simple o no

En el caso que nos ocupa, sería por ejemplo:

  aSkins[i] = ["Mi nuevo skin","img/miNuevoSkin",12,10,true];

Esto querría decir que las imágenes de mi nuevo skin serían de 12x10 píxeles y que la pared es del tipo simple.