Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.BorderLayout;
- import java.awt.EventQueue;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.Icon;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- public class TicTacToe
- {
- public static void main(String[] args)
- {
- EventQueue.invokeLater(new Runnable()
- {
- public void run()
- {
- GameFrame frame = new GameFrame();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- });
- }
- }
- class GameFrame extends JFrame
- {
- public GameFrame()
- {
- setTitle("Tic Tac Toe");
- setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
- turn = 1;
- counter = 0;
- setLayout(new BorderLayout());
- JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new GridLayout(3, 3));
- for(int i = 0; i < 3; i++)
- {
- for(int j = 0; j < 3; j++)
- {
- buttons[i][j] = new JButton();
- buttons[i][j].putClientProperty("INDEX", new Integer[]{i,j});
- buttons[i][j].putClientProperty("OWNER", null);
- buttons[i][j].addActionListener(listener);
- buttonPanel.add(buttons[i][j]);
- }
- }
- add(buttonPanel, BorderLayout.CENTER);
- statusBar = new JTextField("Player's 1 turn");
- statusBar.setEditable(false);
- add(statusBar, BorderLayout.SOUTH);
- }
- class GameListener implements ActionListener
- {
- public void actionPerformed(ActionEvent event)
- {
- counter++;
- JButton b = (JButton) event.getSource();
- Integer[] index = (Integer[]) b.getClientProperty("INDEX");
- b.putClientProperty("OWNER", turn);
- Icon icon = new ImageIcon(turn.toString() + ".gif");
- b.setIcon(icon);
- b.setEnabled(false);
- boolean check = checkVictory(index);
- if (check)
- {
- JOptionPane.showMessageDialog(null, "Player " + turn.toString() + " wins");
- init();
- }
- else
- {
- if (turn == 1)
- {
- turn = 2;
- statusBar.setText("Player's 2 turn");
- }
- else
- {
- turn = 1;
- statusBar.setText("Player's 1 turn");
- }
- }
- if (counter == 9)
- {
- JOptionPane.showMessageDialog(null, "Match is a draw");
- init();
- }
- }
- public Integer getOwner(JButton b)
- {
- return (Integer) b.getClientProperty("OWNER");
- }
- void printbuttonMap(Integer [][]bMap)
- {
- for(int i = 0; i < 3; i++)
- for(int j = 0; j < 3; j++)
- {
- System.out.print(bMap[i][j]+" ");
- System.out.println("");
- }
- }
- public boolean checkVictory(Integer[] index)
- {
- Integer x = index[0];
- Integer y = index[1];
- int i;
- // check rows
- for (i = 0; i < 3; i++)
- {
- if (getOwner(buttons[x][i]) != getOwner(buttons[x][y]))
- break;
- }
- if (i == 3)
- return true;
- // check columns
- for (i = 0; i < 3; i++)
- {
- if (getOwner(buttons[i][y]) != getOwner(buttons[x][y]))
- break;
- }
- if (i == 3)
- return true;
- // check diagonal
- if ((x==0 && y==0) ||
- (x==0 && y==2) ||
- (x==1 && y==1) ||
- (x==2 && y==0) ||
- (x==2 && y==2))
- {
- // check left diagonal
- for (i = 0; i < 3; i++)
- if (getOwner(buttons[i][i]) != getOwner(buttons[x][y]))
- break;
- if (i == 3)
- return true;
- // check right diagonal
- if (getOwner(buttons[0][2])==getOwner(buttons[x][y]) &&
- getOwner(buttons[1][1])==getOwner(buttons[x][y]) &&
- getOwner(buttons[2][0])==getOwner(buttons[x][y]))
- return true;
- }
- return false;
- }
- }
- public void init()
- {
- for (int i = 0; i < 3; i++)
- for (int j = 0; j < 3; j++)
- {
- buttons[i][j].putClientProperty("INDEX", new Integer[]{i,j});
- buttons[i][j].putClientProperty("OWNER", null);
- buttons[i][j].setIcon(null);
- buttons[i][j].setEnabled(true);
- turn=1;
- counter=0;
- statusBar.setText("Player's 1 turn");
- }
- }
- private JTextField statusBar;
- private Integer counter;
- private Integer turn;
- private JButton[][] buttons = new JButton[3][3];
- private final int DEFAULT_WIDTH = 300;
- private final int DEFAULT_HEIGHT = 300;
- private static final long serialVersionUID = 1L;
- private GameListener listener = new GameListener();
- }import java.awt.BorderLayout;
- import java.awt.EventQueue;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.Icon;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- public class TicTacToe
- {
- public static void main(String[] args)
- {
- EventQueue.invokeLater(new Runnable()
- {
- public void run()
- {
- GameFrame frame = new GameFrame();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- });
- }
- }
- class GameFrame extends JFrame
- {
- public GameFrame()
- {
- setTitle("Tic Tac Toe");
- setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
- turn = 1;
- counter = 0;
- setLayout(new BorderLayout());
- JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new GridLayout(3, 3));
- for(int i = 0; i < 3; i++)
- {
- for(int j = 0; j < 3; j++)
- {
- buttons[i][j] = new JButton();
- buttons[i][j].putClientProperty("INDEX", new Integer[]{i,j});
- buttons[i][j].putClientProperty("OWNER", null);
- buttons[i][j].addActionListener(listener);
- buttonPanel.add(buttons[i][j]);
- }
- }
- add(buttonPanel, BorderLayout.CENTER);
- statusBar = new JTextField("Player's 1 turn");
- statusBar.setEditable(false);
- add(statusBar, BorderLayout.SOUTH);
- }
- class GameListener implements ActionListener
- {
- public void actionPerformed(ActionEvent event)
- {
- counter++;
- JButton b = (JButton) event.getSource();
- Integer[] index = (Integer[]) b.getClientProperty("INDEX");
- b.putClientProperty("OWNER", turn);
- Icon icon = new ImageIcon(turn.toString() + ".gif");
- b.setIcon(icon);
- b.setEnabled(false);
- boolean check = checkVictory(index);
- if (check)
- {
- JOptionPane.showMessageDialog(null, "Player " + turn.toString() + " wins");
- init();
- }
- else
- {
- if (turn == 1)
- {
- turn = 2;
- statusBar.setText("Player's 2 turn");
- }
- else
- {
- turn = 1;
- statusBar.setText("Player's 1 turn");
- }
- }
- if (counter == 9)
- {
- JOptionPane.showMessageDialog(null, "Match is a draw");
- init();
- }
- }
- public Integer getOwner(JButton b)
- {
- return (Integer) b.getClientProperty("OWNER");
- }
- void printbuttonMap(Integer [][]bMap)
- {
- for(int i = 0; i < 3; i++)
- for(int j = 0; j < 3; j++)
- {
- System.out.print(bMap[i][j]+" ");
- System.out.println("");
- }
- }
- public boolean checkVictory(Integer[] index)
- {
- Integer x = index[0];
- Integer y = index[1];
- int i;
- // check rows
- for (i = 0; i < 3; i++)
- {
- if (getOwner(buttons[x][i]) != getOwner(buttons[x][y]))
- break;
- }
- if (i == 3)
- return true;
- // check columns
- for (i = 0; i < 3; i++)
- {
- if (getOwner(buttons[i][y]) != getOwner(buttons[x][y]))
- break;
- }
- if (i == 3)
- return true;
- // check diagonal
- if ((x==0 && y==0) ||
- (x==0 && y==2) ||
- (x==1 && y==1) ||
- (x==2 && y==0) ||
- (x==2 && y==2))
- {
- // check left diagonal
- for (i = 0; i < 3; i++)
- if (getOwner(buttons[i][i]) != getOwner(buttons[x][y]))
- break;
- if (i == 3)
- return true;
- // check right diagonal
- if (getOwner(buttons[0][2])==getOwner(buttons[x][y]) &&
- getOwner(buttons[1][1])==getOwner(buttons[x][y]) &&
- getOwner(buttons[2][0])==getOwner(buttons[x][y]))
- return true;
- }
- return false;
- }
- }
- public void init()
- {
- for (int i = 0; i < 3; i++)
- for (int j = 0; j < 3; j++)
- {
- buttons[i][j].putClientProperty("INDEX", new Integer[]{i,j});
- buttons[i][j].putClientProperty("OWNER", null);
- buttons[i][j].setIcon(null);
- buttons[i][j].setEnabled(true);
- turn=1;
- counter=0;
- statusBar.setText("Player's 1 turn");
- }
- }
- private JTextField statusBar;
- private Integer counter;
- private Integer turn;
- private JButton[][] buttons = new JButton[3][3];
- private final int DEFAULT_WIDTH = 300;
- private final int DEFAULT_HEIGHT = 300;
- private static final long serialVersionUID = 1L;
- private GameListener listener = new GameListener();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement