
Aqui desarrolle un videojueguito de mario con java sin librerias externas. Fue un gran ejercicio de programacion, ya que use varias tecnicas de programacion: como POO, hilos, eventos,etc. Más abajo procedo a explicar mas detalladamente cada tecnica empleada.
En POO use la modularizacion. Cada personaje del juego tiene su propia clase. Existe una Clase abstracta llamada "Enemigo", la cual posee un metodo abstracto en el que se describe el movimiento del enemigo, que es diferente para cada enemigo, de ahi se sigue que cada clase que herede de la clase enemigo tenga que implementar dicho metodo abstracto. En consecuencia, cada openente de Mario debe heredar de la clase "Enemigo".
Use un hilo para que fuera pintando cada cuarenta milisegundos la escena y ademas fuera verificando si se habia producido una colision entre Mario y los enemigos.
Use eventos para poder mover al Mario, en este caso, como use java, utilice la interfaz KeyListener. Cuando se presionan las teclas de las flechas derecha e izquierda el Mario se mueve, cuando presiono la tecla control este salta. Inmediatamente abajo se encuentra un link a un video donde se muestra el videojueguito.
En este programa se muestran dos videos simultaneamente en un JFrame de Java Swing. A continuacion procedo a explicar a detalle. Primero tuve que obtener los fotogramas del video, que no son mas que imagenes. Ejemplo: si un video corre a 60 FPS (frames per second) significa que el video muestra 60 fotogramas por segundos.
Una vez que consegui los fotogramas del video (los obtube de una pagina web que convertia videos en fotogramas online) procedi a guardarlos en un BufferedImage. Con esta clase uno puede manipular cada pixel de una imagen. Entonces hice que cada pixel de la imagen de cada video contribuyera con un 50% de su color para contruir otro nuevo pixel seria la imagen resultante con un 50% de cada una.
Despues solo tuve que mostrar las imagenes combinadas en un JPanel cada cierta cantidad de milisegundos para crear el efecto de animacion de un video.
En este programa cree tres botones, cada uno con una figura de las que parecen en el Paint de Windows. Use drawOval para dibujar elipses, DdrawRect para los rectangulos, y drawLine para las lineas. Use los dos eventos de raton de java. Los dados en las interfaces MouseMotionListener y MouseListener, ya que necesite de mouseDragged para arrastrar la figura y esta se fuera mostrando al momento de ir arrastrando el mouse utilice los metodos de MouseListener.
En este programa use el evento de raton de java para obtener la posicion del puntero del raton y con eso poder redimensionar la imagen contenida en un JPanel. Inmediatamente abajo hay un link a un video donde muestro el resultado del programa.
Suelo participar en concursos de programacion competitiva, pero no estoy bien ranqueado. El video al que lleva el link que esta abajo, es muy explicativo. Aunque tuvo más de matematica que de algoritmos el ejercicio.
Por ultimo queria agradecer a quien siempre me ayuda: Dios todopoderoso.