Aim - To Build A Player Vs Computer Tic-Tac-Toe Game in Python. Theory - Source Code
Aim - To Build A Player Vs Computer Tic-Tac-Toe Game in Python. Theory - Source Code
Theory - In order to win the game, a player must place three of their marks in a horizontal,
vertical, or diagonal row.
Source Code:
import numpy as np
import random
from time import sleep
def create_board():
return(np.array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]))
def possibilities(board):
l = []
for i in range(len(board)):
for j in range(len(board)):
if board[i][j] == 0:
l.append((i, j))
return(l)
def random_place(board, player):
selection = possibilities(board)
current_loc = random.choice(selection)
board[current_loc] = player
return(board)
def row_win(board, player):
for x in range(len(board)):
win = True
for y in range(len(board)):
if board[x, y] != player:
win = False
continue
if win == True:
return(win)
return(win)
def col_win(board, player):
for x in range(len(board)):
win = True
for y in range(len(board)):
if board[y][x] != player:
win = False
continue
if win == True:
return(win)
return(win)
def diag_win(board, player):
win = True
y = 0
for x in range(len(board)):
if board[x, x] != player:
win = False
win = True
if win:
for x in range(len(board)):
y = len(board) - 1 - x
if board[x, y] != player:
win = False
return win
def evaluate(board):
winner = 0
for player in [1, 2]:
if (row_win(board, player) or
col_win(board,player) or
diag_win(board,player)):
winner = player
if np.all(board != 0) and winner == 0:
winner = -1
return winner
def play_game(name):
board, winner, counter = create_board(), 0, 1
print("INITIAL SETUP")
print(board)
sleep(2)
while winner == 0:
for player in [1, 2]:
if(player==1):
correct=0
while correct==0:
print("Choice for Chance ("+name+") (0-8): ")
choice = int(input())
row = int(choice/3)
col = int(choice%3)
if(board[row][col])==0:
board[row][col]=1
correct=1
else:
print("Already taken")
else:
board = random_place(board, player)
print("Board after " + str(counter) + " move")
print(board)
sleep(2)
counter += 1
winner = evaluate(board)
if winner != 0:
break
abc = name if winner ==1 else "Computer"
return(abc)
print("Enter Player Name : ")
name = input()
print("Player 1 - "+name)
print("Player 2 - Computer")
print("Winner is: " + str(play_game(name)))
Output :