Como Crear un Juego 2D con Java – La Base 01

Como Crear un Juego 2D con Java – La Base 01

Buen Dia a Todos! Ya casi es año nuevo y como propositos que surgen en estos dias nosotros tambien nos pondremos algunos 😉 si bien no del tipo Normales, como Hacer Ejercicio, Conseguir Pareja, Viajar o dejar el cigarro o Alcohol 😛 , si nos pondremos propositos mas acorde a nuestra tematica 😀 uno de ellos sera Aprender/Mejorar nuestras habilidades de programacion para crear Juegos 😀 comenzaremos por el Lenguaje Java y sera en 2d ( despues nos pasaremos al 3D ) seran una serie de tutoriales que nos enseñaran lo basico para dejar correr nuestra imaginacion, en este primer Tutorial veremos la base que nos servira para desarrollar cualquier juego, el resultado no sera para nada un juego pero como te digo sera la base que te servira mas que cualquier juego que podramos dearrollar 😉 en los siguientes Tutoriales ya habra tiempo para desarrollar juegos sencillos y no tan sencillos 😀

Antes de ..

La verdad no creo necesaria esta seccion del Articulo 😛 creo que todos los que han programado alguna vez se les ha pasado por la cabeza mas de una vez programar un Juego de Video y despues jugarlo 😀 Aunque no es una tarea sencilla y muchos lo dejamos a mitad del camino es algo que vale la pena realizar y terminar.

Recientemente escribi un Articulo sobre algunas ideas para proyectos de Programacion y una idea hablaba sobre desarrollar un juego y dije, seria bueno escribir luego algo de desarrollo de juegos 😀 , pero ahora llegando a mi casa un amigo me manda un enlace de un video en el que un programador de videojuegos le pide matrimonio a su novia mediante un Juego ( desarrollado por el claro 😉 ) y la verdad es que me convencio aun mas de comenzar esta serie de Tutoriales 😀

Antes de comenzar debes saber que el desarrollo de un juego es algo completamente complejo y tardado( dependiendo de tus objetivos finales claro ) debes saber que no te tomara un dia y que no se vera como Assassin’s Creed® 🙁 Estos juegos comerciales que vez y juegas tardan meses en desarrollarse y el equipo de trabajo esta compuesto por varios de programadores, creativos, Escritores, Diseñadores, de Musica, etc.. en fin, en resumen no quiero desanimarte pero debes estar enterado que tardaras semanas en terminar un juego decente, pero te aseguro que te sentiras completamente feliz con tu trabajo 😉

Si despues de leerte esto sigues Interesado, Mucha Suerte y Animo para Aprender! veras que valdra la pena.


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy

El Codigo Base

Como dijimos en la introduccion de este Articulo utilizaremos el lenguaje de Programacion Java, si bien pudimos haber escogido otro lenguaje como C++ u otro, me decante por Java porque actualmente con los recursos de las maquinas actuales ya no marca una gran diferencia si utilizas uno u otro, tambien de notar lo que ha crecido Java en los ultimos años ( ademas Java es mi Fuerte 😉 ). En Fin, veremos como crear un juego 2D con Java y mas adelante si todo sale bien nos pasaremos a 3D 😉

Vamos a crearnos un proyecto de Ejemplo para que veas la estructura basica de como crear un Juego 2D con Java, se vera asi:

Como Crear un Juego 2D con Java 1
La Clase Main


public class Main extends JFrame{
    public Main(){
        //TITULO
        setTitle("Como Crear un Juego 2D con Java - La base 01");
        //CERRAR AL CLICKEAR EN LA CRUZ
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //TAMAÑO DE VENTANA
        setSize(500,500);
        //LOCACION DE LA VENTANA ( CENTRO )
        setLocationRelativeTo(null);
        //NO SE REDIMENSIONE LA VENTANA
        setResizable(false);
        
        //AGREGAMOS A LA VENTANA UN NUEVO OBJETO QUE ES UNA CLASE LLAMADA TABLERO
        //QUE HEREDA DE LA CLASE JPANEL DE SWING Y QUE ES DONDE SE DIBUJARA
        //NUESTRO JUEGO
        add(new Tablero());
        
        //HACEMOS VISIBLE NUESTRA VENTANA
        setVisible(true);
    }
    
    //METODO PRINCIPAL - SERA BUSCADO AL EJECUTAR UN PROGRAMA EN JAVA
    public static void main(String args[]){
        new Main();
    }
}

En esta Clase simplemente almacena el metodo Principal de nuestro proyecto ( main ) en el que establecemos algunas configuraciones basicas, aqui se hace referencia a la clase TABLERO que es un objeto JPANEL y es la superficie de nuestro juego donde dibujaremos nuestro juego 2d.

La Clase Tablero
La Base o cascaron de la clase Tablero, necesaria para cualquier juego que haremos, es la siguiente..


public class Tablero extends JPanel implements Runnable{
    private Thread hilo;
    private int x,y;
    
    /* CONSTRUCTOR DEL PANEL EN EL QUE SE ESTABLECEN ALGUNAS
    CONFIGURACION COMO EL COLOR DE FONDO, DOBLE BUFFER,
    INICIALIZACION DE IMAGENES, X,Y */
    public Tablero(){
        setBackground(Color.WHITE);
        setDoubleBuffered(true);
        //INICIALIZACIONES
    }
    
    /* ESTE METODO SE LLAMA AUTOMATICAMENTE AL AGREGAR EL PANEL
    A LA VENTANA */
    @Override
    public void addNotify(){
        super.addNotify();
        //CREAMOS UN NUEVO HILO Y LO INICIAMOS
        hilo = new Thread(this);
        hilo.start();
    }
    
    /* METODO QUE SE ENCARGA DE PINTAR EN EL PANEL */
    @Override
    public void paint(Graphics g){
        super.paint(g);
        //CREAMOS UN LIENZO 2D CON EL LIENZO POR DEFECTO
        Graphics2D g2 = (Graphics2D)g;
        //DIBUJAMOS
        //LIBERAMOS LIENZO
        g.dispose();
    }
    
    /* METODO DONDE SE ACTUALIZAN LAS COORDENADAS PARA LAS
    POSICIONES DE LAS IMAGNES */
    public void ciclo(){
        x += 1;
        y += 1;
    }

    /* METODO DEFINIDO DE LA INTERFAZ RUNNABLE, AQUI IRA EL CICLO
    PRINCIPAL DEL JUEGO, SE CALCULAN LAS POSICIONES, SE MANDA REPINTAR,
    SE ESTABLECE UN TIEMPO DE ESPERA RAZONABLE ENTRE (FRAMERATE) */
    @Override
    public void run() {
        while(true){
            ciclo();
            repaint();
            try{
                Thread.sleep(sleep);
            }catch(InterruptedException err){
                System.out.println(err);
            }
        }
    }
}

Ejemplo Burdo

Para no irnos sin realizar algun ejemplo sencillo y no desanimarnos vamos a crear un programa ( aun no se le puede llamar Juego 😉 ) que cargue 2 imagenes, una para el fondo del juego y otra para el personaje, una de la cual se desplazara de izquierda a derecha de la pantalla y volvera a aparecer de nuevo en la izquierda. Necesitaremos 2 imagenes, el codigo de la clase main es el mismo que el de la base pero el codigo de la clase Tablero cambiara un poco.

Actualizacion: He cambiado la forma de leer las imágenes por la que vez actualmente, estas imágenes deben ir dentro de una carpeta o paquete llamado img al lado del paquete llamado proceso.


public class Tablero extends JPanel implements Runnable{
    private Image background;
    private Image angrybird;
    private Thread hilo;
    private int x,y;
    private final int DELAY=5;
    
    public Tablero(){
        setBackground(Color.WHITE);
        setDoubleBuffered(true);
        background = new ImageIcon(this.getClass().getResource("/img/background.jpg")).getImage();
        angrybird = new ImageIcon(this.getClass().getResource("/img/angrybird.png")).getImage();
        x=70;
        y=200;
    }
    
    @Override
    public void addNotify(){
        super.addNotify();
        hilo = new Thread(this);
        hilo.start();
    }
    
    @Override
    public void paint(Graphics g){
        super.paint(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.drawImage(background, 0,0, null);
        g2.drawImage(angrybird,x,y, null);
        Toolkit.getDefaultToolkit().sync();
        g.dispose();
    }
    
    public void ciclo(){
        x += 1;
        if ( x > (500+70) ){
            x = -70;
        }
    }
    
    @Override
    public void run() {
        while(true){
            ciclo();
            repaint();
            try{
                Thread.sleep(DELAY);
            }catch(InterruptedException err){
                System.out.println(err);
            }
        }
    }
}

Resultado

Como Crear un Juego 2D con Java 2
 

Descargar Proyecto Completo

Te quedaste con Ganas? Puedes ir decidiendo de que ira tu juego 😉

Como Crear un Juego 2D con Java – La base 01

Clic para valorar esta información
[Total: 1 Promedio: 4]