Single Tech Games

juego en java 2D – 3er dia

Actualizando el 03/05/2012… Agregue el código fuente que ya desapareció de la web aquí
capitulo 9:
Los cambios hasta aquí son pocos pero algo confusos:

public int vX;//se restara/sumara de la posicion X
public BufferedImage buffer;// objeto del tipo bufferedimage
buffer = new BufferedImage(WIDTH,HEIGHT, BufferedImage.TYPE_INT_RGB);
//si no me equivoco, lo que se esta haciendo aca es creando una imagen
//como la clase paint que heredamos de canvas ya no va a ser usada (mirar abajo)
// creamos una imagen nueva de la ventana y esta es la que vamos a modificar
ventana.setIgnoreRepaint(true);// para mejorar la performance ¿?
public void paintWorld() {// nueva clase que usamos en vez de la clase paint() heredada de canvas
Graphics g = buffer.getGraphics();//g va a ser igual a grafico 2D nuevo...
getGraphics().drawImage(buffer,0,0,this);// grafica
}
public void updateWorld() {//clase que se encarga de las matematicas ^_^
    posX += vX;// modificamos las coordenadas x
    if (posX < 0 || posX > WIDTH) vX = -vX;//si es mayor al ancho entonces paso la pantalla
}

Bueno hasta acá le decimos al bicho que aparezca en medio de la pantalla y que vaya sumando 2 al eje horizontal hasta que llegue al final de la pantalla y cuando llegue al tope, los comience a restar y cuando llegue al principio de la pantalla que sume de nuevo y así…
Capitulo 10:
Algo que me gusta son los nombres de los capítulos, son bastante creativos, este por ejemplo se llama, mas lento que el ojo XD

ventana.createBufferStrategy(2);
/*segun lo que dice el api (ver en la web) createBufferStrategy crea una
* nueva estrategia para multi-buffering que es util para mejorar la
renderizacion, crea la mejor estrategia segun el numero de buffers que
*  le des, en este caso 2
*/
g.drawImage(buffer,0,0,this);// mantiene la imagen antigua en su lugar mientras la nueva se dibuja

2 lineas de código que son un poco confusas, yo todavía no termino de entenderlas, pero si leen al comienzo del capitulo dice: . Una vez que el escenario ha sido pintado “fuera de la pantalla” (off-screen)( paintWorld() ), esa imagen en memoria es volcada encima de la ventana. A esta imagen en memoria se la suele llamar buffer, como que le da algo de sentido
Cuando ejecuten les va dar un error:
Exception in thread “main” java.lang.IllegalStateException: Component must have a valid peer
Si siguen avanzando el error en el siguiente código desaparece, pero si quieren saber porque se da, bueno parece ser que antes de hacer el buffering necesita primero la ventana tener  algunas características, sobre todo estar visible, si quieren que corra el código solo bajen el código ventana.createBufferStrategy(2); al final del constructor y va a correr sin problemas
Capitulo 11
Avanzamos un capitulo mas, unas cuantas lineas de codigo agregadas y otras borradas, que son de suma importancia y mejoran bastante el comportamiento del bicho

public BufferStrategy strategy;
/*
* La clase BufferStrategy representa el mecanismo por el cual
se organiza la memoria compleja de un Canvas o ventana en particular
* Las limitaciones del hardware y el software determinan cual
* estrategia de buffer utilizar
*/
strategy = getBufferStrategy();// retorna la estrategia que se esta utlizando
requestFocus();// hace un enfoque a esta ventana
strategy.show();// Hace el siguiente buffer visible

bueno por hoy lo dejo en este capitulo
Buena Suerte!

0 0 votes
Article Rating
Subscribe
Notify of
guest
2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
best strategy games

That is an unbelievable webpage, many thanks with this.
I’d in order to google and yahoo designed for numerous several hours to uncover that get.
I actually don’t like any time when We search engines with regard to article content to be able to read
through My partner and i frequently uncover worthless articles in
addition to a lot junk mail.
People obviously carry therapy regarding the complete unsolicited mail along with
maintain your site cleansing together with high-quality.
Might you have a techniques for my own, personal
weblog?