Hi Leute,
habe eine allgemeine Frage für die Vorgehensweise für ein grafisches TicTacToe-Spiel und ein akutes Problem mit Button, was (meiner Meinung nach) ein wenig zusammenhängt.
(1)
Zuerst das Problem:
Ich habe zwei Buttons, die geklickt werden sollen. Wenn sie geklickt wurden, sollen sie den Text ändern und zwar von "Klick mich" in "x".
Wenn dieser Zustand erreicht wird, soll in einem Label stehen: "super, alle Buttons sind X"
Der Fehler ist im Code markiert und unten ausgeführt, hier der Code:
Also der Compiler sagt: Fehlermeldung: cannot find symbol, symbol: variable einButton, location: class tictactoe.TicTacToe.testListener
Also anscheinend findet der Compiler nicht den einButton bzw. kann nicht darauf zugreifen. Das verwundert mich aber iwie, weil das label.setText funktioniert. Was habe ich übersehen?
(2)
Vorrausgesetzt das "Programm" funktioniert wie ich es möchte:
Wie gehe ich jetzt vor, wenn ich kontrollieren möchte, ob alle Buttons X sind?
Baue ich eine if-Abfrage bei jedem Event ein? Mit einer Anweisung so ähnlich: if(einButton.Text == "X" && zweiButton.Text == "X") {mach das} else {nichts unternehmen}
(3)
Jetzt die allgemeine Frage:
Ist mein prinzipielles Vorgehen für ein TicTacToe-Spiel richtig? Mir kommt das wahnsinnig kompliziert vor. Ich müsste ja in ein Gitternetz mit 9 Buttons mit je einem Event einbauen. Und beim TicTacToe muss ich ja deutlich mehrere Abfragen machen, weil es ja einige Gewinnmöglichkeiten gibt.
Was gibt es hier für Alternativen bzw. einfach gehaltenere Lösungen? Wie funktioniert sowas mit noch komplexeren Programmen wie z.B. Vier gewinnt oder einem Sudoko-Löser?
Vielen Dank für Antworten
Gruß
habe eine allgemeine Frage für die Vorgehensweise für ein grafisches TicTacToe-Spiel und ein akutes Problem mit Button, was (meiner Meinung nach) ein wenig zusammenhängt.
(1)
Zuerst das Problem:
Ich habe zwei Buttons, die geklickt werden sollen. Wenn sie geklickt wurden, sollen sie den Text ändern und zwar von "Klick mich" in "x".
Wenn dieser Zustand erreicht wird, soll in einem Label stehen: "super, alle Buttons sind X"
Der Fehler ist im Code markiert und unten ausgeführt, hier der Code:
Java:
package tictactoe;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Tictactoe {
JFrame frame;
JLabel label;
public static void main(String[] args) {
Tictactoe gui = new Tictactoe();
gui.los();
}
public void los() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton einButton = new JButton("Klick mich");
einButton.addActionListener(new testListener());
JButton zweiButton = new JButton("Klick mich");
zweiButton.addActionListener(new testZweiListener());
label = new JLabel("Ich bin ein Label");
frame.getContentPane().add(BorderLayout.SOUTH, einButton);
frame.getContentPane().add(BorderLayout.NORTH, zweiButton);
frame.getContentPane().add(BorderLayout.CENTER, label);
frame.setSize(420,300);
frame.setVisible(true);
}
class testListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
label.setText("blalalal"); //Funktioniert bei Knopfdruck
einButton.setText("X"); //HIER KOMMT EIN FEHLER
}
}
class testZweiListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
//selber Code wie oben, nur anderer Button
}
}
}
Also der Compiler sagt: Fehlermeldung: cannot find symbol, symbol: variable einButton, location: class tictactoe.TicTacToe.testListener
Also anscheinend findet der Compiler nicht den einButton bzw. kann nicht darauf zugreifen. Das verwundert mich aber iwie, weil das label.setText funktioniert. Was habe ich übersehen?
(2)
Vorrausgesetzt das "Programm" funktioniert wie ich es möchte:
Wie gehe ich jetzt vor, wenn ich kontrollieren möchte, ob alle Buttons X sind?
Baue ich eine if-Abfrage bei jedem Event ein? Mit einer Anweisung so ähnlich: if(einButton.Text == "X" && zweiButton.Text == "X") {mach das} else {nichts unternehmen}
(3)
Jetzt die allgemeine Frage:
Ist mein prinzipielles Vorgehen für ein TicTacToe-Spiel richtig? Mir kommt das wahnsinnig kompliziert vor. Ich müsste ja in ein Gitternetz mit 9 Buttons mit je einem Event einbauen. Und beim TicTacToe muss ich ja deutlich mehrere Abfragen machen, weil es ja einige Gewinnmöglichkeiten gibt.
Was gibt es hier für Alternativen bzw. einfach gehaltenere Lösungen? Wie funktioniert sowas mit noch komplexeren Programmen wie z.B. Vier gewinnt oder einem Sudoko-Löser?
Vielen Dank für Antworten
Gruß