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 conjunto de niveles

En esta sección se dan los pasos a seguir para que cualquiera pueda elaborar su propio conjunto de niveles.

Representación de los elementos básicos

Lo primero que debemos hacer es analizar los elementos de los que consta el Sokoban. Este juego consiste en llevar una serie de cajas a unos destinos finales que llamaremos objetivos. El espacio está limitado por paredes. Los únicos elementos que cambian de posición a lo largo de la partida son el propio jugador y las cajas. Mientras que los objetivos y las paredes se mantienen en el mismo lugar todo el rato.

Luego tenemos que buscar una forma de representar los niveles. Y resulta que entre las distintas implementaciones de Sokoban, se utiliza la siguiente notación para representar los elementos básicos:

  -- Un espacio vacío 
# -- Una pared
. -- Objetivo
$ -- Caja
* -- Caja sobre un objetivo
@ -- Jugador
+ -- Jugador sobre un objetivo

De esta forma, la siguiente variable JavaScript de tipo String, representa un nivel en su fase inicial

var nivel_1 =
"    #####          |" +
"    #   #          |" +
"    #$  #          |" +
"  ###  $##         |" +
"  #  $ $ #         |" +
"### # ## #   ######|" +
"#   # ## #####  ..#|" +
"# $  $          ..#|" +
"##### ### #@##  ..#|" +
"    #     #########|" +
"    #######        ";



El archivo .js

Para hacer tu propio conjunto de niveles, lo primero es elegir un nombre y crear un archivo de texto con el nombre elegido precedido del prefijo "niveles_" y con extensión "js". Por ejemplo "niveles_pericoPalotes.js".

En él, vamos añadiendo tantos niveles como queramos, siguiendo la notación anterior. Empezando con var nivel_1, var nivel_2, etc... de forma consecutiva. Al terminar el conjunto de nieveles, debemos añadir una serie de información al principio del fichero.

Pongo un ejemeplo de niveles_microban.js

 
var numNiveles = 155;
var nombreDeNivel = "Microban"; 
var autorDeNivel = "David Skinner";
var urlDeNivel = "http://[...]/~sasquatch/sokoban/";
var mailDeNivel = "sasquatch@bentonrea.com";

En estas variables se indica el número de niveles que hay, el título del conjunto de niveles, quien es el autor del nivel, el enlace a la página del nivel, o en su caso, del autor, y el mail del autor, por si quiere que se pongan en contacto con él.

Una vez terminado el conjunto de niveles, se puede remitir a esta web para que se pueda jugar on-line desde aquí mismo. Eso sí, siempre hay que asegurarse que los niveles tienen solución, y enviarlas en formato lUrD junto con los niveles. Los archivos y preguntas se pueden enviar a sokoban@e-contento.com

El formato lUrD

El formato lUrD es un formato que he visto en otros sitios y que representa los movimientos:

l - left (izquierda)
u - ur (arriba)
r - right (derecha)
d - down (abajo)

El que la letra aparezca en minúsucla o en mayúscula es para diferenciar si se trata de un movimiento hacia arriba (u) o de un movimiento hacia arriba que empuja a una caja (U).

De esta forma una cadena de estos símbolos definen una serie de movimientos:
uuuuuuuuUUUUUrrrrrrrrrrRR

Sube 8 casillas, sigue subiendo 5 casillas empujando una caja, se mueve 10 casillas a la derecha, y sigue moviendo 2 casillas a la derecha empujando una caja.

Existe una notación abreviada para la misma información que indica el tipo de movimiento y durante cuantas casillas se van a realizar
u8U5r10R2