tic tac toe computer vs human random

 # 3) tic tac toe computer vs human random



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)
    if player == 2:
        print("Player 2 it's your turn: ")
        print("You can pick any remaining empty places as shown below: ")
        print(selection)
        row = int(input("Enter Row no: "))
        col = int(input("Enter Col no: "))
        board[row][col] = player
        return 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
    if win:
        return win
    win = True # again make win <- true .. for checking secondary diagonal
    # if win:
    #     for x in range(len(board)):
    #         y = len(board) - 1 - x
    #         if board[x, y] != player:
    #             win = False

    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():
    board, winner, counter = create_board(), 0, 1
    print(board)
    sleep(2)

    while winner == 0:
        for player in [1, 2]:
            board = random_place(board, player)
            print("Board after " + str(counter) + " move")
            print(board)
            sleep(2)
            counter += 1
            winner = evaluate(board)
            if winner != 0:
                break
    return (winner)


print("Winner is: " + str(play_game()))

Comments

Popular posts from this blog

what is Machenical Engineering

PHOTO ( CHINESE LADKA)

Arithmatic operations, factorial of a number, while loop, prime number, etc