import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main extends JFrame
{
//false = krzyzyk, true kolko
public static boolean type = false;
//tablica z przyciskami
public static JButton[][] buttons = new JButton[3][3];
public Main()
{
/// Określa rozmiar, widoczność, nazwa wyświetlanego programu itp
setSize(450,450);
setVisible(true);
setTitle("TicTacToe");
/// Określa tablice? 3x3
setLayout(new GridLayout(3,3));
/// funkcja okresla zeby do kazdej komorki byl przypisany przycisk
for(int i = 0; i < 3; i++)
{
for(int j = 0; j <3; j++)
{
myButton button = new myButton("", i, j);
buttons[i][j] = button;
button.addActionListener(new buttonHandler());
add(button);
}
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
@Override
public void run(){
new Main();
}
});
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
public class buttonHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e)
{
myButton button = (myButton) e.getSource();
if(Main.type)
{
button.setText("O");
Main.type = false;
}
else
{
button.setText("X");
Main.type = true;
}
button.setEnabled(false);
checkIfEnded(button);
}
private void checkIfEnded(myButton button)
{
int indexI = button.indexI;
int indexJ = button.indexJ;
String sign = button.getText();
if(indexI == 0)
{
if(indexJ == 0)
{
if((Main.buttons[0][1].getText() == sign && Main.buttons[0][2].getText() == sign) ||
(Main.buttons[1][0].getText() == sign && Main.buttons[2][0].getText() == sign) ||
(Main.buttons[1][1].getText() == sign && Main.buttons[2][2].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
else if(indexJ == 1)
{
if((Main.buttons[0][0].getText() == sign && Main.buttons[0][2].getText() == sign) ||
(Main.buttons[1][1].getText() == sign && Main.buttons[2][1].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
if((Main.buttons[0][0].getText() == sign && Main.buttons[0][1].getText() == sign) ||
(Main.buttons[1][2].getText() == sign && Main.buttons[2][2].getText() == sign) ||
(Main.buttons[1][1].getText() == sign && Main.buttons[2][0].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
}
else if(indexI == 1)
{
if(indexJ == 0)
{
if((Main.buttons[0][0].getText() == sign && Main.buttons[2][0].getText() == sign) ||
(Main.buttons[1][1].getText() == sign && Main.buttons[1][2].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
else if(indexJ == 1)
{
if((Main.buttons[1][0].getText() == sign && Main.buttons[1][2].getText() == sign) ||
(Main.buttons[0][1].getText() == sign && Main.buttons[2][1].getText() == sign) ||
(Main.buttons[0][0].getText() == sign && Main.buttons[2][2].getText() == sign) ||
(Main.buttons[0][2].getText() == sign && Main.buttons[2][0].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
if((Main.buttons[0][2].getText() == sign && Main.buttons[2][2].getText() == sign) ||
(Main.buttons[1][0].getText() == sign && Main.buttons[1][1].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
}
else
{
if(indexJ == 0)
{
if((Main.buttons[2][1].getText() == sign && Main.buttons[2][2].getText() == sign) ||
(Main.buttons[1][0].getText() == sign && Main.buttons[0][0].getText() == sign)||
(Main.buttons[1][1].getText() == sign && Main.buttons[0][2].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
else if(indexJ == 1)
{
if((Main.buttons[2][0].getText() == sign && Main.buttons[2][2].getText() == sign) ||
(Main.buttons[0][1].getText() == sign && Main.buttons[1][1].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
if((Main.buttons[2][0].getText() == sign && Main.buttons[2][1].getText() == sign) ||
(Main.buttons[0][2].getText() == sign && Main.buttons[1][2].getText() == sign)||
(Main.buttons[1][1].getText() == sign && Main.buttons[0][0].getText() == sign))
{
JOptionPane.showMessageDialog(null, sign + "- WINS", "WIN", JOptionPane.INFORMATION_MESSAGE);
}
}
}
}
}
import javax.swing.JButton;
public class myButton extends JButton{
public int indexI;
public int indexJ;
public myButton(String _text, int _indexI, int _indexJ)
{
super();
this.setText(_text);
this.indexI = _indexI;
this.indexJ = _indexJ;
}
}
Na razie tak to wygląda. Do końca nie wiem jeszcze jak zresetować całą grę.