Resumos
Apontamentos universitários em formato Markdown do Obsidian.
Pacman con Swing
download Descarregar MDPer quanto riguarda il file Main.java:
package pacman;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
JFrame f = new JFrame("Pacman");
f.setSize(800, 800);
MainPanel p = new MainPanel();
p.setFocusable(true);
p.requestFocus();
f.add(p);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Per quanto riguarda il file MainPanel.java:
package pacman;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class MainPanel extends JPanel implements KeyListener {
private static final long serialVersionUID = 2756409379580230401L;
private Pacman p;
public MainPanel() {
p = new Pacman();
setBackground(Color.BLACK);
addKeyListener(this);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(p.img, p.x, p.y, p.dim, p.dim, null);
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT;
p.move(Pacman.LEFT);
break;
case KeyEvent.VK_RIGHT;
p.move(Pacman.RIGHT);
break;
case KeyEvent.VK_UP;
p.move(Pacman.UP);
break;
case KeyEvent.VK_DOWN;
p.move(Pacman.DOWN);
break;
default:
return;
}
repaint();
}
}
Per quanto riguarda il file Pacman.java:
package pacman;
import java.awt.Image;
import javax.imageio.ImageIO;
public class Pacman {
public static final int DOWN = 0;
public static final int LEFT = 1;
public static final int RIGHT = 2;
public static final int UP = 3;
int x;
int y;
int dim;
Image img;
private final int speed = 10;
private Image[] images = new Image[4];
public Pacman() {
x = 0;
y = 0;
dim = 40;
try {
images[DOWN] = ImageIO.read(getClass().getResourcesAsStream
("/pacman/resources/pacman_down.png"));
images[LEFT] = ImageIO.read(getClass().getResourcesAsStream
("/pacman/resources/pacman_left.png"));
images[RIGHT] = ImageIO.read(getClass().getResourcesAsStream
("/pacman/resources/pacman_right.png"));
images[UP] = ImageIO.read(getClass().getResourcesAsStream
("/pacman/resources/pacman_up.png"));
for(int i = 0; i < images.lenght; i++) {
images[i] = images[i].getScaledInstance(dim, dim, Image.SCALE_SMOOTH);
}
img = images[RIGHT];
} catch (IOException e) {
e.printStackTrace();
}
}
public void move(int direction) {
switch(direction) {
case DOWN:
y += speed;
break;
case LEFT:
x -= speed;
break;
case RIGHT:
x += speed;
break;
case UP:
y -= speed;
break;
default:
return;
}
img = images[direction];
}
}