Single Tech Games

juego en java 2D – 10mo dia y Código Fuente

Actualizando el 03/05/2012… Agregue el código fuente que ya desapareció de la web
http://www.planetalia.com/cursos/
Y llegamos al capitulo final de este tutorial, con las optimizaciones que se le hace a las imagenes, el raton y los FPS, tratare de explicar que es lo que hace
SpriteCache.java

public BufferedImage createCompatible(int width, int height, int transparency) {
    GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();//gc va a ser = a las caracteristicas del monitor
    BufferedImage compatible = gc.createCompatibleImage(width,height,transparency);//le indicamos tamaño y transparencia
    return compatible;
}
public BufferedImage getSprite(String name) {
    BufferedImage loaded = (BufferedImage)getResource("imagenes",name);
    BufferedImage compatible = createCompatible(loaded.getWidth(),loaded.getHeight(),Transparency.BITMASK); //Crea una imagen que soporta pixels transparentes
    Graphics g = compatible.getGraphics();
    g.drawImage(loaded,0,0,this);
    return compatible;
}

La sgte optimizacion trata del background, en pocas palabras crearemos 2 background, uno arriba del otro y los iremos desplazando cada vez
invaders.java

backgroundTile = spriteCache.getSprite("oceano.gif");
background = spriteCache.createCompatible(Stage.WIDTH, Stage.HEIGHT + backgroundTile.getHeight(), Transparency.OPAQUE);//creamos una imagen con el alto d pantalla + el alto de oceano.gif y que no soporte transparencia
Graphics2D g = (Graphics2D)background.getGraphics();
g.setPaint( new TexturePaint( backgroundTile, new Rectangle(0,0,backgroundTile.getWidth(),backgroundTile.getHeight())));//creamos el background normal
g.fillRect(0,0,background.getWidth(),background.getHeight());
backgroundY = backgroundTile.getHeight();
g.drawImage( background,0,0,Stage.WIDTH,Stage.HEIGHT,0,backgroundY,Stage.WIDTH,backgroundY+Stage.HEIGHT,this);
//Esto es un poco complicado si ven al api me entendera como funciona, pero mas o menos quedaria asi (0,0,600,400,0,256,400,856)
do {
    Thread.yield();// que espere hasta que currentTimeMillis()-startTime< 17
} while (System.currentTimeMillis()-startTime< 17);

The End ;D
Ahora prosigamos con el libro que nos ayudara mejorar en mucho este codigo
Código Fuente (Para ver todo el codigo fuente del juego haz click en la siguiente página… no en el siguiente post ¬¬)
Los Recursos (Sonidos y Gráficos, están en la última página)

Páginas: 1 2 3

0 0 votes
Article Rating
Subscribe
Notify of
guest
3 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
lan

amgo no encuentro el codigo!

[…] Actualizo el 03/05/2012… Ufff Cuanto tiempo estuve revisando los links y al parecer planetalia ya no pone el curso así que decidí postear el código fuente, este código no tiene ninguna explicación, solo es el código que encontré entre mis carpetas de muuuuuucho tiempo. Me imagino que ahora hay muchos mejores tutoriales, pero igual lo posteo para cualquier referencia, el código esta acá […]