Hallo an alle,
Da Java ziemlich neu für mich ist, benötige ich Hilfe bei der Umsetzung von Tic Tac Toe mit Smileys in Java. Mein Spielfeld steht und es funktioniert auch alles, jedoch habe ich noch einige Fragen.
Da ich mein Spiel nicht mit X's & O's aufbaue, sondern mit ImageIcons weiß ich zum Beispiel nicht wie ich bei if else Abfragen vorgehen muss. Im Beispiel zum Beispiel zu sehen bei Wer an der Reihe ist, etc. Außerdem bereitet mir der EndDialog aktuell Probleme. Aktuell gebe ich aus X (Devil Smiley) oder O (Sun Smiley) gewonnen hat. Meine Frage: Gibt es da vielleicht auch eine Möglichkeit den passenden Smiley auszugeben oder andere Lösungsvorschläge?
Außerdem würde es mich interessieren, was es für Gründe haben kann, dass meine ImageIcons wenn ein Button gedrückt wird dunkel sind, obwohl Sie normal bunt sind..
Ich bin über Antworten zu diesen Fragen, aber auch über allgemeine Verbesserungsvorschläge sehr dankbar.
Liebe Grüße
Da Java ziemlich neu für mich ist, benötige ich Hilfe bei der Umsetzung von Tic Tac Toe mit Smileys in Java. Mein Spielfeld steht und es funktioniert auch alles, jedoch habe ich noch einige Fragen.
Da ich mein Spiel nicht mit X's & O's aufbaue, sondern mit ImageIcons weiß ich zum Beispiel nicht wie ich bei if else Abfragen vorgehen muss. Im Beispiel zum Beispiel zu sehen bei Wer an der Reihe ist, etc. Außerdem bereitet mir der EndDialog aktuell Probleme. Aktuell gebe ich aus X (Devil Smiley) oder O (Sun Smiley) gewonnen hat. Meine Frage: Gibt es da vielleicht auch eine Möglichkeit den passenden Smiley auszugeben oder andere Lösungsvorschläge?
Außerdem würde es mich interessieren, was es für Gründe haben kann, dass meine ImageIcons wenn ein Button gedrückt wird dunkel sind, obwohl Sie normal bunt sind..
Ich bin über Antworten zu diesen Fragen, aber auch über allgemeine Verbesserungsvorschläge sehr dankbar.
Liebe Grüße
Java:
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
public class Gui implements ActionListener {
// Variables
private static int[][] winCombos = new int[][] // Possible win combinations
{ { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, // horizontal wins
{ 0, 3, 6 }, { 1, 4, 7 }, { 2, 5, 8 }, // vertical wins
{ 0, 4, 8 }, { 2, 4, 6 } // diagonal wins
};
static JButton btn[] = new JButton[9];
private int count = 0;
private String player = "";
private boolean win = false;
private ImageIcon devil; // devil= spieler X
private ImageIcon sun; // sun = spieler O
public Gui() {
// Create Window
JFrame jf = new JFrame();
jf.setSize(400, 400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLocationRelativeTo(null);
jf.setResizable(false);
jf.setTitle("Tic-Tac-Toe Playfield");
jf.setLayout(new GridLayout(3, 3));
devil = new ImageIcon(getClass().getResource("devil.png")); // X
sun = new ImageIcon(getClass().getResource("sun.png")); // O
// Add Buttons to the Window
for (int i = 0; i < btn.length; i++) {
btn[i] = new JButton();
btn[i].setVisible(true);
btn[i].setFocusPainted(false);
btn[i].addActionListener(this);
jf.add(btn[i]);
}
jf.setVisible(true);
}
public void actionPerformed(ActionEvent a) {
count++;
// Who's turn is it
if (count % 2 == 0) {
player = "O";
} else {
player = "X";
}
// Change button to letter
if (player == "X") {
JButton pressedButton = (JButton) a.getSource();
pressedButton.setIcon(devil);
pressedButton.setEnabled(false);
} else if (player == "O") {
JButton pressedButton = (JButton) a.getSource();
pressedButton.setIcon(sun);
pressedButton.setEnabled(false);
}
// Search for Winner
for (int i = 0; i <= 7; i++) {
if (btn[winCombos[i][0]].getIcon() != null
&& btn[winCombos[i][0]].getIcon().equals(btn[winCombos[i][1]].getIcon())
&& btn[winCombos[i][1]].getIcon() != null
&& btn[winCombos[i][1]].getIcon().equals(btn[winCombos[i][2]].getIcon())
)
{
win = true;
}
}
// Dialog at the end of the game
if (win) {
JOptionPane.showMessageDialog(null, player + " wins the game");
System.exit(0);
} else if (count == 9 && !win) {
JOptionPane.showMessageDialog(null, "There is no winner.");
System.exit(0);
}
}
}
Zuletzt bearbeitet: