In this article we’ll see how to develop tic-tac-toe game in Python.
The tic-tac-toe game we are going to develop is a two player game played in the command line. Steps in the program are as follows-
- Give an option to the player 1 to choose symbol (‘X’ or ‘O’).
- Create a tic-tac-toe board with index numbers making it easy for the players to input the index where they want their symbol to be placed.
- Give each player a chance to place the symbol alternatively until one of the players has won the game or the game is drawn.
Tic-tac-toe game – Python code
def user_choice():
choice = ' '
flag = False
while not choice.isdigit() or not flag:
choice = input('Please input a number (0-10): ')
if choice.isdigit() and int(choice) in range(0, 10):
flag = True
return int(choice)
else:
print('Enter number between 0 and 10')
flag = False
def display_board(board):
print('\n')
print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
print('-----------')
print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
print('-----------')
print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
def player_input():
marker = ''
while not (marker == 'X' or marker == 'O'):
marker = input('Player 1: Do you want to be X or O? ').upper()
if marker == 'X':
return ('X', 'O')
else:
return ('O', 'X')
def place_symbol(board, symbol, position):
if board[position] in ('X', 'O'):
print('Position already marked')
board[position] = symbol
def check_marked_position(board, position):
if board[position] in ('X', 'O'):
print('Position already marked')
return False
return True
def select_player_position(board, player):
position = 0
while position not in range(1, 10) or not check_marked_position(board, position):
position = int(input(player + ' Choose your next position: (1-9) '))
return position
def is_winner(board, symbol):
return ((board[1] == symbol and board[2] == symbol and board[3] == symbol) or # top row
(board[4] == symbol and board[5] == symbol and board[6] == symbol) or # middle row
(board[7] == symbol and board[8] == symbol and board[9] == symbol) or # bottom row
(board[1] == symbol and board[4] == symbol and board[7] == symbol) or # first column
(board[2] == symbol and board[5] == symbol and board[8] == symbol) or # second column
(board[3] == symbol and board[6] == symbol and board[9] == symbol) or # third column
(board[1] == symbol and board[5] == symbol and board[9] == symbol) or # diagonal
(board[3] == symbol and board[5] == symbol and board[7] == symbol)) # diagonal
def is_board_full(board):
full_flag = True
for i in range(1, 10):
if board[i] not in ('X', 'O'):
full_flag = False
return full_flag
def start_play():
while True:
player1_symbol, player2_symbol = player_input()
tictac_board = ['#', '1', '2', '3', '4', '5', '6', '7', '8', '9']
turn = 'Player1'
play_again_flag = 'Y'
symbol = ''
display_board(tictac_board)
while True:
if turn == 'Player1':
symbol = player1_symbol
else:
symbol = player2_symbol
position = select_player_position(tictac_board, turn)
place_symbol(tictac_board, symbol, position)
display_board(tictac_board)
if is_winner(tictac_board, symbol):
print('Yeey! ' + turn + ' won!')
break
if is_board_full(tictac_board):
print('It''s a draw!')
break
else:
turn = 'Player2' if turn is 'Player1' else 'Player1'
play_again_flag = input('Do you want to play again? Enter Y or N: ')
print(play_again_flag.lower())
if play_again_flag.lower() != 'y':
break
start_play()
- start_play() function is the main function where first task is to ask player 1 to choose preferred symbol out of ‘X’ or ‘O’. This is done by calling player_input() function.
- To display tic-tac-toe board display_board() function is called passing list tictac_board = ['#', '1', '2', '3', '4', '5', '6', '7', '8', '9'] as an argument. Since index 0 is not required so that has a placeholder value ‘#’.
- In a while loop each player gets a chance to place their respective symbol. Functions used for this task are select_player_position() and place_symbol().
- While placing a symbol it is required to check if the selected position is already marked or not that is done using check_marked_position() function.
- After each turn it is also required to check if there is a winner that is done using is_winner() function. Another thing to check is whether the board is full that is done using is_board_full() function.
That's all for the topic Tic-Tac-Toe Game in Python. If something is missing or you have something to share about the topic please write a comment.
You may also like
- Python Program to Delete Files Having a Specific Extension
- Name Mangling in Python With Examples
- Abstraction in Python With Examples
- Python Program to Write a File
- How to Create Thread in Python
- Compare Two Strings in Java - equals, compareTo() methods
- Java Condition Interface
- Password Protected PDF Using OpenPDF in Java
- Spring Boot Microservices Example
- Spring Data JPA Auditing Example


No comments:
Post a Comment