Witam
Mam problem następujący pisząc program w javie potrzebuje wyświetlić cżłowieczka poruszającego się po ekranie z tym że tło nie ma być czarne a powinno być obrazkiem po którym by sie owy ludek poruszał. W funkcji main wyświetla albo samego ludka albo samo tlo.
Kod zawiera 4 klasy:
1)
public class Main extends JFrame {
public Main() {
add(new tlio());
add(new index());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
setTitle("R - Type");
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
2)
public class index extends JPanel implements ActionListener {
private Timer timer;
private ludek ludek;
private tlio tlo;
public index() {
addKeyListener(new TAdapter());
setFocusable(true);
setBackground(Color.BLACK);
setDoubleBuffered(true);
ludek = new ludek(0,0);
timer = new Timer(5, this);
timer.start();
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(ludek.getImage(), ludek.getX(), ludek.getY(), this);
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
public void actionPerformed(ActionEvent e) {
ludek.move();
repaint();
}
private class TAdapter extends KeyAdapter {
public void keyReleased(KeyEvent e) {
ludek.keyReleased(e);
}
public void keyPressed(KeyEvent e) {
ludek.keyPressed(e);
}
}
}
3)
public class ludek {
private String ludek="b.png";
private int dx,dy,x,y;
private Image image;
public ludek (int a,int b)
{
ImageIcon ii = new ImageIcon(this.getClass().getResource(ludek));
image = ii.getImage();
x = a;
y = b;
}
public void move() {
x += dx;
y += dy;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Image getImage() {
return image;
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) {
dx = -1;
}
if (key == KeyEvent.VK_RIGHT) {
dx = 1;
}
if (key == KeyEvent.VK_UP) {
dy = -1;
}
if (key == KeyEvent.VK_DOWN) {
dy = 1;
}
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) {
dx = 0;
}
if (key == KeyEvent.VK_RIGHT) {
dx = 0;
}
if (key == KeyEvent.VK_UP) {
dy = 0;
}
if (key == KeyEvent.VK_DOWN) {
dy = 0;
}
}
}
4)
public class tlio extends JPanel {
private Image tlo;
public tlio ()
{
ImageIcon ii = new ImageIcon(this.getClass().getResource("a.png"));
tlo = ii.getImage();
}
public Image getImage() {
return tlo;
}
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(tlo, 0, 0, null);
}
}