Skip to Content
Menu
This question has been flagged
2519 Views

please see the code 

#tic-toc-toe game

#global constants

X="X"

O="O"

EMPTY=""

TIE="TIE"

NUM_SQUARES=9



def display_instruction():

    print("tic-tac-toe game position:--\n"\

          "0 | 1 | 2\n"\

          "-----------\n"\

          "3 | 4 | 5\n"\

          "-----------\n"\

          "6 | 7 | 8\n")



def ask_yes_no(question):

    #ask yea or no ques

    response=None

    while response not in ("y","n"):

        response=input(question).lower()

    return response


def ask_number(question,low,high):

    response=None

    while response  in range(low,high):

        response=eval(input(question))

    return response


def pieces():

    go_first=ask_yes_no("do you require the first move?(y/n):")

    if go_first=="y":

        print("\nthen take the first move.you will need it")

        human=X

        computer=O

    else:

        print("\nyour bravery will be yours undoing...i will go first")

        computer=X

        human=O

    return computer,human


def new_board():

    board=[]

    for square in range (9):

        board.append(EMPTY)

    return board



def display_board(board):

    print("\n\t",board[0],"|",board[1],"|",board[2])

    print("\t","-----------")

    print("\n\t",board[3],"|",board[4],"|",board[5])

    print("\t","-----------")

    print("\n\t",board[6],"|",board[7],"|",board[8])


def legal_moves(board):

    moves=[]

    for square in range(9):

        if board[square]==EMPTY:

              moves.append(square)

    return moves



def winner(board):

    row=[ ]

    WAYS_TO_WIN=(

                           (0,1,2)

                           ,(3,4,5)

                           ,(6,7,8)

                           ,(0,3,6)

                           ,(1,4,7)

                           ,(2,5,8)

                           ,(0,4,8)

                           ,(2,4,6))

    for row in WAYS_TO_WIN:

        if board[row[0]]==board[row[1]]==board[row[2]]  != EMPTY:

              winner=board[row[0]]

              return winner

    if EMPTY not in board:

        return TIE

    return None


def human_moves(board,human):

    legal=legal_moves(board)

    move=0

    while move   not in legal:

        move=ask_number("where will you move?(0-8)",0,9)

        if move not in legal:

            print("\n that square is already  taken,foolish human,choose another number\n")

        print ("fine")

    return move



def computer_move(board,computer,human):

    board = board[:]

    BEST_MOVES=(4,0,2,6,8,1,3,5,7)

    print("i shall take square number")

    for move in legal_moves(board):

        board[move]=computer

        if winner(board==computer):

              print (move)

              return move

              

    for move in legal_moves(board):

        board[move]=human

        if winner(board)==human:

              print(move)

              return move

        board[move]=EMPTY

    for move in BEST_MOVES:

        if move in legal_move(board):

              print(move)

              return move


def next_turn(turn):

    if turn==X:

        return O

    else:

        return X



def congrat_winner(the_winner,computer,human):

    if the_winner!=TIE:

        print(the_winner,"won\n")

    else:

        print("its a tie\n")

    if the_winner==computer:

        print("i m invncible")

    if the_winner==human:

        print("there's must be some mistake ")

    if the_winner==TIE:

        print("you must be lucky this time")

              

def main():

    display_instruction()

    go_first=ask_yes_no("do you require the first move?(y/n):")

    if go_first=="y":

        print("\nthen take the first move.you will need it")

        human=X

        computer=O

    else:

        print("\nyour bravery will be yours undoing...i will go first")

        computer=X

        human=O

    turn =X

    board=new_board()

    display_board(board)                        


    while  not  winner(board):

         if turn==human:

             move=human_moves(board,human)

             board[move] = human

         else:

             move=computer_move(board,computer,human)

             board[move] = computer

         display_board(board)

         turn=next_turn(turn)

    the_winner=winner(board)

    congrat_winner(the_winner,computer,human)

main()

input("\n\nPress the enter key to quit")

Avatar
Discard