Skip to content

Instantly share code, notes, and snippets.

@neerajvashistha
Created September 13, 2018 12:55
Show Gist options
  • Save neerajvashistha/eb92d8dcc98013f2094955bc64b8a8c3 to your computer and use it in GitHub Desktop.
Save neerajvashistha/eb92d8dcc98013f2094955bc64b8a8c3 to your computer and use it in GitHub Desktop.
TicTacToe just a fun game when i am bored
import numpy as np
import random
import time
import matplotlib.pyplot as plt
def create_board():
return np.zeros((3,3))
board = create_board()
def place(board, player, position):
if player < 3 or player > 0:
if board[position[0],position[1]] != 1 or board[position[0],position[1]] = 2
board[position[0],position[1]] = player
return board
place(board, 1, (0,0))
def possibilities(board):
x,y = np.where(board == 0)
rt= list()
for i,j in zip(x,y):
conj = (i,j)
rt.append(conj)
return rt
def random_place(board, player):
random_position = random.choice(possibilities(board))
board = place(board,player,random_position)
return board
def row_win(board,player):
for i in range(board.shape[0]):
if list(board[i]).count(player) == 3:
return True
else:
return False
def col_win(board,player):
for i in range(board.shape[1]):
if list(board[:,i]).count(player) == 3:
return True
else:
return False
def diag_win(board,player):
antidiagonal = np.diag(board[:, ::-1])
diagonal = np.diag(board)
if list(antidiagonal).count(player) == 3:
return True
else:
return False
if list(diagonal).count(player) == 3:
return True
else:
return False
def evaluate(board):
winner = 0
for player in [1, 2]:
if row_win(board,player):
winner = player
if col_win(board,player):
winner=player
if diag_win(board,player):
winner = player
if np.all(board != 0) and winner == 0:
winner = -1
return winner
def play_game():
board = create_board()
winner = 0
while winner == 0:
for player in [1,2]:
random_place(board,player)
winner = evaluate(board)
if winner!=0:
break;
return winner
x=[]
start=time.time()
for i in range(1000):
x.append(play_game())
stop=time.time()
print(stop-start)
plt.hist(x)
plt.show()
def play_strategic_game():
board, winner = create_board(), 0
board[1,1] = 1
while winner == 0:
for player in [2,1]:
random_place(board,player)
winner = evaluate(board)
if winner != 0:
break
return winner
import time
import matplotlib.pyplot as plt
x=[]
start=time.time()
for i in range(1000):
x.append(play_strategic_game())
stop=time.time()
print(stop-start)
plt.hist(x)
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment