Vous êtes sur la page 1sur 8

Programación Avanzada

Universidad del Aconcagua

Programación Avanzada
El Juego (parte 3)
Ampliación de técnicas y mecanismos

Esp. Ing. César Aranda


unidatos@gmail.com

Licenciatura en Informática y Desarrollo de Software


v.2014

Pintado en Java
 Existencia de 3 métodos en todo componente java.
 repaint()
 invocado cuando se necesita repintar un componente
 Automático al cambiar algo de un componente normal (JTable, JButton, etc).
 Debe invocarse si hay cambios en los datos a dibujar (Canvas y similares).
 Avisa a la JVM que el componente necesita repintado. El método en sí mismo no
borra ni dibuja nada. La máquina virtual encola dicha petición en su cola de
eventos de pantalla, junto a eventos de teclado y ratón. Cuando llegue el
momento, se comienza el redibujado en un hilo distinto, el hilo de awt.
 update(Graphics g)
 Llamado cuando la JVM decide repintar el componente. Por defecto, borra el
componente por completo, rellenándolo con un rectángulo del tamaño de
componente y del color de fondo. Después, se llama a paint(Graphics g).
 paint(Grahics g)
 Es el que realmente dibuja el componente.

Ing. César Omar Aranda 2

Ing. César Omar Aranda 1


Programación Avanzada
Universidad del Aconcagua

Estrategias de pintado
 Redefinir paint()
 Es simple pero, en general, produce parpadeo.

 Redefinir paint() y update()


 update (Graphics g) no borra nada y, directamente, llama a paint(Graphics
g),
 paint() debe rellenar todos los pixels del componente gráfico.

 Usar Doble Buffering


 Se dibuja en un objeto BufferedImage auxiliar,
 Se envía (dibuja) dicho objeto terminado al componente dado.
 En los Swing ya está implementado, basta con llamar con argumento
verdadero al método unJComponent.setDoubleBuffered(true)
 Hay que evaluar el uso o no esta técnica en base al rendimiento particular
Ing. César Omar Aranda 3

DobleBuffering

Ing. César Omar Aranda 4

Ing. César Omar Aranda 2


Programación Avanzada
Universidad del Aconcagua

Ejemplo 1 de DobleBuffering

Necesario porque el
objeto usado no
pertenece a los
JComponent

Ing. César Omar Aranda 5

Ejemplo 2 de DobleBuffering

En objetos que
pertenecen al tipo
JComponent debe
activarse el uso del
Doble Buffer

Ing. César Omar Aranda 6

Ing. César Omar Aranda 3


Programación Avanzada
Universidad del Aconcagua

Colisión: datos para la detección

Ing. César Omar Aranda 7

Ejemplo de Detección de Colisión

Es simple, el inconveniente
surge con objetos de contorno
no rectangular (como en la
figura inferior)

Ing. César Omar Aranda 8

Ing. César Omar Aranda 4


Programación Avanzada
Universidad del Aconcagua

Renderizado en función del estado

Ing. César Omar Aranda 9

Gestión de Eventos de Teclado

Ing. César Omar Aranda 10

Ing. César Omar Aranda 5


Programación Avanzada
Universidad del Aconcagua

Comprendiendo a Iterator

 Este Patrón provee un mecanismo estándar, a través de


una interface, para acceder secuencialmente a los
elementos (objetos) de una colección

 Una clase accede a la colección a través de dicha


interface.

 Provoca una abstracción de cada tipo de colección (trees,


binary trees, arrays, ring buffers, hashes, hash maps,
array lists, sets, etc.)

Ing. César Omar Aranda 11

Problema y Solución
 Problema
 Se necesita de una interfaz uniforme para recorrer distintos tipos
de estructuras de agregación, con diversas formas de recorrer
los objetos incluidos sin exponer su estructura.
 Solución

Ing. César Omar Aranda 12

Ing. César Omar Aranda 6


Programación Avanzada
Universidad del Aconcagua

Ejemplo de Implementación

Ing. César Omar Aranda 13

Juego con Iteradores Estándar

Ing. César Omar Aranda 14

Ing. César Omar Aranda 7


Programación Avanzada
Universidad del Aconcagua

Bibliografía
 Principal
 DEITEL, F. y DEITEL, H. (2008). Cómo programar en Java. 7ma edición. Capítulo 12.
México: Prentice Hall. Pearson Education.
 KNUDSEN, J. (1999). Java 2D Graphics. EEUU: O’Reilly y asociados.
 KLAWONN, F. (2008). Introduction to Computer Graphics, using Java 2D and 3D. Inglaterra:
Ed. Springler-Verlag.
 Referencias Complementarias
 http://razonartificial.com/programar-videojuegos/
 http://www.cursodesarrollovideojuegos.com/
 http://es.wikipedia.org/wiki/Iterador_(patr%C3%B3n_de_dise%C3%B1o)
 http://chimera.labs.oreilly.com/books/1234000001805/ch20.html
 http://www.jorgesanchez.net/programacion/manuales/Java.pdf
 http://personales.unican.es/corcuerp/java/Slides/GUIs_AWT_Swing.pdf
 http://www.agserrano.com/libros/j2me/[ebook]Programacion%20J2ME.pdf
 http://www.jlabstudio.com/webgl/category/programacion/webgl/

Ing. César Omar Aranda 15

Ing. César Omar Aranda 8

Vous aimerez peut-être aussi