lunes, 23 de noviembre de 2009

bola de colores

import java.awt.*;
import javax.swing.*;
import java.awt.Event;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class demo extends JComponent{

private final static int ANCHO = 512;

private final static int ALTO = 384;

private final static int DIAMETRO = 20;

Color[] colores={Color.BLACK,Color.BLUE,Color.CYAN,Color.GRAY,Color.GREEN,Color.RED,Color.YELLOW,Color.PINK};

private float x, y;

private float vx, vy;

public demo() {
setPreferredSize(new Dimension(ANCHO, ALTO));
x = 50;
y = 70;
vx = 300;
vy = 400;
}

private void fisica(float dt) {
x += vx * dt;
y += vy * dt;
if (vx < 0 && x <= 0 || vx > 0 && x + DIAMETRO >= ANCHO)
vx = -vx;
if (vy < 0 && y < 0 || vy > 0 && y + DIAMETRO >= ALTO)
vy = -vy;
}

public void paint(Graphics g) {
g.setColor(colores[(int)(Math.random()*colores.length)]);
g.fillRect(0, 0, ANCHO, ALTO);
g.setColor(colores[(int)(Math.random()*colores.length)]);
g.fillRect(Math.round(x), Math.round(y), DIAMETRO, DIAMETRO);

}

private void dibuja() throws Exception {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
paintImmediately(0, 0, ANCHO, ALTO);
}
});
}

public void cicloPrincipalJuego() throws Exception {
long tiempoViejo = System.nanoTime();
while (true) {
long tiempoNuevo = System.nanoTime();
float dt = (tiempoNuevo - tiempoViejo) / 1000000000f;
tiempoViejo = tiempoNuevo;
fisica(dt);
dibuja();

}
}

}

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.*;


public class principal {

public static void main(String[] args) throws Exception {
JFrame jf = new JFrame("Demo1");
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
jf.setResizable(false);
demo demo1 = new demo();
jf.getContentPane().add(demo1);
jf.pack();
jf.setVisible(true);
demo1.cicloPrincipalJuego();

}
}

No hay comentarios:

Publicar un comentario