Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Java2D / Animación básica en java2d – Pelota de Futbol

Animación básica en java2d – Pelota de Futbol

Autor jc mouse martes, diciembre 27, 2011

En este tutorial se muestran los pasos para crear una animación sencilla utilizando Java2d y el IDE Netbeans. La animación consistira en una pelota de futbol que se movera de un lado a otro de un contenedor JPanel.

¿Que necesitamos?

  • IDE netbeans 6.9 o superior
  • Conocimientos basicos sobre java (Nivel Intermedio Chapi)
  • una imagen PNG de una pelota de tamaño 50×50 pixeles
  • GANAS……………….. de aprender 🙂

Proyecto.

1. Crea un nuevo proyecto en netbeans, yo lo llame proyecto «jcbola» 🙂 , continuemos. Añade una clase JFrame, llamala «interfaz.java», añade tambien dos clases las cuales debes llamar «pelota.java» y «panel.java».

La estructura de la interfaz comprende un objeto jmenu y dos submeus, jmenuitem1 y jmenuitem2, ademas se coloca en el jframe un JPanel, puedes ver como queda en la imagen siguiente:

Es todo por el monento en la clase interfaz, el codigo restante lo escribiremos mas adelante, ahora debemos añadir codigo al resto de las clases que creamos.

2.Continuamos con la clase pelota.java, esta clase, como su nombre lo indica, es la pelota de futbol en si, utiliza una imagen PNG de una pelota de futbol de dimensiones 50×50 pixeles, esta imagen se encuentra en el mismo paquete que las demas clases. El resto del código tanto los metodos y variables, esta en un espanglish que creo que esta perfectamente entendible

Clase pelota.java

package jcbola;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.ImageIcon;

/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class pelota {

    private Image balon;
    //Coordenadas de la pelota
    private int X;
    private int Y;

    private int velocidad_X;
    private int velocidad_Y;

    private int limite_izquierda=0;
    private int limite_derecha;
    private int limite_superior=0;
    private int limite_inferior;

     public pelota(int x, int y) {
        //coordenadas iniciales
        this.X = x; this.Y = y;
        //imagen de la pelota
        balon = new ImageIcon(getClass().getResource("pelota.png")).getImage();
    }

    //dado las dimensiones del contendor JPanel
   public void LimitesXY(int width, int height) {
        limite_derecha  = width  - balon.getWidth(null);
        limite_inferior = height - balon.getHeight(null);
    }

   //recalcula variables para dar la sensacion de movimiento
   public void move() {
        //nueva posicion
        X += velocidad_X;
        Y += velocidad_Y;
        //controla que la pelota no salga de los limites del contenedor
        if (X < this.limite_izquierda) {
            X = 0;
            velocidad_X = -velocidad_X;
        } else if (X > limite_derecha) {
            X = limite_derecha;
            velocidad_X = -velocidad_X;
        }
        if (Y < this.limite_superior) {
            Y = 0;
            velocidad_Y = -velocidad_Y;

        } else if (Y > limite_inferior) {
            Y =  limite_inferior;
            velocidad_Y = -velocidad_Y;
        }
    }

    public void setVelocidadXY(){
        velocidad_X = getNumberRandom(4);
        velocidad_Y = getNumberRandom(8);
    }

    public void dibujar(Graphics g) {
        Graphics2D g2 = (Graphics2D)g;
        g2.drawImage(balon, X, Y, null);
    }

    //devuelve un número aleatorio entre 1 y MAX
    private int getNumberRandom(int Max){
        return (int) (Math.random()*Max+1);
    }
}

3. Nos toca ahora añadir el código necesario a nuestra clase panel.java, esta clase se extiende de un JPanel y es aqui donde se realiza la animación, para lo cual hacemos uso de un TIMER, este timer nos permite pintar el movimiento de la pelota cada cierto tiempo ( 16 milisegundos). Esta clase, hace uso de la clase anterior, pelota.java.

package jcbola;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.Timer;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class panel extends JPanel{

    //instancia a la pelota en posicion (X,Y) => (0,0)
    private pelota mipelota = new pelota(0, 0);
    private Timer timer;

    //Constructor
    public panel(Dimension d) {
        this.setSize(d);
        this.setPreferredSize(d);
        this.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        this.setBackground(new Color(0,255,0));
        mipelota.LimitesXY(getWidth(), getHeight());
        //para la animación
        timer = new Timer(16, new ActionListener (){
            public void actionPerformed(ActionEvent e) {
                mipelota.move();
                repaint();
            }
        });
    }

    //Controla el inicio y fin de la animación
    public void animar(boolean turnOnOff) {
        if (turnOnOff) {
            mipelota.setVelocidadXY();
            timer.start();
        } else {
            timer.stop();
        }
    }

    //pinta la animación
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        mipelota.dibujar(g);
    }

}

4. Más dificil no podia estar, porque ya terminamos :), solo nos falta implementar estas clases en nuestra interfaz, vamos a la parte del codigo de nuestra interfaz.java, añadimos el codigo :

   //instancia a mi clase panel.java
    panel mipanel;

    /** Creates new form interfaz */
    public interfaz() {
        initComponents();
        setTitle( "Java2D Animación by Mouse" );
        setLocationRelativeTo(null);
        //se crea instancia a panel de animacion y se añade a la interfaz
        mipanel=new panel( this.jPanel1.getSize() );
        this.jPanel1.add(mipanel);
    }

   //esto para los eventos de los submenus
   private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        mipanel.animar(true);
    }

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
        mipanel.animar(false);
    }

NOTA: No copies y pegues el código, estudialo y ve donde va cada parte. Por demas esta decir de que esta interfaz debes llamarlos desde la clase main.java.

Terminamos el proyecto, compila y ejecuta el programa, te dejo tambien un video para que hagas una comparación de tu trabajo.

Enlace de descarga: http://link.jc-mouse.net/?id=J2DBALLJM9

 

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Crea un componente swing para cargar fotos en miniaturas

Crea un componente swing para cargar fotos en miniaturas

En este tutorial crearemos un componente swing para java que podremos usar en cualquiera de nuestros proyectos, el compo...

Texto e Imagen en Java2d (Proyecto)

Texto e Imagen en Java2d (Proyecto)

Nivel: Intermedio-Avanzado IDE: Netbeans 6.9 o Sup. Tiempo: 30 minutos En este tutorial crearemos una aplicación que nos...

Desarrollo de juegos con Libgdx y Android Studio

Desarrollo de juegos con Libgdx y Android Studio

De las pocas herramientas disponibles entre librerías, frameworks, engines, etc para el desarrollo de videojuegos en len...

Criba de Eratóstenes animado

Criba de Eratóstenes animado

Eratóstenes era un matemático griego del siglo  III a.C. el cual ideó una manera rápida de obtener todos los números pri...

JSCRUM .:. Gestor de Proyectos

JSCRUM .:. Gestor de Proyectos

¿Qué es SCRUM? SCRUM es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como pu...

Personalización de Componentes Swing Java I

Personalización de Componentes Swing Java I

Hace tiempo pidieron un video tutorial sobre como crear sus propios componentes swing java, lamentablemente debo decir q...

6 comentarios en “Animación básica en java2d – Pelota de Futbol”

  1. know dice:

    Amigo, gracias por subir tu código, lo aprecio mucho, en la universidad donde voy, a los profesores les vale y no nos enseñan nada.

  2. Alberto dice:

    Gracias man, vere si puedo aplicarlo con un algoritmo de inteligencia artificial

  3. jackeline dice:

    Gracias por tu aporte, muy valiosa….

  4. ramiro (maquina) dice:

    Muchas felicitaciones por el emprendimiento y gracias por el aporte que me servirá al realizar mis animaciones en Java

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Herramientas

Generador de Enlaces a Whatsapp