SlideShare ist ein Scribd-Unternehmen logo
1 von 3
En esta práctica vamos a crear un Applet Java donde una pelota rebota en los límites de un recinto. Se utiliza la técnica del
doble buffer para evitar parpadeos y para asegurar que la imagen está cargada se utiliza un objeto MediaTracker.




import java.applet.*;
import java.awt.*;

public class PelotaRebote extends Applet implements Runnable{

       private static final long serialVersionUID = 1L;

       private   static   final   int   ANCHO_APPLET = 250;
       private   static   final   int   ALTO_APPLET = 310;
       private   static   final   int   T_PAUSA = 10;
       private   static   final   int   VELOCIDAD = 3;

       //---
       private static final int K = 50;
       //---

       private Thread hilo;
       private Image pelota;

       //Doble_Buffer::Evitar parpadeo
       Graphics doble_buffer;
       Image imagen_db;

       //Propiedades de la pelota

       private   int   direc_X = 1;
       private   int   direc_Y = 1;
       private   int   pelota_X, pelota_Y;
       private   int   limite_der, limite_izq, limite_inf, limite_sup;




                                                                                bitCoach::Juan Bautista Cascallar Lorenzo
public void init(){

       precarga_de_imagenes();

       //--- doble buffer ---
       imagen_db = createImage(2*K + ANCHO_APPLET, 2*K + ALTO_APPLET);
       doble_buffer = imagen_db.getGraphics();

       //valores iniciales de la pelota
       pelota_X = (2 * K + ANCHO_APPLET) / 2;
       pelota_Y = (2 * K + ALTO_APPLET) / 2;
       limite_izq = K; //pared izquierda
       limite_der = ANCHO_APPLET + K - pelota.getWidth(this);
       limite_sup = K;
       limite_inf = ALTO_APPLET + K - pelota.getHeight(this);

}

public void precarga_de_imagenes(){
       pelota = getImage(getCodeBase(), "pelota.gif");
       //--- Utilizamos el tracker para asegurar que se carga la imagen (precarga) ---
       MediaTracker tracker = new MediaTracker(this);
       tracker.addImage(pelota, 0);
       try{
               tracker.waitForAll();
       }catch(InterruptedException e){}
}


public void start(){
       hilo = new Thread(this);
       hilo.start();
}

public void run(){
       while(true){
               actualizar_datos();
               repaint();//Llama a update()
               try{
                      Thread.sleep(T_PAUSA);
               }catch(Exception e){};
       }
}

public void actualizar_datos(){

       //Rebotes de la pelota con las paredes
       boolean reb_x = (pelota_X <= limite_izq) || (pelota_X >= limite_der);
       boolean reb_y = (pelota_Y >= limite_inf) || (pelota_Y <= limite_sup);

       //Si rebota en las paredes izq o der cambia la dirección del movimiento en el eje X.
       if(reb_x){ direc_X = -direc_X; }

       //Si rebota en las paredes inf o sup cambia la dirección del movimiento en el eje Y.
       if(reb_y){ direc_Y = -direc_Y; }

       //actualiza la posición de la pelota
       pelota_X = pelota_X + (VELOCIDAD * direc_X);
       pelota_Y = pelota_Y + (VELOCIDAD * direc_Y);
}

public void update(Graphics g){
       paint(g);
}




                                                                   bitCoach::Juan Bautista Cascallar Lorenzo
public void paint(Graphics g){

              // --- Relleno de Fondo del Applet ---

              doble_buffer.setColor(Color.GRAY);
              doble_buffer.fillRect(K - 5, K -5, ANCHO_APPLET + 10, ALTO_APPLET + K + 5);
              doble_buffer.setColor(Color.WHITE);
              doble_buffer.drawString("Java Applet::Pelota Rebotona", K, ALTO_APPLET + K + 15);
              doble_buffer.drawString("bitCoach::Juan Bautista Cascallar Lorenzo", K, ALTO_APPLET + K + 30);

              //Vaciamos el doble_buffer
              doble_buffer.fillRect(K, K, ANCHO_APPLET , ALTO_APPLET);

              //pintamos la pelota
              doble_buffer.drawImage(pelota,pelota_X,pelota_Y,this);

              //Volcamos todo los pintado en segundo plano al objeto Graphics del Applet
              g.drawImage(imagen_db, 0, 0, this);

       }

       public void stop(){
              if(hilo != null){
                      hilo = null;
              }
       }
}//FIN CLASE




                                                                         bitCoach::Juan Bautista Cascallar Lorenzo

Weitere ähnliche Inhalte

Was ist angesagt? (9)

Backup de db2 en entorno windows
Backup de db2 en entorno windowsBackup de db2 en entorno windows
Backup de db2 en entorno windows
 
openFrameworks 007 - GL
openFrameworks 007 - GL openFrameworks 007 - GL
openFrameworks 007 - GL
 
File handling in c
File handling in c File handling in c
File handling in c
 
Computer lab assistant kpi
Computer lab assistant kpiComputer lab assistant kpi
Computer lab assistant kpi
 
How to change wi fi password
How to change wi fi passwordHow to change wi fi password
How to change wi fi password
 
EXCEL - Funções Se, Procv, Cont.se e Somase
EXCEL - Funções Se, Procv, Cont.se e SomaseEXCEL - Funções Se, Procv, Cont.se e Somase
EXCEL - Funções Se, Procv, Cont.se e Somase
 
Cisco CCNA- NAT Configuration
Cisco CCNA- NAT ConfigurationCisco CCNA- NAT Configuration
Cisco CCNA- NAT Configuration
 
Manual del Programador Juego Ahorcado Educativo
Manual del Programador Juego Ahorcado EducativoManual del Programador Juego Ahorcado Educativo
Manual del Programador Juego Ahorcado Educativo
 
Clínica SGBD
Clínica SGBDClínica SGBD
Clínica SGBD
 

Ähnlich wie Java Applet:::Pelota que rebota en un recinto. (11)

Codigo ejemplo j2 me
Codigo ejemplo   j2 meCodigo ejemplo   j2 me
Codigo ejemplo j2 me
 
Parte 15
Parte 15Parte 15
Parte 15
 
Códigos
CódigosCódigos
Códigos
 
Presentacion03
Presentacion03Presentacion03
Presentacion03
 
Clase03
Clase03Clase03
Clase03
 
Presentacion03
Presentacion03Presentacion03
Presentacion03
 
Clase03
Clase03Clase03
Clase03
 
Develop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDKDevelop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDK
 
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CEJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
 
Videojuegos
VideojuegosVideojuegos
Videojuegos
 
Videojuegos
VideojuegosVideojuegos
Videojuegos
 

Mehr von jubacalo

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
jubacalo
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
jubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
jubacalo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
jubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
jubacalo
 
Escenarios
EscenariosEscenarios
Escenarios
jubacalo
 
Matrices02
Matrices02Matrices02
Matrices02
jubacalo
 

Mehr von jubacalo (20)

jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Escenarios
EscenariosEscenarios
Escenarios
 
Matrices02
Matrices02Matrices02
Matrices02
 
Gráficos
GráficosGráficos
Gráficos
 

Kürzlich hochgeladen

PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
MiNeyi1
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
MiNeyi1
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Francisco158360
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Kürzlich hochgeladen (20)

Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 

Java Applet:::Pelota que rebota en un recinto.

  • 1. En esta práctica vamos a crear un Applet Java donde una pelota rebota en los límites de un recinto. Se utiliza la técnica del doble buffer para evitar parpadeos y para asegurar que la imagen está cargada se utiliza un objeto MediaTracker. import java.applet.*; import java.awt.*; public class PelotaRebote extends Applet implements Runnable{ private static final long serialVersionUID = 1L; private static final int ANCHO_APPLET = 250; private static final int ALTO_APPLET = 310; private static final int T_PAUSA = 10; private static final int VELOCIDAD = 3; //--- private static final int K = 50; //--- private Thread hilo; private Image pelota; //Doble_Buffer::Evitar parpadeo Graphics doble_buffer; Image imagen_db; //Propiedades de la pelota private int direc_X = 1; private int direc_Y = 1; private int pelota_X, pelota_Y; private int limite_der, limite_izq, limite_inf, limite_sup; bitCoach::Juan Bautista Cascallar Lorenzo
  • 2. public void init(){ precarga_de_imagenes(); //--- doble buffer --- imagen_db = createImage(2*K + ANCHO_APPLET, 2*K + ALTO_APPLET); doble_buffer = imagen_db.getGraphics(); //valores iniciales de la pelota pelota_X = (2 * K + ANCHO_APPLET) / 2; pelota_Y = (2 * K + ALTO_APPLET) / 2; limite_izq = K; //pared izquierda limite_der = ANCHO_APPLET + K - pelota.getWidth(this); limite_sup = K; limite_inf = ALTO_APPLET + K - pelota.getHeight(this); } public void precarga_de_imagenes(){ pelota = getImage(getCodeBase(), "pelota.gif"); //--- Utilizamos el tracker para asegurar que se carga la imagen (precarga) --- MediaTracker tracker = new MediaTracker(this); tracker.addImage(pelota, 0); try{ tracker.waitForAll(); }catch(InterruptedException e){} } public void start(){ hilo = new Thread(this); hilo.start(); } public void run(){ while(true){ actualizar_datos(); repaint();//Llama a update() try{ Thread.sleep(T_PAUSA); }catch(Exception e){}; } } public void actualizar_datos(){ //Rebotes de la pelota con las paredes boolean reb_x = (pelota_X <= limite_izq) || (pelota_X >= limite_der); boolean reb_y = (pelota_Y >= limite_inf) || (pelota_Y <= limite_sup); //Si rebota en las paredes izq o der cambia la dirección del movimiento en el eje X. if(reb_x){ direc_X = -direc_X; } //Si rebota en las paredes inf o sup cambia la dirección del movimiento en el eje Y. if(reb_y){ direc_Y = -direc_Y; } //actualiza la posición de la pelota pelota_X = pelota_X + (VELOCIDAD * direc_X); pelota_Y = pelota_Y + (VELOCIDAD * direc_Y); } public void update(Graphics g){ paint(g); } bitCoach::Juan Bautista Cascallar Lorenzo
  • 3. public void paint(Graphics g){ // --- Relleno de Fondo del Applet --- doble_buffer.setColor(Color.GRAY); doble_buffer.fillRect(K - 5, K -5, ANCHO_APPLET + 10, ALTO_APPLET + K + 5); doble_buffer.setColor(Color.WHITE); doble_buffer.drawString("Java Applet::Pelota Rebotona", K, ALTO_APPLET + K + 15); doble_buffer.drawString("bitCoach::Juan Bautista Cascallar Lorenzo", K, ALTO_APPLET + K + 30); //Vaciamos el doble_buffer doble_buffer.fillRect(K, K, ANCHO_APPLET , ALTO_APPLET); //pintamos la pelota doble_buffer.drawImage(pelota,pelota_X,pelota_Y,this); //Volcamos todo los pintado en segundo plano al objeto Graphics del Applet g.drawImage(imagen_db, 0, 0, this); } public void stop(){ if(hilo != null){ hilo = null; } } }//FIN CLASE bitCoach::Juan Bautista Cascallar Lorenzo