Ticker

6/recent/ticker-posts

Tic Tac Toe Game In Python

  




This is a super cool Tic Tac Toe game development project in python. Its a good exercise for python developers and can increase the logic buildings skills for beginner developers.


The source code for the project is following : 


board = [' ' for x in range(10)]
def insertLetter(letterpos):
    board[pos= letter
def spaceIsFree(pos):
    return board[pos== " "
def printBoard(board):
    print(" " + board[1+ "| " + board[2+ "| " + board[3])
    print("---------")
    print(" " + board[4+ "| " + board[5+ "| " + board[6])
    print("---------")
    print(" " + board[7+ "| " + board[8+ "| " + board[9])
def isWinner(bole):
    return ((bo[7== le and bo[8== le and bo[9== leor 
            (bo[4== le and bo[5== le and bo[6== leor 
            (bo[1== le and bo[2== le and bo[3== leor 
            (bo[1== le and bo[4== le and bo[7== leor  
            (bo[2== le and bo[5== le and bo[8== leor 
            (bo[3== le and bo[6== le and bo[9== leor 
            (bo[1== le and bo[5== le and bo[9== leor  
            (bo[3== le and bo[5== le and bo[7== le))
def playMove():
    run = True
    while run:
        move = input("Please select a position to place an 'X' (1-9): ")
        try:
            move = int(move)
            if move > 0 and move < 10 :
                if spaceIsFree(move):
                    run = False
                    insertLetter("x", move)
                else:
                    print("Sorry this space is occupied")
            else:
                print("Please type the number within the range")
        except:
            print("Please type a number. ")
def compMove():
    possibleMoves = [x for x, letter in enumerate(board) if letter == ' ' and x != 0]
    move = 0
    for let in ['o','x']:
        for i in possibleMoves:
            boardCopy = board[:]
            boardCopy[i] = let
            if isWinner(boardCopy, let):
                move = i
                return move
    cornersOpen = []
    for i in possibleMoves:
        if i in [1,3,7,9]:
            cornersOpen.append(i)
    if len(cornersOpen) > 0:
        move = selectRandom(cornersOpen)
        return move
    if 5 in possibleMoves:
        move = 5 
        return move 
    edgesOpen = []
    for i in possibleMoves:
        if i in [2,4,6,8]:
            edgesOpen.append(i)
    if len(edgesOpen) > 0:
        move = selectRandom(edgesOpen)
    return move
def selectRandom(li):
    import random
    ln = len(li)
    r = random.randrange(0, ln)
    return li[r]
def isBoardFull(board):
    if board.count(" "> 1:
        return False
    else:
        return True
def main():
    print("welcome tic tac toe")
    printBoard(board)
    while not(isBoardFull(board)):
        if not(isWinner(board, "o")):
            playMove()
            printBoard(board)
        else:
            print("Sorry, O's won this time! ")
            break
        if not(isWinner(board, "x")):
            move  = compMove()
            if move == 0:
                print("Tie game")
            else:
                insertLetter("o", move)
                print("Computer placed an 'o' in position", move, ":")
                printBoard(board)
        else:
            print("X's won this time! Good job")
            break
    if isBoardFull(board):
        print("Tie game")

main()

Post a Comment

0 Comments