Advertisement
Guest User

Tic Tac Toe

a guest
Nov 9th, 2019
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.40 KB | None | 0 0
  1. def board(a,b,c,d,e,f,g,h,i):
  2.     r1 = f"  {a}  |  {b}  |  {c}  "
  3.     r2 = f"  {d}  |  {e}  |  {f}  "
  4.     r3 = f"  {g}  |  {h}  |  {i}  "
  5.     hori = "------------------"
  6.     table = [r1,r2,r3]
  7.    
  8.     for i in range(len(table)):
  9.         print(table[i])
  10.         if i < (len(table)-1):
  11.             print(hori)
  12.  
  13. defaultboard = [i for i in range(1,10)]
  14. board(*defaultboard)
  15. total_x = 0
  16. total_o = 0
  17.  
  18. def player():
  19.     global marker
  20.    
  21.     while True:
  22.         print('\nChoose X or O to play, choose A to quit the game: ')
  23.         choise = input()
  24.         if choise.upper() == 'X':
  25.             print("You have chosen X to play, choose the field")
  26.             marker = 'X'
  27.             return marker
  28.        
  29.         elif choise.upper() == 'O':
  30.             print("You have chosen O to play, choose the field")
  31.             marker = 'O'
  32.             return marker
  33.        
  34.         if choise.upper() == 'A':
  35.             print("You have chosen to quit the game")
  36.             marker = 'A'
  37.             return marker
  38.        
  39. def x_player(marker):
  40.     global used
  41.     global l_marker
  42.     used = []
  43.    
  44.     while True:
  45.         if marker == 'A':
  46.             break
  47.         try:
  48.             fchosen = input("Choose the field from 1 to 9: ")
  49.             if int(fchosen) in range(1,10) and str(defaultboard[int(fchosen)-1]).isdecimal():
  50.                 defaultboard[int(fchosen)-1] = marker
  51.                 used.append(defaultboard[int(fchosen)-1])
  52.                 print("\n")
  53.                 board(*defaultboard)
  54.                 if win_check(defaultboard, marker) == True:
  55.                     break
  56.                 if marker == 'X':
  57.                     marker = 'O'
  58.                     l_marker = marker
  59.                 elif marker == 'O':
  60.                     marker = 'X'
  61.                     l_marker = marker
  62.                 print(f"\nPlayer {marker} turn: ")
  63.  
  64.         except ValueError:
  65.             print("Choose empty field in range from 1 to 9 - with number")
  66.  
  67. def win_check(defaultboard, marker):
  68.     global checker
  69.     global draw
  70.    
  71.     draw = False
  72.     checker = False
  73.     if defaultboard[:3] == ['X','X','X'] or defaultboard[:3] == ['O','O','O']:
  74.             print(f"\nPlayer {marker} has won")
  75.             checker = True
  76.             return True
  77.    
  78.     elif defaultboard[3:6] == ['X','X','X'] or defaultboard[3:6] == ['O','O','O']:
  79.             print(f"\nPlayer {marker} has won")
  80.             checker = True
  81.             return True
  82.  
  83.     elif defaultboard[6:] == ['X','X','X'] or defaultboard[6:] == ['O','O','O']:
  84.             print(f"\nPlayer {marker} has won")
  85.             checker = True
  86.             return True
  87.  
  88.     elif defaultboard[::3] == ['X','X','X'] or defaultboard[::3] == ['O','O','O']:
  89.             print(f"\nPlayer {marker} has won")
  90.             checker = True
  91.             return True
  92.  
  93.     elif defaultboard[1::3] == ['X','X','X'] or defaultboard[1::3] == ['O','O','O']:
  94.             print(f"\nPlayer {marker} has won")
  95.             checker = True
  96.             return True
  97.  
  98.     elif defaultboard[2::3] == ['X','X','X'] or defaultboard[2::3] == ['O','O','O']:
  99.             print(f"\nPlayer {marker} has won")
  100.             checker = True
  101.             return True
  102.  
  103.     elif defaultboard[::4] == ['X','X','X'] or defaultboard[::4] == ['O','O','O']:
  104.             print(f"\nPlayer {marker} has won")
  105.             checker = True
  106.             return True
  107.  
  108.     elif defaultboard[2:8:2] == ['X','X','X'] or defaultboard[2:8:2] == ['O','O','O']:
  109.             print(f"\nPlayer {marker} has won")
  110.             checker = True
  111.             return True
  112.  
  113.     elif len(used) == 9:
  114.             print("\nNobody wins, draw")
  115.             checker = True
  116.             draw = True
  117.             return True
  118.  
  119. while True:
  120.     x_player(player())
  121.     if marker == 'A':
  122.         break
  123.     if checker == True:
  124.         if l_marker == 'X' and draw == False:
  125.             total_x += 1
  126.         elif l_marker == 'O' and draw == False:
  127.             total_o += 1
  128.         print(f"\nX won {total_x} times, O won {total_o} times")
  129.         print("Would you like to play again? 'Y' to replay, put any character to quit")
  130.         replay = input()
  131.         if replay.upper() == 'Y':
  132.             checker = False
  133.             defaultboard = [i for i in range(1,10)]
  134.             board(*defaultboard)
  135.             continue
  136.  
  137.         else:
  138.             print("Thanks for playing - see you again")
  139.             break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement