MENU
Question -

Write a tic-tac-toe program in python.



Answer -

# tic-tac-toe program
import random def drawboard (board):
# This function is used to print the board
print (‘ | | ‘)
print (‘ ‘ + board [7] + ‘ j ‘ + board [8]
+ ‘ | ‘ + board [9]) print (‘| | ‘)
print (‘ ‘)
print (‘| | ‘)
print (‘ ‘ + board [4] + ‘ | ‘ + board [5]
+ ‘ | ‘ + board [6]) print (‘| | ‘)
print (‘ ‘)
Print (‘ | | ‘)
print (‘ ‘ + board [1] + ‘ | ‘ + board [2]
+ ‘ | ‘ + board [3]) print (‘| | ‘)
def input player letter ():
# This function is used to display the user typed letter
Letter = ”
while not (letter = = ‘X’ or letter = = ‘O’):
print (‘Do you want to be X or O ?’)
letter = input () .upper ()
if letter = ‘X’ return [‘X’, ‘O’]
else:
return [‘O’, ‘X’] def whogoesFirst ():
# This function is used to randomly choose
the player
if random . randint (0,1) = = 0 : return ‘Computer’ else:
return ‘Player’ def Play Again ():
# This function is used when player wants play again print
(‘Do you want to play again ? (Yes or no)’) return input (), lower ().startswith (‘y’) def makeMove (board, letter, move): board[move] = letter def is Winner (bo, le):
# This function returns true when plays has
won return

(60[7] = = le and 60[8] = = le and 60[9] = = le) or
(60[4] = = le and 60[5] = = le and 60[6] = = le) or
(60[1 ] = = le and 60[2] = = le and 60[3] = = le) or
(60[7] = = le and 60[4] = = le and 60[1] = = le) or
(60[8] = = le and 60[5] = = le and 60[2] = = le) or
(60[9] = = le and 60[6] = = le and 60[3] = = le) or
(60[7] = = le and 60[5] = = le and 60[3] = = le) or
(60[9] = = le and 60[5] = = le and 60[1] = = le) or

def getBoardcopy(board):
# This function make a duplicate of the board dupeBoard = [ ]
for i in board :
dupeBoard.append(i)
return depeBoard
def isSpaceFree (board, move):
# This function returns Ttue if the passed
move is free return boardfmove] = = ‘ ‘ def getPlayerMove(board):
# This function is used to take player’s move
move = ‘ ‘
while move not in’12345678 9’.split () or
not is spaceFree (board, int(move)):
print (‘What is your next move ? (1-9)’)
move = input () return int(move)
def chooseRandomMoveFromList(board,
movelist):
# This function returns a valid move from the passed list possible Moves = [ ]
for i in moveList:
if is SpaceFree (board, i):
possibleMOves.append(i)
if len(possibleMoves)! = 0 :
return random.choice (possibleMoves)
else:
return – None
def getComputerMove (board, computerletter):
# This function returns the computer’s letter
if computer letter = = ‘X’:
player letter = ‘O’
else:
player letter = ‘X’
for i in range (1,10):
copy = getBoardCopy (board)
if isSpaceFree (copy, i):
makeMove (copy, computerletter, i)
if is Winner (copy, computerletter):
return i
for i in range (1,10):
copy = getBoard Copy (board)
if isSpaceFree (copy, i):
makeMove (copy, player letter, i)
if is Winner (copy, player letter):
return i
move = chooseRandomMoveFromList (board, [1, 3, 7, 9])
if move ! = None :
return move
if isSpaceFree (board, 5):
return 5
return ChooseRandomMoveFromList (board, [2,4,6,8])
def is BoardFull (board):
# This function returns true if all space on board has been taken
for i in range (1,10):
if isSpaceFree (board, i):
return False
return True
print (“Welcome to Tic-Tac-Toe !”)
while True:
the Board = [” * 10
playerletter, computerletter = input
playerletter()
turn = whoGoesFirst()
print (‘The’ + turn + ‘will go first.’)
gamelsPlaying = True
while gemelsPlaying:
if turn = = ‘player’:
drawBoard (theBoard)
move = getPlayerMove (theBoard)
makeMove (theBoard, playerletter, move)
if is Winner (theBoard, playletter):
drawBoard (theBoard)
print (‘Hooray ! You have won !’)
gamelsPlaying = False
esle:
if is BoardFull (theBoard):
drawBoard (theBoard)
print (‘The game is a tie.”)
break
else:
turn = ‘computer’
else:
move=getCompterMove (theBoard, Computerletter)
makeMove (theBoard, computer letter, move)
if is Winner (theBoard, computerletter): drawBoard (theBoard)
print(‘The computer has beaten you!’) gamelsPlaying = False
else:
if isBoardFull (theBoard):
drawBoard (theBoard)
print (‘The game is a tie !’)
break
else:
turn = ‘player’ if not play Again ():
break

Comment(S)

Show all Coment

Leave a Comment

Free - Previous Years Question Papers
Any questions? Ask us!
×