Clase shape de Slick2d, rectangulos, circulos y más

Tutorial de slick2d

La clase abstracta Shape en Slick2d sirve de base para un conjunto de formas
básicas como Circle (circulo), Curve (curva), Ellipse (elipse), Line (linea), Polygon (polígono), Rectangle (rectángulo) entre otras.

La clase Shape ademas provee métodos muy útiles como lo son:

  • contains, para saber si una forma contiene a otra
  • intersects, para saber si una forma toca a otra
  • union, sirve para juntar una forma con otra
  • subtract, extrae una forma de una union

se puede ver la lista completa de métodos en http://slick.ninjacave.com/
javadoc/org/newdawn/slick/geom/Shape.html
#method_summary

Rectángulo

Para construir un rectángulo disponemos de la clase Rectangle(float x, float y, float width, float height) , como primer parámetro recibe la coordenada X, después la coordenada Y, el ancho y por último el alto.

Para imprimir el rectángulo recién creado o cualquier otro objeto que extienda de Shape, Graphics provee el método draw(Shape shape)

import java.util.logging.Level;
import java.util.logging.Logger;
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.geom.Rectangle;

public class Main extends BasicGame {
    private Rectangle rectangulo = null;
    
    public Main(String gamename){
        super(gamename);
    }
 
    @Override
    public void init(GameContainer gc) throws SlickException {
        this.rectangulo = new Rectangle(50, 50, 100, 100);
    }
 
    @Override
    public void update(GameContainer gc, int i) throws SlickException {}
 
    @Override
    public void render(GameContainer gc, Graphics g) throws SlickException {
        g.draw(this.rectangulo);
    }
 
    public static void main(String[] args){
        try{
            AppGameContainer appgc = new AppGameContainer(new Main("Formas y figuras"));
            appgc.setDisplayMode(640, 480, false);
            appgc.start();
        }
        catch (SlickException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

El código anterior dibuja un rectángulo de 100 x 50 que comienza a dibujarse en la posición X=50, Y=50

rectangulo-slick2d

Circulo

El constructor principal de la clase Circle recibe tres parámetros:

  1. Coordenada X
  2. Coordenada Y
  3. Radio del circulo

Por lo tanto para crear un nuevo circulo tan solo basta:

private Circle circulo = new Circle(100, 100, 10);

y para imprimirlo con el método draw de la clase Graphics

g.draw(this.circulo);

Otras formas

Descargar ejemplo

En el siguiente proyecto de NetBeans se usan las clases básicas Rectangle, Circle, Curve, Ellipse, Line y Polygon de Slick2D
https://github.com/
notasdesoftware/slick2dShapes/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *