In this tutorial, We create a Classic Tic-Tac-Toe Game in Python. Tic-Tac-Toe game is an easy game which is mostly played among children and it also helps them to improve their concentration.
The objective of this classic tic-tac-toe game in python project is to build a tic-tac-toe game so you can play it without wasting paper and improve your concentration. To build this game we use the tkinter module with the concept of python.
To play this game we require two players to play one is X and the other is O and both players play by putting their marks in empty squares.
To win the game players have to get 3 of her marks in a row (up, down, across, or diagonally).
Read Also: How to install Python on Lubuntu OS
Table of Contents
Create a Classic Tic-Tac-Toe Game in Python
Project Prerequisites
To build classic tic-tac-toe game in python we require tkinter module and basic concept of python
Tkinter modules is a standard graphical user interface used to render graphics.
Tkinter.messagebox used to display message box
To install tkinter modules we used pip install command on command prompt:
pip install tkinter
Project File Structure
These are the step to build classic Tic-Tac-Toe game in python :
- Import modules
- Initialize window
- Function to check result
- Function to check the winner
- Define labels and buttons
1. Import modules
from tkinter import * import tkinter.messagebox as msg
In this step, we import tkinter and messsagebox module
2. Initialize window
root= Tk() root.title('TIC-TAC-TOE---GetProjects.org') digits = [1,2,3,4,5,6,7,8,9] mark = '' “ count = 0 panels = ["panel"]*10
Tk() is use to initialize window
title() used to set the title of the window
3. Function to check the result
def win(panels,sign): return ((panels[1] == panels[2] == panels [3] == sign) or (panels[1] == panels[4] == panels [7] == sign) or (panels[1] == panels[5] == panels [9] == sign) or (panels[2] == panels[5] == panels [8] == sign) or (panels[3] == panels[6] == panels [9] == sign) or (panels[3] == panels[5] == panels [7] == sign) or (panels[4] == panels[5] == panels [6] == sign) or (panels[7] == panels[8] == panels [9] == sign))
In this function, the result will be checked by checking which player makes three of their marks in a row (up, down, across, or diagonally).
4. Function to check the winner
def checker(digit): global count, mark, digits if digit==1 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mar button1.config(text = mark) count = count+1 sign = mark if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if digit==2 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mark button2.config(text = mark) count = count+1 sign = mark if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if digit==3 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mark button3.config(text = mark) count = count+1 sign = mark if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if digit==4 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mark button4.config(text = mark) count = count+1 sign = mark if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if digit==5 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mark button5.config(text = mark) count = count+1 sign = mark if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if digit==6 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mark button6.config(text = mark) count = count+1 sign if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if digit==7 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mark button7.config(text = mark) count = count+1 sign = mark if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if digit==8 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mark button8.config(text = mark) count = count+1 sign = mark if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if digit==9 and digit in digits: digits.remove(digit) if count%2==0: mark ='X' panels[digit]=mark elif count%2!=0: mark = 'O' panels[digit]=mark button9.config(text = mark) count = count+1 sign = mark if(win(panels,sign) and sign=='X'): msg.showinfo("Result","Player1 wins") root.destroy() elif(win(panels,sign) and sign=='O'): msg.showinfo("Result","Player2 wins") root.destroy() if(count>8 and win(panels,'X')==False and win(panels,'O')==False): msg.showinfo("Result","Match Tied") root.destroy()
Players have a total of 9 clicks to play the game. Each time the player clicked, one chance will decrease by increasing the value of count by 1 if the value of count is greater than 8 then the result of game is tie
- If the value of count is even then player1 will play else player2 will play.
- config() used to mark the button with appropriate text
- showinfo() methods in the messagebox widget used to show some relevant information
- destroy() stop the mainloop to quit the program
5. Define labels and buttons
Label(root,text="player1 : X",font="times 15").grid(row=0,column=1) Label(root,text="player2 : O",font="times 15").grid(row=0,column=2) button1=Button(root,width=15,font=('Times 16 bold'),height=7,command=lambda:checker(1)) button1.grid(row=1,column=1) button2=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda:checker(2)) button2.grid(row=1,column=2) button3=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(3)) button3.grid(row=1,column=3) button4=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(4)) button4.grid(row=2,column=1) button5=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(5)) button5.grid(row=2,column=2) button6=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(6)) button6.grid(row=2,column=3) button7=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(7)) button7.grid(row=3,column=1) button8=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(8)) button8.grid(row=3,column=2) button9=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(9)) button9.grid(row=3,column=3) root.mainloop()
Label() widget used to display text that users aren’t able to modify.
Button() widget display button
- root is the name of window which we refered
- text stores the value which we display on the label
- font in which our text is written
- command will called when the button is clicked
- lambda() function used to send specific data to the callback function.
- mainloop() method executes when we want to run our program.
Read Also: Create Fruit Ninja Game in Python
Download source code of Classic tic-tac-toe game in python project: Tic Tac Toe Game Python Code
Output of Classic Tic-Tac-Toe Game in Python Project
Summary
We have successfully devloped the classic Tic-Tac-Toe game in Python project. We use tkinter module for rendering graphics on a display window. We learn how to create buttons and config text on buttons and also how to use lambda functions to send specific values to callback functions.
In this way we successfully made a Classic Tic-Tac-Toe game in python project. I hope you enjoyed building classic tic-tac-toe game in python project.
Search Keywords
- Tic-Tac-Toe game python project
- Tic-Tac-Toe game in python
- Classic Tic Tac Toe Game in Python
- Classic Tic Tac Toe Game in Python Project