Hola a todos,
como varios me habéis pedido que suba el código de Sokoban que llevamos hecho hasta el momento os lo dejo en esta entrada del blog. Además aprovecho para explicar cómo incluir la biblioteca Graficos.jar para poder usar la clase CanvasFrame.
De momento hemos escrito un programa que dibuja el suelo del escenario usando imágenes que colocamos en la pantalla como si fueran losas. Es decir, suponiendo que el escenario es cuadrado y tiene un tamaño de 10x10 celdas dibujaremos 100 imágenes que representen las 100 losas del suelo.
Para poder dibujar usamos un objeto de la clase CanvasFrame y como esta clase no pertenece a Java hay que importarla. Para ello descargamos el fichero
Graficos.zip y lo descomprimimos en el escritorio. Buscamos el fichero Graficos.jar y lo copiamos a la carpeta del proyecto en el que queramos usarlo. Después, desde NetBeans hacemos click con el botón derecho sobre el icono que pone "Libraries" o "Bibliotecas" y tras elegir la opción "add jar/folder" o "añadir jar/carpeta" buscamos el fichero Graficos.jar dentro de la carpeta del proyecto y lo añadimos para que quede así:
Una vez hecho podemos empezar a declarar y usar variables de tipo CanvasFrame. En concreto, el código para dibujar el suelo del escenario sería algo así:
import graficos.CanvasFrame;
public class Main {
public static void main(String[] args) {
// Declaramos la variable cf de tipo CanvasFrame
CanvasFrame cf;
// Creamos un objeto de tipo CanvasFrame
cf = new CanvasFrame(340, 360);
// Dibujamos el suelo como si fuera un mosaico
for ( int y = 0 ; y < 10 ; y++ ) {
for ( int x = 0 ; x < 10 ; x++ ) {
cf.image("images/floor.gif", 10+x*32, 10+y*32, 32,32);
}
}
}
}
Una vez que teníamos esto creamos una clase para representar al personaje. El personaje lo representamos usando dos variables que modelan la posición del mismo y un par de funciones: una que dibuja al personaje y otra que lo cambia de sitio. La clase que hicimos era algo así:
import graficos.CanvasFrame;
public class Personaje {
// Atributos que modelan un personaje
private int x;
private int y;
// Constructor de los objetos de tipo Personaje
public Personaje(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
// Método que mueve el personaje
public void mueve(int dx, int dy) {
this.x = this.x + dx;
this.y = this.y + dy;
}
// Métodos que dibuja el personaje en la pantalla cf
public void dibuja(CanvasFrame cf) {
// Dibujar el personaje
cf.image("images/frog.png", 10 + x * 32, 10 + y * 32, 32,32);
}
}
Una vez que tenemos la clase Personaje podemos usarla añadiendo a nuestro programa principal algo así:
Personaje rana = new Personaje(0,0);
rana.mueve(1,0);
rana.dibuja(cf);
Pero para poder dibujar la imagen de la rana debemos tener el fichero "frog.png" guardado dentro de una carpeta llamada "images" que esté dentro de la carpeta "src" del proyecto.
Intentad hacer la clase Caja para usarla el martes que viene en clase. Recordad que tendremos que tener varias cajas en el escenario y poder moverlas por el mismo.
saludos