Tic Tac Toe (Game) Java project.

PHOTO EMBED

Mon Mar 27 2023 21:19:11 GMT+0000 (Coordinated Universal Time)

Saved by @Mohamedshariif #java

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

//Main method make different main.
public class Main {

	public static void main(String[] args) {
		
		TicTacToe tictactoe = new TicTacToe();
		
	}

}
// make different class.

public class TicTacToe implements ActionListener {
	
	Random random = new Random();
	JFrame frame = new JFrame();
	JPanel title_panel = new JPanel();
	JPanel button_panel = new JPanel();
	JLabel textfield = new JLabel();
	JButton[] buttons = new JButton[9];
	boolean player1_turn;
	
	
	TicTacToe() {
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,800);
        frame.getContentPane().setBackground(new Color(50,50,100));
        frame.setLayout(new BorderLayout());
        frame.setVisible(true);
        
        textfield.setBackground(new Color(50,50,100));
        textfield.setForeground(new Color(25,255,0));
        textfield.setFont(new Font("Ink Free", Font.BOLD,75));
        textfield.setHorizontalAlignment(JLabel.CENTER);
        textfield.setText("Tic-Tac-Toe");
        textfield.setOpaque(true);
        
        title_panel.setLayout(new BorderLayout());
        title_panel.setBounds(0,0,800,100);
        
        button_panel.setLayout(new GridLayout(3,3));
        button_panel.setBackground(new Color(150,150,150));
        
        for(int i=0;i<9;i++)
        {
            buttons[i] = new JButton();
            button_panel.add(buttons[i]);
            buttons[i].setFont(new Font("MV Boli",Font.BOLD,120));
            buttons[i].setFocusable(false);
            buttons[i].addActionListener(this);
            
        }

        
        title_panel.add(textfield);
        frame.add(title_panel,BorderLayout.NORTH);
        frame.add(button_panel);
       
        firstTurn();
        
	}
	
	
	 @Override
	 public void actionPerformed(ActionEvent e) {
		 
		 for(int i=0;i<9;i++) {
	            if(e.getSource()==buttons[i]) {
	            	if(player1_turn) {
	                    if(buttons[i].getText()=="") {
	                        buttons[i].setForeground(new Color(255,0,0));
	                        buttons[i].setText("X");
	                        player1_turn=false;
	                        textfield.setText("O turn");
	                        check();
	                    }
	                }
	                else {
	                    if(buttons[i].getText()=="") {
	                        buttons[i].setForeground(new Color(0,0,255));
	                        buttons[i].setText("O");
	                        player1_turn=true;
	                        textfield.setText("X turn");
	                        check();
	                    }
	                }
	            }
	        }
	 }
	 
	 public void firstTurn() {
		 
		 try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
		 if(random.nextInt(2)==0) {
			 player1_turn=true;
			 textfield.setText("X turn");
	            
	        }
	        else {
	            player1_turn=false;
	            textfield.setText("O turn");
	        }
		 
	 }
	 
	 public void check() {
		 
		 //check X win conditions
		 if(
				 (buttons[0].getText()=="X") &&
				 (buttons[1].getText()=="X") &&
				 (buttons[2].getText()=="X")
				 ) {
			 xWins(0,1,2);
		 }
		 if(
				 (buttons[3].getText()=="X") &&
				 (buttons[4].getText()=="X") &&
				 (buttons[5].getText()=="X")
				 ) {
			 xWins(3,4,5);
		 }
		 if(
				 (buttons[6].getText()=="X") &&
				 (buttons[7].getText()=="X") &&
				 (buttons[8].getText()=="X")
				 ) {
			 xWins(6,7,8);
		 }
		 if(
				 (buttons[0].getText()=="X") &&
				 (buttons[3].getText()=="X") &&
				 (buttons[6].getText()=="X")
				 ) {
			 xWins(0,3,6);
		 }
		 if(
				 (buttons[1].getText()=="X") &&
				 (buttons[4].getText()=="X") &&
				 (buttons[7].getText()=="X")
				 ) {
			 xWins(1,4,7);
		 }
		 if(
				 (buttons[2].getText()=="X") &&
				 (buttons[5].getText()=="X") &&
				 (buttons[8].getText()=="X")
				 ) {
			 xWins(2,5,8);
		 }
		 if(
				 (buttons[0].getText()=="X") &&
				 (buttons[4].getText()=="X") &&
				 (buttons[8].getText()=="X")
				 ) {
			 xWins(0,4,8);
		 }
		 if(
				 (buttons[2].getText()=="X") &&
				 (buttons[4].getText()=="X") &&
				 (buttons[6].getText()=="X")
				 ) {
			 xWins(2,4,6);
		 }
		 
		 
		 //check O win conditions
		 if(
				 (buttons[0].getText()=="O") &&
				 (buttons[1].getText()=="O") &&
				 (buttons[2].getText()=="O")
				 ) {
			 oWins(0,1,2);
		 }
		 if(
				 (buttons[3].getText()=="O") &&
				 (buttons[4].getText()=="O") &&
				 (buttons[5].getText()=="O")
				 ) {
			 oWins(3,4,5);
		 }
		 if(
				 (buttons[6].getText()=="O") &&
				 (buttons[7].getText()=="O") &&
				 (buttons[8].getText()=="O")
				 ) {
			 oWins(6,7,8);
		 }
		 if(
				 (buttons[0].getText()=="O") &&
				 (buttons[3].getText()=="O") &&
				 (buttons[6].getText()=="O")
				 ) {
			 oWins(0,3,6);
		 }
		 if(
				 (buttons[1].getText()=="O") &&
				 (buttons[4].getText()=="O") &&
				 (buttons[7].getText()=="O")
				 ) {
			 oWins(1,4,7);
		 }
		 if(
				 (buttons[2].getText()=="O") &&
				 (buttons[5].getText()=="O") &&
				 (buttons[8].getText()=="O")
				 ) {
			 oWins(2,5,8);
		 }
		 if(
				 (buttons[0].getText()=="O") &&
				 (buttons[4].getText()=="O") &&
				 (buttons[8].getText()=="O")
				 ) {
			 oWins(0,4,8);
		 }
		 if(
				 (buttons[2].getText()=="O") &&
				 (buttons[4].getText()=="O") &&
				 (buttons[6].getText()=="O")
				 ) {
			 oWins(2,4,6);
		 }
		 
	 }
	 
	 public void xWins(int a, int b, int c) {
		 
		 buttons[a].setBackground(Color.GREEN);
	     buttons[b].setBackground(Color.GREEN);
	     buttons[c].setBackground(Color.GREEN);
	        
	     for(int i=0;i<9;i++) {
	    	 buttons[i].setEnabled(false);
	    	 }
	        textfield.setText("X wins");
	    }
		 
	 public void oWins(int a, int b, int c) {
		 
		 buttons[a].setBackground(Color.GREEN);
	     buttons[b].setBackground(Color.GREEN);
	     buttons[c].setBackground(Color.GREEN);
	        
	     for(int i=0;i<9;i++) {
	    	 buttons[i].setEnabled(false);
	    	 }
	        textfield.setText("O wins");
	    }
		 
		 
	 }

content_copyCOPY