Klasse wird nicht gelesen (sehr einfaches Java)?


05.06.2024, 17:57

import java.awt.*;

import java.awt.event.*;

import java.util.Random;

import javax.swing.*;

   

public class WhacAMole {

  int boardWidth = 600;

  int boardHeight = 650; //50 frei für den Text

   

  JFrame frame = new JFrame("Mario: Whac A Mole");

  JLabel textLabel = new JLabel();

  JPanel textPanel = new JPanel();

  JPanel boardPanel = new JPanel();

   

   JButton[] board = new JButton[9];

  ImageIcon moleIcon;

  ImageIcon plantIcon;

  JButton currMoleTile;

  JButton currPlantTile;

  Random random = new Random();

  Timer setMoleTimer;

  Timer setPlantTimer;

  int score = 0;

   

   

   WhacAMole() {

    // frame.setVisible(true);

frame.setSize(boardWidth, boardHeight);

    frame.setLocationRelativeTo(null);

    frame.setResizable(false);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setLayout(new BorderLayout());

     

    textLabel.setFont(new Font("Arial", Font.PLAIN, 50));

textLabel.setHorizontalAlignment(JLabel.CENTER);

textLabel.setText("Score: " + Integer.toString(score));

textLabel.setOpaque(true);

    textPanel.setLayout(new BorderLayout());

    textPanel.add(textLabel);

    frame.add(textPanel, BorderLayout.NORTH);

boardPanel.setLayout(new GridLayout(3, 3));

    // boardPanel.setBackground(Color.black);

    frame.add(boardPanel);

    // plantIcon = new ImageIcon(getClass().getResource("./piranha.png"));

    Image plantImg = new ImageIcon(getClass().getResource("./piranha.png")).getImage();

    plantIcon = new ImageIcon(plantImg.getScaledInstance(150, 150, java.awt.Image.SCALE_SMOOTH));

    Image moleImg = new ImageIcon(getClass().getResource("./monty.png")).getImage();

    moleIcon = new ImageIcon(moleImg.getScaledInstance(150, 150, java.awt.Image.SCALE_SMOOTH));

for (int i = 0; i < 9; i++) {

      JButton tile = new JButton();

      board[i] = tile;

      boardPanel.add(tile);

      tile.setFocusable(false);

      // tile.setIcon(plantIcon);

      tile.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

          JButton tile = (JButton) e.getSource();

          if (tile == currMoleTile) {

            score += 10;

            textLabel.setText("Score: " + Integer.toString(score));

          }

          else if (tile == currPlantTile) {

        textLabel.setText("Game Over: " + Integer.toString(score));

            setMoleTimer.stop();

            setPlantTimer.stop();

            for (int i = 0; i < 9; i++) {

              board[i].setEnabled(false);

            }

          }

        }

      });

}

    setMoleTimer = new Timer(1000, new ActionListener() {

      public void actionPerformed(ActionEvent e) {

        //remove icon from current tile

        if (currMoleTile != null) {

          currMoleTile.setIcon(null);

          currMoleTile = null;

        }

        //randomly select another tile

        int num = random.nextInt(9); //0-8

        JButton tile = board[num];

        //if tile is occupied by plant, skip tile for this turn

        if (currPlantTile == tile) return;

        //set tile to mole

        currMoleTile = tile;

        currMoleTile.setIcon(moleIcon);

      }

    });

    setPlantTimer = new Timer(1500, new ActionListener() {

      public void actionPerformed(ActionEvent e) {

        //remove icon from current tile

        if (currPlantTile != null) {

          currPlantTile.setIcon(null);

          currPlantTile = null;

        }

        //randomly select another tile

        int num = random.nextInt(9); //0-8

        JButton tile = board[num];

        //if tile is occupied by mole, skip tile for this turn

        if (currMoleTile == tile) return;

        //set tile to mole

        currPlantTile = tile;

        currPlantTile.setIcon(plantIcon);

      }

    });

    setMoleTimer.start();

    setPlantTimer.start();

    frame.setVisible(true);

  }

}

Xearox  05.06.2024, 17:55

Was steht denn in der anderen Klasse?

Papatastisch 
Beitragsersteller
 05.06.2024, 17:55

Sekunde wird ergänzt

1 Antwort

Also bei mir gehts.

Bild zum Beitrag

hab natürlich die Bilder entfernen müssen, da ich diese nicht habe.

Der Rest ist aber gleich.

Hast du die Hauptklasse, in der die main Methode drin ist, auch gestartet?

Ich hab die bei mir einfach nur Main genannt, normalerweise nenne ich die auch anders. Nicht verwirren lassen.

Woher ich das weiß:Berufserfahrung – Freiberuflicher Java Entwickler mit 10 Jahren Erfahrung
 - (Computer, Technik, Informatik)

Papatastisch 
Beitragsersteller
 05.06.2024, 18:15

ja also ich starte die Klasse die bei mir Javaspiel heißt immer. In dieser main ist allerdings auch die Fehlermeldung dass die Variable WhacAmole nicht gelesen wird, also keine Ahnung was ich falsch habe

0
Xearox  05.06.2024, 18:16
@Papatastisch

Das ist meine Main Methode, wie gesagt, du kannst die Klasse nennen wie du willst.

public class Main {

	public static void main(String[] args) {

		// TODO Auto-generated method stub

		WhacAMole mole = new WhacAMole();

	}

}
0
Papatastisch 
Beitragsersteller
 05.06.2024, 18:21
@Xearox

danke dir auf jeden fall aber die Fehlermeldung bleibt diesselbe, glaube ich habe dieandere klasse irgendwie falsch abgelegt

0
Papatastisch 
Beitragsersteller
 05.06.2024, 18:30
@Xearox

hm okay, hast du ne andere Idee wie ich das lösen kann also zum Beispiel alles in die main schreiben oder so?

0
regex9  05.06.2024, 18:30
@Papatastisch

Auf deinem Screenshot ist keine Fehlermeldung zu sehen.

Das einzige ist ein Hinweis, dass die whacAMole-Variable zwar definiert, aber nicht benutzt wird. Dieser Hinweis der IDE ist nützlich, um unbenutzte Variablen aufzuspüren, die man im Prinzip löschen kann. In deinem Fall kannst du den Hinweis ignorieren oder du schreibst in main wirklich einfach nur

new WhacAMole();

An der Funktionalität des Programms ändert sich dadurch nichts.

2