Hallo,
ich soll für die Schule ein Spiel programmieren. Grundsätzlich ist es gar nicht so kompliziert, denn es ist ein Button-Masher und es hat auch so ganz gut funktioniert.
Jedoch habe ich ein Problem. Ich möchte gerne die graphischen Kästen durch Bilder von Autos ersetzen. Ich habe es mit einem absoluten Pfad probiert aber die Bilder werden nicht angezeigt. Mit den "Kästen" hat es noch funktioniert. Was kann ich tun?
Danke
ich soll für die Schule ein Spiel programmieren. Grundsätzlich ist es gar nicht so kompliziert, denn es ist ein Button-Masher und es hat auch so ganz gut funktioniert.
Jedoch habe ich ein Problem. Ich möchte gerne die graphischen Kästen durch Bilder von Autos ersetzen. Ich habe es mit einem absoluten Pfad probiert aber die Bilder werden nicht angezeigt. Mit den "Kästen" hat es noch funktioniert. Was kann ich tun?
Danke
Java:
[/B]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MiniRacer extends JFrame implements KeyListener {
private int Ferrari1 = 20; // Startposition Spieler 1
private int BMW2 = 20; // Startposition Spieler 2
private final int ZIEL_LINIE = 1600; // Ziel-Linie
private boolean gameOver = false;
private RacePanel racePanel;
private JLabel statusLabel;
private Image ferrariF40bild;
private Image bmwE36bild;
public MiniRacer() {
super("Mini Racer - 2 Spieler");
setSize(1920, 745);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// === Bilder laden === (8.10) (4.11)
//ferrariF40bild = new ImageIcon("F40.png").getImage();
//bmwE36bild = new ImageIcon("E36.png").getImage();
ferrariF40bild = new ImageIcon("C:/Users/name/Desktop/Spiel/F40.png").getImage();
bmwE36bild = new ImageIcon("C:/Users/name/Desktop/Spiel/E36.png").getImage();
// 1.10. Schrift
racePanel = new RacePanel();
statusLabel = new JLabel("Spieler 1 = A | Spieler 2 = L | Ziel: rechts!", SwingConstants.CENTER);
statusLabel.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 16));
add(racePanel, BorderLayout.CENTER);
add(statusLabel, BorderLayout.SOUTH);
addKeyListener(this); // (4.11.) "listening" auf die Tastatureingaben
setFocusable(true); // (1.10.) setzt Fokus auf das Fenster
setLocationRelativeTo(null); // (4.11.) Zentriert Fenster im Bildschirm
setVisible(true); // (1.10.) macht das Fenster sichtbar
}
private class RacePanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// Spielfeld
g.setColor(Color.LIGHT_GRAY);
g.fillRect(0, 55, getWidth(), 200);
g.fillRect(0, 400, getWidth(), 200);
// Ziellinie
g.setColor(Color.BLACK);
g.drawLine(ZIEL_LINIE, 0, ZIEL_LINIE, getHeight());
// Autos zeichnen (8.10.) (4.11)
g.drawImage(ferrariF40bild, Ferrari1, 55, 300, 300, this); // Bildgröße auch 300x300
g.drawImage(bmwE36bild, BMW2, 400, 300, 300, this);
}
}
@Override
public void keyPressed(KeyEvent e) {
if (gameOver) return;
if (e.getKeyChar() == 'a') {
Ferrari1 += 10;
} else if (e.getKeyChar() == 'l') {
BMW2 += 10;
}
checkWinner();
racePanel.repaint();
}
private void checkWinner() {
if (Ferrari1 >= ZIEL_LINIE) {
statusLabel.setText("Spieler 1 (Ferrari F40) hat gewonnen!");
gameOver = true;
} else if (BMW2 >= ZIEL_LINIE) {
statusLabel.setText("Spieler 2 (BMW M3) hat gewonnen!");
gameOver = true;
}
}
@Override public void keyReleased(KeyEvent e) {}
@Override public void keyTyped(KeyEvent e) {}
public static void main(String[] args) {
SwingUtilities.invokeLater(MiniRacer::new);
}
}
[B]
Zuletzt bearbeitet: