Add files via upload
This commit is contained in:
commit
31f66b2c05
2 changed files with 120 additions and 0 deletions
119
Gui.java
Normal file
119
Gui.java
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.*;
|
||||||
|
import javax.swing.*;
|
||||||
|
import javax.swing.border.CompoundBorder;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class Gui extends JFrame {
|
||||||
|
private JPanel panel = new JPanel(new GridLayout(3, 3));
|
||||||
|
private boolean turn = true;
|
||||||
|
private JLabel[][] labels = new JLabel[][] {{new JLabel(" "), new JLabel(" "), new JLabel(" ")}, {new JLabel(" "), new JLabel(" "), new JLabel(" ")}, {new JLabel(" "), new JLabel(" "), new JLabel(" ")}};
|
||||||
|
|
||||||
|
public Gui(String s) {
|
||||||
|
super(s);
|
||||||
|
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initComponents() {
|
||||||
|
for (int i = 0; i < labels.length; i++) {
|
||||||
|
for (int j = 0; j < labels[0].length; j++) {
|
||||||
|
labels[i][j].addMouseListener(new MouseListener() {
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(MouseEvent e) {
|
||||||
|
JLabel l = (JLabel) e.getSource();
|
||||||
|
|
||||||
|
if (l.getText().equals(" ")) {
|
||||||
|
if (turn) {
|
||||||
|
l.setText("X");
|
||||||
|
l.setForeground(Color.BLUE);
|
||||||
|
} else {
|
||||||
|
l.setText("O");
|
||||||
|
l.setForeground(Color.RED);
|
||||||
|
}
|
||||||
|
turn = !turn;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < labels.length; i++) {
|
||||||
|
if (labels[i][0].getText().equals(labels[i][1].getText()) && labels[i][0].getText().equals(labels[i][2].getText()) && labels[i][0].getText().equals("X")) win("X");
|
||||||
|
else if (labels[i][0].getText().equals(labels[i][1].getText()) && labels[i][0].getText().equals(labels[i][2].getText()) && labels[i][0].getText().equals("O")) win("O");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < labels[0].length; i++) {
|
||||||
|
if (labels[0][i].getText().equals(labels[1][i].getText()) && labels[1][i].getText().equals(labels[2][i].getText()) && labels[0][i].getText().equals("X")) win("X");
|
||||||
|
else if (labels[0][i].getText().equals(labels[1][i].getText()) && labels[1][i].getText().equals(labels[2][i].getText()) && labels[0][i].getText().equals("O")) win("O");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (labels[0][0].getText().equals(labels[1][1].getText()) && labels[1][1].getText().equals(labels[2][2].getText()) && labels[0][0].getText().equals("X")) win("X");
|
||||||
|
else if (labels[0][0].getText().equals(labels[1][1].getText()) && labels[1][1].getText().equals(labels[2][2].getText()) && labels[0][0].getText().equals("O")) win("O");
|
||||||
|
|
||||||
|
if (labels[0][2].getText().equals(labels[1][1].getText()) && labels[1][1].getText().equals(labels[2][0].getText()) && labels[0][2].getText().equals("X")) win("X");
|
||||||
|
else if (labels[0][2].getText().equals(labels[1][1].getText()) && labels[1][1].getText().equals(labels[2][0].getText()) && labels[0][2].getText().equals("O")) win("O");
|
||||||
|
|
||||||
|
if(allfilled()) win(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(MouseEvent e) {}
|
||||||
|
});
|
||||||
|
|
||||||
|
labels[i][j].setFont(new Font("Monospaced",Font.BOLD,128));
|
||||||
|
labels[i][j].setBorder(new CompoundBorder(BorderFactory.createLineBorder(Color.BLACK), BorderFactory.createEmptyBorder(0, 5, 0, 5)));
|
||||||
|
labels[i][j].setHorizontalAlignment(SwingConstants.CENTER);
|
||||||
|
panel.add(labels[i][j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
add(panel);
|
||||||
|
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Exit when close button clicked
|
||||||
|
pack();
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void win(String s) {
|
||||||
|
String winString;
|
||||||
|
|
||||||
|
if (s.equals("X")) winString = "X Wins!";
|
||||||
|
else if (s.equals("O")) winString = "O Wins!";
|
||||||
|
else winString = "It's a tie!";
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(this, winString);
|
||||||
|
|
||||||
|
for (int i = 0; i < labels.length; i++) {
|
||||||
|
for (int j = 0; j < labels[0].length; j++) {
|
||||||
|
labels[i][j].setText(" ");
|
||||||
|
turn = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean allfilled() {
|
||||||
|
for (int i = 0; i < labels.length; i++) {
|
||||||
|
for (int j = 0; j < labels[0].length; j++) {
|
||||||
|
if (labels[i][j].getText().equals(" ")) return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The entry main() method */
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Run GUI codes in the Event-Dispatching thread for thread safety
|
||||||
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
new Gui("Tic Tac Toe");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
1
manifest.txt
Normal file
1
manifest.txt
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Main-Class: Gui
|
||||||
Loading…
Add table
Add a link
Reference in a new issue