2D-Grafik Bilder werden für mein Spiel nicht angezeigt

i8yourDog

Neues Mitglied
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


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:

KonradN

Super-Moderator
Mitarbeiter
Kannst Du noch mehr Details geben, was genau nicht funktioniert?

Prinzipiell nimmt der Konstruktor auch einen Filenamen, und so der Pfad stimmt (ggf. noch Gross-/Kleinschreibung prüfen!), dann sollte es klappen....

Ich sehe daher gerade keinen wirklichen Fehler. Es gibt Dinge, die man anders machen sollte aber das spielt erst einmal keine Rolle ... Und ich habe einen Pfad zu einem Bild eingefügt, das ich auf dem Rechner hatte und es lief direkt....
 

Neue Themen


Oben