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

jubacalo
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

Recomendados

Manual as-400 (1) por
Manual as-400 (1)Manual as-400 (1)
Manual as-400 (1)Oliver Bueno
1.2K vistas23 diapositivas
Ejercicios resueltos de punteros 12a15 por
Ejercicios resueltos de punteros 12a15Ejercicios resueltos de punteros 12a15
Ejercicios resueltos de punteros 12a15rasave
3.3K vistas2 diapositivas
Stack and Queue por
Stack and QueueStack and Queue
Stack and QueueSelvaraj Seerangan
201 vistas152 diapositivas
Filtros en excel por
Filtros en excelFiltros en excel
Filtros en excelGeorgherly Mena Flores
1.7K vistas14 diapositivas
TRIGGERS O DISPARADORES por
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESLisbeth Ocaña Bueno
3.6K vistas16 diapositivas
Group by, having, order by, SQL por
Group by, having, order by, SQLGroup by, having, order by, SQL
Group by, having, order by, SQLNicolas Klocker Hechenleitner
20.8K vistas2 diapositivas

Más contenido relacionado

La actualidad más candente

Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers) por
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Universidad Nacional de Piura
12.5K vistas19 diapositivas
ESTRUCTURAS ANIDADAS por
ESTRUCTURAS ANIDADASESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADASCarlos Gabriel Tipula Yanapa
16.3K vistas26 diapositivas
Listas Enlazadas por
Listas EnlazadasListas Enlazadas
Listas EnlazadasVane Borjas
12.9K vistas14 diapositivas
Estructura de decision simple por
Estructura de decision simpleEstructura de decision simple
Estructura de decision simplechicas picasa
17.7K vistas4 diapositivas
Puertos de comunicación de una computadora por
Puertos de comunicación de una computadoraPuertos de comunicación de una computadora
Puertos de comunicación de una computadoraALTO VOLTAJE (Tco. Lino Naranjo)
2.1K vistas44 diapositivas
Algoritmo de listas simples completo por
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completoBoris Salleg
20.2K vistas7 diapositivas

La actualidad más candente(20)

Listas Enlazadas por Vane Borjas
Listas EnlazadasListas Enlazadas
Listas Enlazadas
Vane Borjas12.9K vistas
Estructura de decision simple por chicas picasa
Estructura de decision simpleEstructura de decision simple
Estructura de decision simple
chicas picasa17.7K vistas
Algoritmo de listas simples completo por Boris Salleg
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completo
Boris Salleg20.2K vistas
Diseño de pantallas en as400 por Carlos
Diseño de pantallas en as400Diseño de pantallas en as400
Diseño de pantallas en as400
Carlos 9.8K vistas
Java pilas (Stacks) y colas (Queues) por Juan Astudillo
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
Juan Astudillo119K vistas
Configuracion y direccionamiento del router por yoes1053
Configuracion y direccionamiento del routerConfiguracion y direccionamiento del router
Configuracion y direccionamiento del router
yoes105323.9K vistas
Infix-Postfix expression conversion por Rashmiranja625
Infix-Postfix expression conversionInfix-Postfix expression conversion
Infix-Postfix expression conversion
Rashmiranja6253.2K vistas
Mesics lecture 6 control statement = if -else if__else por eShikshak
Mesics lecture 6   control statement = if -else if__elseMesics lecture 6   control statement = if -else if__else
Mesics lecture 6 control statement = if -else if__else
eShikshak4.4K vistas
PLSQL Cursors por spin_naresh
PLSQL CursorsPLSQL Cursors
PLSQL Cursors
spin_naresh9.7K vistas
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación. por Isabel Gómez
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Isabel Gómez4.1K vistas
Guardar imagen en base de datos mysql blob IDE NETBEANS por Jomar Burgos Palacios
Guardar imagen en base de datos mysql blob IDE NETBEANSGuardar imagen en base de datos mysql blob IDE NETBEANS
Guardar imagen en base de datos mysql blob IDE NETBEANS
Jomar Burgos Palacios5.6K vistas
Functions oracle (pl/sql) por harman kaur
Functions oracle (pl/sql)Functions oracle (pl/sql)
Functions oracle (pl/sql)
harman kaur3.9K vistas
Proc report por eagebhart
Proc reportProc report
Proc report
eagebhart2.4K vistas

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

Codigo ejemplo j2 me por
Codigo ejemplo   j2 meCodigo ejemplo   j2 me
Codigo ejemplo j2 meOscar Eduardo
856 vistas14 diapositivas
Parte 15 por
Parte 15Parte 15
Parte 15Erika Ar Vel
256 vistas18 diapositivas
Códigos por
CódigosCódigos
CódigosKmilitha Estrada
279 vistas5 diapositivas
Clase03 por
Clase03Clase03
Clase03Titiushko Jazz
34 vistas26 diapositivas
Presentacion03 por
Presentacion03Presentacion03
Presentacion03Titiushko Jazz
81 vistas26 diapositivas
Clase03 por
Clase03Clase03
Clase03Titiushko Jazz
24 vistas26 diapositivas

Similar a Java Applet:::Pelota que rebota en un recinto.(11)

Más de jubacalo

jQuery Mobile :: Cuadros de diálogo por
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
2.6K vistas4 diapositivas
jQuery Mobile :: Enlaces a páginas internas. por
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jubacalo
2.2K vistas6 diapositivas
MIT App Inventor2 Pintar en Imagen por
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
3.7K vistas3 diapositivas
Cronómetro con MIT App Inventor 2 por
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2jubacalo
20.3K vistas4 diapositivas
App Android MiniBanco por
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
1.7K vistas5 diapositivas
Configurar entorno Android por
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
2K vistas14 diapositivas

Más de jubacalo(20)

jQuery Mobile :: Cuadros de diálogo por jubacalo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
jubacalo2.6K vistas
jQuery Mobile :: Enlaces a páginas internas. por jubacalo
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
jubacalo2.2K vistas
MIT App Inventor2 Pintar en Imagen por jubacalo
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
jubacalo3.7K vistas
Cronómetro con MIT App Inventor 2 por jubacalo
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
jubacalo20.3K vistas
App Android MiniBanco por jubacalo
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
jubacalo1.7K vistas
Configurar entorno Android por jubacalo
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
jubacalo2K vistas
Acceso a BBDD mediante un servlet por jubacalo
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
jubacalo2.4K vistas
Find File Servlet DB por jubacalo
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
jubacalo1.2K vistas
Acciones JSP por jubacalo
Acciones JSPAcciones JSP
Acciones JSP
jubacalo1.9K vistas
Servlets que manejan datos de formularios HTML por jubacalo
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
jubacalo23.9K vistas
Jsp directiva page por jubacalo
Jsp directiva pageJsp directiva page
Jsp directiva page
jubacalo3K vistas
Elementos de script en JSP por jubacalo
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
jubacalo3.7K vistas
Proyecto JSP por jubacalo
Proyecto JSPProyecto JSP
Proyecto JSP
jubacalo4.5K vistas
Explicación del código del Servlet HolaMundo por jubacalo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
jubacalo2K vistas
Servlet Hola Mundo con Eclipse y Tomcat por jubacalo
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
jubacalo26.4K vistas
Crear Base de Datos en Oracle por jubacalo
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
jubacalo40.8K vistas
Web de noticias en Ajax por jubacalo
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
jubacalo933 vistas
Escenarios por jubacalo
EscenariosEscenarios
Escenarios
jubacalo4.6K vistas
Matrices02 por jubacalo
Matrices02Matrices02
Matrices02
jubacalo708 vistas
Gráficos por jubacalo
GráficosGráficos
Gráficos
jubacalo764 vistas

Último

Semana1-CD-del 21 al 24 de noviembre-2023.pptx por
Semana1-CD-del 21 al 24 de noviembre-2023.pptxSemana1-CD-del 21 al 24 de noviembre-2023.pptx
Semana1-CD-del 21 al 24 de noviembre-2023.pptxLorenaCovarrubias12
42 vistas8 diapositivas
EXPERIENCIA DE APRENDIZAJE NAVIDAD.pdf por
EXPERIENCIA DE APRENDIZAJE NAVIDAD.pdfEXPERIENCIA DE APRENDIZAJE NAVIDAD.pdf
EXPERIENCIA DE APRENDIZAJE NAVIDAD.pdfNircidaIsabelValleAd
286 vistas26 diapositivas
Meta 1.1 Identificar el contenido històrico de la Lengua de Señas. por
Meta 1.1 Identificar el contenido històrico de la Lengua de Señas.Meta 1.1 Identificar el contenido històrico de la Lengua de Señas.
Meta 1.1 Identificar el contenido històrico de la Lengua de Señas.IvanLechuga
39 vistas13 diapositivas
Inteligencia Artificial en las aulas por
Inteligencia Artificial en las aulasInteligencia Artificial en las aulas
Inteligencia Artificial en las aulasLorena Fernández
124 vistas21 diapositivas
Ficha sesión discapacidad visual.doc por
Ficha sesión discapacidad visual.docFicha sesión discapacidad visual.doc
Ficha sesión discapacidad visual.docricardo2010colegio
77 vistas2 diapositivas
DEPORTES DE RAQUETA .pdf por
DEPORTES DE RAQUETA .pdfDEPORTES DE RAQUETA .pdf
DEPORTES DE RAQUETA .pdfMiguel Lopez Marin
29 vistas11 diapositivas

Último(20)

Meta 1.1 Identificar el contenido històrico de la Lengua de Señas. por IvanLechuga
Meta 1.1 Identificar el contenido històrico de la Lengua de Señas.Meta 1.1 Identificar el contenido històrico de la Lengua de Señas.
Meta 1.1 Identificar el contenido històrico de la Lengua de Señas.
IvanLechuga39 vistas
Semana de Gestion Escolar Final 2023 GE Ccesa007.pdf por Demetrio Ccesa Rayme
Semana de Gestion Escolar Final 2023  GE  Ccesa007.pdfSemana de Gestion Escolar Final 2023  GE  Ccesa007.pdf
Semana de Gestion Escolar Final 2023 GE Ccesa007.pdf
Intranet y extranet cuadro comparativo.pdf por UPTVT
Intranet y extranet cuadro comparativo.pdfIntranet y extranet cuadro comparativo.pdf
Intranet y extranet cuadro comparativo.pdf
UPTVT29 vistas
Perennials, Bulbs, Grasses and Ferns of Poland, Spain and Portugal.pptx por e-twinning
Perennials, Bulbs, Grasses and Ferns of Poland, Spain and Portugal.pptxPerennials, Bulbs, Grasses and Ferns of Poland, Spain and Portugal.pptx
Perennials, Bulbs, Grasses and Ferns of Poland, Spain and Portugal.pptx
e-twinning26 vistas
Muestra Anual de Literatura Clásica y Latín.pptx por María Roxana
Muestra Anual de Literatura Clásica y Latín.pptxMuestra Anual de Literatura Clásica y Latín.pptx
Muestra Anual de Literatura Clásica y Latín.pptx
María Roxana114 vistas
PPT TECNOLOGIAS PARA LA ENSEÑANZA VIRTUAL.pptx por CarlaFuentesMuoz
PPT TECNOLOGIAS PARA LA ENSEÑANZA VIRTUAL.pptxPPT TECNOLOGIAS PARA LA ENSEÑANZA VIRTUAL.pptx
PPT TECNOLOGIAS PARA LA ENSEÑANZA VIRTUAL.pptx
CarlaFuentesMuoz34 vistas
Perspectivas teóricas y modelos por darianavalera54
Perspectivas teóricas y modelos Perspectivas teóricas y modelos
Perspectivas teóricas y modelos
darianavalera5435 vistas
Concepto de determinación de necesidades.pdf por LauraJuarez87
Concepto de determinación de necesidades.pdfConcepto de determinación de necesidades.pdf
Concepto de determinación de necesidades.pdf
LauraJuarez8770 vistas

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