├── Tic_Tac_Toe-Game ├── icon.ico ├── Tic_Tac_Toe_Game_Screen-Shot.PNG └── Tic_Tac_Toe_Game.py └── README.md /Tic_Tac_Toe-Game/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moadhamousti/Tic_Tac_Toe-Game/HEAD/Tic_Tac_Toe-Game/icon.ico -------------------------------------------------------------------------------- /Tic_Tac_Toe-Game/Tic_Tac_Toe_Game_Screen-Shot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moadhamousti/Tic_Tac_Toe-Game/HEAD/Tic_Tac_Toe-Game/Tic_Tac_Toe_Game_Screen-Shot.PNG -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tic_Tac_Toe_Game ❌ ⭕️ : 2 | 3 | ### Screen Shoot 📷 : 4 | 5 | Tic_Tac_Toe_Game_Screen-Shot 6 | -------------------------------------------------------------------------------- /Tic_Tac_Toe-Game/Tic_Tac_Toe_Game.py: -------------------------------------------------------------------------------- 1 | #Importing needed library 2 | from tkinter import * 3 | import random as r 4 | 5 | #Function to define buttons 6 | def CellButton(frame): 7 | b=Button(frame,padx=1,bg="#8fece9",width=3,text=" ",font=('Nunito',60,'bold'),relief="sunken",bd=5) 8 | return b 9 | 10 | #Defining window 11 | root=Tk() 12 | 13 | #Setting title for window 14 | root.title("Tic-Tac-Toe") 15 | 16 | #Setting the icon of the window 17 | root.iconbitmap("icon.ico") 18 | 19 | #Setting width and height for game window 20 | root.geometry("800x600") 21 | 22 | #Setting background color 23 | root["bg"]="#1593c4" 24 | 25 | #Declaring variables 26 | firstPlayer=StringVar() 27 | secondPlayer=StringVar() 28 | 29 | #Label for first player X 30 | Label(root,text="First Player [X] :",bg="#1593c4",fg="white",font=("Nunito",15,"bold")).place(x=520,y=20) 31 | 32 | #Textbox for first player X 33 | Entry(root,font=("Nunito",15,"bold"),textvariable=firstPlayer).place(x=520,y=55) 34 | 35 | #Label for second player O 36 | Label(root,text="Second Player [O] :",bg="#1593c4",fg="white",font=("Nunito",15,"bold")).place(x=520,y=90) 37 | 38 | #Textbox for second player O 39 | Entry(root,font=("Nunito",15,"bold"),textvariable=secondPlayer).place(x=520,y=125) 40 | 41 | #Label for displaying game result 42 | lblMesage=Label(root,bg="#1593c4",fg="yellow",font=("Nunito",15,"bold")) 43 | lblMesage.place(x=550,y=185) 44 | 45 | #Defining Two operators 46 | a=r.choice(['O','X']) 47 | 48 | #Setting color for operators X & O 49 | colour={'O':"Black",'X':"Violet"} 50 | 51 | #Variable for creating board 52 | board=[[],[],[]] 53 | for i in range(3): 54 | for j in range(3): 55 | board[i].append(CellButton(root)) 56 | board[i][j].config(command= lambda row=i,col=j:click(row,col)) 57 | board[i][j].grid(row=i,column=j) 58 | #label for displaying player's turn 59 | label=Label(text="Welcome To Tic-Tac-Toe",font=('Nunito',15,'bold'),bg="#03151C",fg="white") 60 | label.place(x=520,y=450) 61 | 62 | 63 | #changing operator for the next player 64 | def changeLetter(): 65 | global a 66 | for i in ['O','X']: 67 | if not(i==a): 68 | a=i 69 | break 70 | 71 | 72 | #Reset the gameboard 73 | def resetBoard(): 74 | global a 75 | for i in range(3): 76 | for j in range(3): 77 | board[i][j]["text"]=" " 78 | board[i][j]["state"]=NORMAL 79 | a=r.choice(['O','X']) 80 | 81 | 82 | #Check for winning 83 | def checkWinning(): 84 | for i in range(3): 85 | if(board[i][0]["text"]==board[i][1]["text"]==board[i][2]["text"]==a or board[0][i]["text"]==board[1][i]["text"]==board[2][i]["text"]==a): 86 | if a == 'X': 87 | lblMesage.config(text="'" + firstPlayer.get() + "' is the Winner") 88 | else: 89 | lblMesage.config(text="'" + secondPlayer.get() + "' is the Winner") 90 | resetBoard() 91 | if(board[0][0]["text"]==board[1][1]["text"]==board[2][2]["text"]==a or board[0][2]["text"]==board[1][1]["text"]==board[2][0]["text"]==a): 92 | if a =='X': 93 | lblMesage.config(text="'"+firstPlayer.get()+"' is the Winner") 94 | else: 95 | lblMesage.config(text="'" + secondPlayer.get() + "' is the Winner") 96 | resetBoard() 97 | elif(board[0][0]["state"]==board[0][1]["state"]==board[0][2]["state"]==board[1][0]["state"]==board[1][1]["state"]==board[1][2]["state"]==board[2][0]["state"]==board[2][1]["state"]==board[2][2]["state"]==DISABLED): 98 | lblMesage.config(text="The match is Tied!") 99 | resetBoard() 100 | 101 | def click(row,col): 102 | board[row][col].config(text=a,state=DISABLED,disabledforeground=colour[a]) 103 | lblMesage.config(text="") 104 | checkWinning() 105 | changeLetter() 106 | if a=='X': 107 | label.config(text=firstPlayer.get()+"'s Chance") 108 | else: 109 | label.config(text=secondPlayer.get() + "'s Chance") 110 | 111 | 112 | #Run Application 113 | root.mainloop() 114 | --------------------------------------------------------------------------------