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
Circulo
El constructor principal de la clase Circle recibe tres parámetros:
- Coordenada X
- Coordenada Y
- 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
- Curve(Vector2f p1, Vector2f c1, Vector2f c2, Vector2f p2)
- Ellipse( float centerPointX, float centerPointY, float radius1, float radius2 )
- Line(float x1, float y1, float x2, float y2)
- Polygon(float[] points)
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/