import os
from threading import Thread,Lock
mutex = Lock()
wins = [0,0]
os.system("clear")
board= ["|"," ","A"," ","|"," ","B"," ","|"," ","C"," ","|","|","_","_","_","|","_","_","_","|","_","_","_", "|","|"," ","D"," ","|"," ","E"," ","|"," ","F"," ","|","|","_","_","_","|","_","_","_","|","_","_","_", "|","|"," ","G"," ","|"," ","H"," ","|"," ","I"," ","|","|","_","_","_","|","_","_","_","|","_","_","_", "|"]
spots = {"A":2, "B":6, "C":10, "D":28, "E":32, "F":36, "G":54, "H":58, "I":62}
finishes = ["abc","def","ghi","adg","beh","cfi","aei","ceg"]
cont = True
def reset_board():
for letter in spots.keys():
board[spots[letter]] = letter
def starter(cont):
builder()
cont = True
pl1_turn = True
while cont:
print(f"\nWins\nP1: {wins[0]}\nP2: {wins[1]}")
if pl1_turn:
place = input("\n\nPlayer 1: ").upper()
p = pl1
pl1_turn = not pl1_turn
else:
place = input("\n\nPlayer 2: ").upper()
p = pl2
pl1_turn = True
os.system("clear")
builder(place, p)
def winer(p1, p2,cont):
while cont:
for comb in finishes:
a,b,c = list(comb.upper())
A,B,C = board[spots[a]], board[spots[b]],board[spots[c]]
if A==B and B==C:
mutex.acquire()
if A == p1:
print("Player1 Won")
wins[0] = wins[0]+1
else:
print("Player2 Won")
wins[1] = wins[1]+1
print("\ngame over")
reset_board()
mutex.release()
def sign_chooser():
player1 = input("\n\nPlayer1 X or O? ").upper()
if player1 == "X":
player2 = "O"
elif player1 == "O":
player2 = "X"
else:
os.system("clear")
builder()
print("\nPlease X or O only")
return sign_chooser()
return player1, player2
def builder(cell=None, player=None):
if cell== "RS":
reset_board()
try:
if cell and board[spots[cell]] != "X" and board[spots[cell]] != "O":
board[spots[cell]] = player
except KeyError:
print("Enter a valid letter place")
os.system("clear")
count = 0
for i, x in enumerate(board):
if count%13 == 0:
print("\n")
print(x, end="")
count+=1
pl1, pl2 = sign_chooser()
t1 = Thread(target=winer, args=[pl1, pl2, cont])
t2 = Thread(target=starter, args=[cont])
t =[t1,t2]
for th in t:
th.start()
from threading import Thread,Lock
mutex = Lock()
wins = [0,0]
os.system("clear")
board= ["|"," ","A"," ","|"," ","B"," ","|"," ","C"," ","|","|","_","_","_","|","_","_","_","|","_","_","_", "|","|"," ","D"," ","|"," ","E"," ","|"," ","F"," ","|","|","_","_","_","|","_","_","_","|","_","_","_", "|","|"," ","G"," ","|"," ","H"," ","|"," ","I"," ","|","|","_","_","_","|","_","_","_","|","_","_","_", "|"]
spots = {"A":2, "B":6, "C":10, "D":28, "E":32, "F":36, "G":54, "H":58, "I":62}
finishes = ["abc","def","ghi","adg","beh","cfi","aei","ceg"]
cont = True
def reset_board():
for letter in spots.keys():
board[spots[letter]] = letter
def starter(cont):
builder()
cont = True
pl1_turn = True
while cont:
print(f"\nWins\nP1: {wins[0]}\nP2: {wins[1]}")
if pl1_turn:
place = input("\n\nPlayer 1: ").upper()
p = pl1
pl1_turn = not pl1_turn
else:
place = input("\n\nPlayer 2: ").upper()
p = pl2
pl1_turn = True
os.system("clear")
builder(place, p)
def winer(p1, p2,cont):
while cont:
for comb in finishes:
a,b,c = list(comb.upper())
A,B,C = board[spots[a]], board[spots[b]],board[spots[c]]
if A==B and B==C:
mutex.acquire()
if A == p1:
print("Player1 Won")
wins[0] = wins[0]+1
else:
print("Player2 Won")
wins[1] = wins[1]+1
print("\ngame over")
reset_board()
mutex.release()
def sign_chooser():
player1 = input("\n\nPlayer1 X or O? ").upper()
if player1 == "X":
player2 = "O"
elif player1 == "O":
player2 = "X"
else:
os.system("clear")
builder()
print("\nPlease X or O only")
return sign_chooser()
return player1, player2
def builder(cell=None, player=None):
if cell== "RS":
reset_board()
try:
if cell and board[spots[cell]] != "X" and board[spots[cell]] != "O":
board[spots[cell]] = player
except KeyError:
print("Enter a valid letter place")
os.system("clear")
count = 0
for i, x in enumerate(board):
if count%13 == 0:
print("\n")
print(x, end="")
count+=1
pl1, pl2 = sign_chooser()
t1 = Thread(target=winer, args=[pl1, pl2, cont])
t2 = Thread(target=starter, args=[cont])
t =[t1,t2]
for th in t:
th.start()