From 31f66b2c054b243ab2b6e68cbb0fde1465f1a8da Mon Sep 17 00:00:00 2001 From: Ben Morgan Date: Thu, 21 May 2020 16:33:25 -0600 Subject: [PATCH] Add files via upload --- Gui.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++ manifest.txt | 1 + 2 files changed, 120 insertions(+) create mode 100644 Gui.java create mode 100644 manifest.txt diff --git a/Gui.java b/Gui.java new file mode 100644 index 0000000..39a0a2b --- /dev/null +++ b/Gui.java @@ -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"); + } + }); + } +} \ No newline at end of file diff --git a/manifest.txt b/manifest.txt new file mode 100644 index 0000000..db3adef --- /dev/null +++ b/manifest.txt @@ -0,0 +1 @@ +Main-Class: Gui