import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.event.*;
public class Engine extends Thread {
public JFrame frame = new JFrame("drawWorld");
public JPanel panel;
public JButton startGame = new JButton("START");
public JLabel highscore = new JLabel("HIGHSCORE: ");
public JLabel score = new JLabel("CURRENT SCORE: ");
public int shift = 0;
public int bounce = 0;
public Player player;
public Engine(Player pPlayer) {
frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
this.player = pPlayer;
}
public void startdraw(List blocks) {
panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
List<Block> world = blocks.copy(); //Kopiert das Listenobjekt, damit es nicht zu einem doppeltem Zugriff kommt
super.paintComponent(g);
BufferedImage buffer = new BufferedImage(frame.getWidth(), frame.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics bufferGraphics = buffer.getGraphics();
player.isUpdating = true;
if (player.dead == false) {
bufferGraphics.drawImage(player.texture, (int)frame.getWidth() / 2 - 75, (int)frame.getHeight() / 2, 150, 150, null);
world.toFirst();
while (world.getContent() != null) {
Block currentDrawing = (Block)world.getContent();
if (currentDrawing != null) {
bufferGraphics.drawImage(currentDrawing.texture, (int)currentDrawing.x*100 - shift + ((int)frame.getWidth() - 1000) / 2 - 350, (int)currentDrawing.y*100 + bounce + 45 + ((int)frame.getHeight() - 1000) / 2, (int)100, (int)100, null);
}
world.next();
}
}
score.setText("CURRENT SCORE: " + player.world.score);
highscore.setText("HIGHSCORE: " + player.world.highscore);
g.drawImage(buffer, 0, 0, null);
player.isUpdating = false;
}
};
startGame.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
player.reset();
player.dead = false;
panel.remove(startGame);
frame.requestFocusInWindow();
frame.repaint();
}
});
frame.add(panel);
panel.add(this.highscore);
panel.add(this.score);
if (player.dead) {
panel.add(this.startGame);
}
frame.setVisible(true);
}
public void update() {
frame.repaint();
}
}
Hallo Leute,
ich habe mich gefragt, wie ich die Objekte this.highscore, this.score und this.startGame verschieben kann. Ich habe schon mehrere Möglichkeiten ausprobiert. setBounds, setHorizontal / VerticalAlignment haben nicht funktioniert. Woran liegt das?
Danke im Vorraus!