Your SlideShare is downloading. ×
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 ...
public void init(){       precarga_de_imagenes();       //--- doble buffer ---       imagen_db = createImage(2*K + ANCHO_A...
public void paint(Graphics g){              // --- Relleno de Fondo del Applet ---              doble_buffer.setColor(Colo...
Upcoming SlideShare
Loading in...5
×

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

5,902

Published on

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,902
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Java Applet:::Pelota que rebota en un recinto."

  1. 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 deldoble 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. 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. 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

×