Ejercicio: Sokoban

De Edutec Wiki
Saltar a: navegación, buscar

Under construction.png

Introducción

Juego de lógica con diferentes niveles, donde el protagonista tiene que llevar la mercancía al destino utilizando el mínimo número de movimientos y sin bloquear su propio paso. En este ejercicio vamos a utilizar las propiedades de la capa de dibujo, para almacenar la información del desarrollo del juego y simplificar así la programacion. En los proyectos de Scratch los distintos objetos se disponen en capas,

Dibujo de los componentes

Dibulo de los distintos Niveles

Dibujo del Muñeco

Código del Programa

Como la elaboración de los distintos dibujos es algo complicada y debe de ser muy precisa para que el programa funcione correctamente adjuntamos la dirección de un proyecto en blanco con los dibujos correctos.

http://scratch.mit.edu/projects/44916582/#editor

Abrimos este enlace en una nueva pestaña y en el proyecto que se nos abre pulsamos en el boton reinventar.(debemos estar logados en la web de Scratch).

ScratchSokobanBotonreinventa.png
.


Inspeccionamos el proyecto y vemos que tiene un escenario con dos fondos,el primero es el nivel numero 1 del juego y el segundo es una cuadricula que nos servirá de plantilla para dibujar nuevos niveles.Este objeto no contiene código alguno. El siguiente objeto es al que llamamos muñeco

ScrathSokobanImagenesMuñeco.png
.

Este objeto tiene seis vestidos y el funcionamiento del programa se basa en gran medida en las propiedades de estos vestidos.Veamos una breve descripción de los mismos

  • muñeco es la imagen que veremos durante la ejecución del juego.
  • explorador es el vestido que utilizaremos para detectar el color de las casilla que tenemos inmediatamente en frente y la siguiente a ella en la dirección de la marcha los colores utilizados en los sensores no pueden estar presentes en el resto del vestido.
  • blanco es la imagen que utilizaremos para pintar de blanco la casilla que ocupaba una caja de color verde,que sera la casilla donde aparece el muñeco al concluir un movimiento
  • amarillo es la imagen que utilizaremos para pintar de amarillo la casilla que ocupaba una caja de color verde oscuro,que sera la casilla donde aparece el muñeco al concluir un movimiento
  • verde es el vestido que utilizamos para pintar las cajas, observar que el centro del objeto esta desplazado respecto a los otros vestidos, por lo cual al estamparlo, lo hara en la casilla que esta en frente de la que aparece el muñeco
  • verde oscuro es el vestido que utilizamos para pintar las cajas cuando llegan a la posición de almacenamiento.

Este objeto tambien tiene dos variables "vestido 1" y "vestido 2", estas variables son del tipo "solo para este objeto.


Análisis del juego

El juego consiste en llevar las cajas (casillas verdes) hasta su posición de almacenamiento (casillas amarillas), mediante la acción del muñeco. El muñeco tiene dos comportamientos, avanzar y empujar una caja,solo se puede empujar una caja a la vez.

  • Avanzar El muñeco puede avanzar cuando la casilla que tiene enfrente es de color blanco o amarillo.
  • Empujar El muñeco empujara cuando la casilla que tiene enfrete es de color verde o verde oscuro y la siguiente es de color blanco o amarillo.


Codigo movimiento

Utilizamos las teclas de las flechas para orientar el muñeco y iniciar el movimiento

ScratchSokobanMovimiento.png

Veamos lo que tenemos que hacer al enviar el mensaje movemos , solo nos interesa analizar los casos en que tenemos que hacer alguna cosa, los demás casos como tener una pared enfrente o tener delante una caja bloqueada con tal de no hacer nada tenemos suficiente empecemos a escribir el código del mensaje moverse.

ScratchSokobanMoverse1.png

Lo primero que hacemos es poner el vestido explorador para poder tener información sobre las casillas que tenemos enfrente. Escribimos la condición en la que el muñeco puede avanzar, es decir que la siguiente casilla sea blanca o amarilla, si cumple la condicion avanzamos 21 pasos. Para escribir la condición utilizamos una pieza Si/Si no, que nos permite especificar lo que debemos hacer cuando no se cumple la condición. Por ultimo colocamos una instrucción para cambiar el vestido a"muñeco" que sera la forma normal como veremos este objeto.

Escribamos ahora lo que tenemos que hacer cuando no se cumple la condición, solo tendremos que hacer alguna cosa cuando tengamos y podamos empujar una caja veamos como escribimos este código.

ScratchSokobanMoverse2.png

Si se cumple la condición tendremos que elegir los vestidos que utilizaremos en cada caso, el " vestido 1" una sera el color que que tiene que tener la casilla donde.


ScratchSokobanMoverse3.png


ScratchSokobanMoverse4.png

Ejemplo

Sokoban

Sokoban 01.png