Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def board(a,b,c,d,e,f,g,h,i):
- r1 = f" {a} | {b} | {c} "
- r2 = f" {d} | {e} | {f} "
- r3 = f" {g} | {h} | {i} "
- hori = "------------------"
- table = [r1,r2,r3]
- for i in range(len(table)):
- print(table[i])
- if i < (len(table)-1):
- print(hori)
- defaultboard = [i for i in range(1,10)]
- board(*defaultboard)
- total_x = 0
- total_o = 0
- def player():
- global marker
- while True:
- print('\nChoose X or O to play, choose A to quit the game: ')
- choise = input()
- if choise.upper() == 'X':
- print("You have chosen X to play, choose the field")
- marker = 'X'
- return marker
- elif choise.upper() == 'O':
- print("You have chosen O to play, choose the field")
- marker = 'O'
- return marker
- if choise.upper() == 'A':
- print("You have chosen to quit the game")
- marker = 'A'
- return marker
- def x_player(marker):
- global used
- global l_marker
- used = []
- while True:
- if marker == 'A':
- break
- try:
- fchosen = input("Choose the field from 1 to 9: ")
- if int(fchosen) in range(1,10) and str(defaultboard[int(fchosen)-1]).isdecimal():
- defaultboard[int(fchosen)-1] = marker
- used.append(defaultboard[int(fchosen)-1])
- print("\n")
- board(*defaultboard)
- if win_check(defaultboard, marker) == True:
- break
- if marker == 'X':
- marker = 'O'
- l_marker = marker
- elif marker == 'O':
- marker = 'X'
- l_marker = marker
- print(f"\nPlayer {marker} turn: ")
- except ValueError:
- print("Choose empty field in range from 1 to 9 - with number")
- def win_check(defaultboard, marker):
- global checker
- global draw
- draw = False
- checker = False
- if defaultboard[:3] == ['X','X','X'] or defaultboard[:3] == ['O','O','O']:
- print(f"\nPlayer {marker} has won")
- checker = True
- return True
- elif defaultboard[3:6] == ['X','X','X'] or defaultboard[3:6] == ['O','O','O']:
- print(f"\nPlayer {marker} has won")
- checker = True
- return True
- elif defaultboard[6:] == ['X','X','X'] or defaultboard[6:] == ['O','O','O']:
- print(f"\nPlayer {marker} has won")
- checker = True
- return True
- elif defaultboard[::3] == ['X','X','X'] or defaultboard[::3] == ['O','O','O']:
- print(f"\nPlayer {marker} has won")
- checker = True
- return True
- elif defaultboard[1::3] == ['X','X','X'] or defaultboard[1::3] == ['O','O','O']:
- print(f"\nPlayer {marker} has won")
- checker = True
- return True
- elif defaultboard[2::3] == ['X','X','X'] or defaultboard[2::3] == ['O','O','O']:
- print(f"\nPlayer {marker} has won")
- checker = True
- return True
- elif defaultboard[::4] == ['X','X','X'] or defaultboard[::4] == ['O','O','O']:
- print(f"\nPlayer {marker} has won")
- checker = True
- return True
- elif defaultboard[2:8:2] == ['X','X','X'] or defaultboard[2:8:2] == ['O','O','O']:
- print(f"\nPlayer {marker} has won")
- checker = True
- return True
- elif len(used) == 9:
- print("\nNobody wins, draw")
- checker = True
- draw = True
- return True
- while True:
- x_player(player())
- if marker == 'A':
- break
- if checker == True:
- if l_marker == 'X' and draw == False:
- total_x += 1
- elif l_marker == 'O' and draw == False:
- total_o += 1
- print(f"\nX won {total_x} times, O won {total_o} times")
- print("Would you like to play again? 'Y' to replay, put any character to quit")
- replay = input()
- if replay.upper() == 'Y':
- checker = False
- defaultboard = [i for i in range(1,10)]
- board(*defaultboard)
- continue
- else:
- print("Thanks for playing - see you again")
- break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement