0% encontró este documento útil (0 votos)
146 vistas3 páginas

Pacman en Java: Animación y Control

El documento describe una clase Animacion en Java que dibuja un círculo amarillo que se mueve en la pantalla en respuesta a las teclas de flecha. La clase establece el tamaño de la ventana, la posición y velocidad iniciales del círculo, y agrega un KeyListener para detectar pulsaciones de tecla y actualizar la dirección del movimiento. El método movimiento calcula la nueva posición en cada iteración del bucle principal teniendo en cuenta los límites de la pantalla, y el método dibuja actualiza la representación gráfica

Cargado por

Iskandarina
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
146 vistas3 páginas

Pacman en Java: Animación y Control

El documento describe una clase Animacion en Java que dibuja un círculo amarillo que se mueve en la pantalla en respuesta a las teclas de flecha. La clase establece el tamaño de la ventana, la posición y velocidad iniciales del círculo, y agrega un KeyListener para detectar pulsaciones de tecla y actualizar la dirección del movimiento. El método movimiento calcula la nueva posición en cada iteración del bucle principal teniendo en cuenta los límites de la pantalla, y el método dibuja actualiza la representación gráfica

Cargado por

Iskandarina
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

package main;

import [Link];
import [Link].*;
import [Link].*;
import [Link].*;

public class Animacion extends JComponent{

private final static int ANCHO = 768;

private final static int ALTO = 384;

private final static int DIAMETRO = 40;

private float x, y;

private float vx, vy;

private boolean arriba, abajo, izquierda, derecha;

public Animacion() {

setPreferredSize(new Dimension(ANCHO, ALTO));


x = 10;
y = 20;
addKeyListener(new KeyAdapter() {
//Tecla pulsada, el Pacman se mueve
public void keyPressed(KeyEvent e) {
actualizar([Link](), true);
}
//El Pacman no se mueve
public void keyReleased(KeyEvent e) {
actualizar([Link](), false);
}

private void actualizar(int keyCode, boolean pressed) {


//Define el movimiento del Pacman en función de la tecla pulsada
switch (keyCode) {
case KeyEvent.VK_UP:
arriba = pressed;
break;

case KeyEvent.VK_DOWN:
abajo = pressed;
break;

case KeyEvent.VK_LEFT:
izquierda = pressed;
break;

case KeyEvent.VK_RIGHT:
derecha = pressed;
break;
}
}
});
setFocusable(true);
}

private float limite(float valor, float min, float max) {

if (valor > max)


return max;
if (valor < min)
return min;
return valor;
}

private void movimiento(float dt) {


vx = 0;
vy = 0;
if (arriba)
vy = -300;
if (abajo)
vy = 300;
if (izquierda)
vx = -300;
if (derecha)
vx = 300;
x = limite(x + vx * dt, 0, ANCHO - DIAMETRO);
y = limite(y + vy * dt, 0, ALTO - DIAMETRO);
}

public void paint(Graphics g) {


[Link]([Link]);
[Link](0, 0, ANCHO, ALTO);
[Link]([Link]);
[Link]([Link](x), [Link](y), DIAMETRO, DIAMETRO);
}

private void dibuja() throws Exception {


[Link](new Runnable() {
public void run() {
paintImmediately(0, 0, ANCHO, ALTO);
}
});
}

public void cicloPrincipalJuego() throws Exception {


long tiempoViejo = [Link]();
while (true) {
long tiempoNuevo = [Link]();
float dt = (tiempoNuevo - tiempoViejo) / 1000000000f;
tiempoViejo = tiempoNuevo;
movimiento(dt);
dibuja();
}
}

También podría gustarte