Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. #Tic Tac Toe game in python
  2.  
  3. board = [' ' for x in range(10)]
  4.  
  5. def insertLetter(letter, pos):
  6. board[pos] = letter
  7.  
  8. def spaceIsFree(pos):
  9. return board[pos] == ' '
  10.  
  11. def printBoard(board):
  12. print(' | |')
  13. print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
  14. print(' | |')
  15. print('-----------')
  16. print(' | |')
  17. print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
  18. print(' | |')
  19. print('-----------')
  20. print(' | |')
  21. print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
  22. print(' | |')
  23.  
  24. def isWinner(bo, le):
  25. return (bo[7] == le and bo[8] == le and bo[9] == le) or (bo[4] == le and bo[5] == le and bo[6] == le) or(bo[1] == le and bo[2] == le and bo[3] == le) or(bo[1] == le and bo[4] == le and bo[7] == le) or(bo[2] == le and bo[5] == le and bo[8] == le) or(bo[3] == le and bo[6] == le and bo[9] == le) or(bo[1] == le and bo[5] == le and bo[9] == le) or(bo[3] == le and bo[5] == le and bo[7] == le)
  26.  
  27. def playerMove():
  28. run = True
  29. while run:
  30. move = input('Please select a position to place an \'X\' (1-9): ')
  31. try:
  32. move = int(move)
  33. if move > 0 and move < 10:
  34. if spaceIsFree(move):
  35. run = False
  36. insertLetter('X', move)
  37. else:
  38. print('Sorry, this space is occupied!')
  39. else:
  40. print('Please type a number within the range!')
  41. except:
  42. print('Please type a number!')
  43.  
  44.  
  45. def compMove():
  46. possibleMoves = [x for x, letter in enumerate(board) if letter == ' ' and x != 0]
  47. move = 0
  48.  
  49. for let in ['O', 'X']:
  50. for i in possibleMoves:
  51. boardCopy = board[:]
  52. boardCopy[i] = let
  53. if isWinner(boardCopy, let):
  54. move = i
  55. return move
  56.  
  57. cornersOpen = []
  58. for i in possibleMoves:
  59. if i in [1,3,7,9]:
  60. cornersOpen.append(i)
  61.  
  62. if len(cornersOpen) > 0:
  63. move = selectRandom(cornersOpen)
  64. return move
  65.  
  66. if 5 in possibleMoves:
  67. move = 5
  68. return move
  69.  
  70. edgesOpen = []
  71. for i in possibleMoves:
  72. if i in [2,4,6,8]:
  73. edgesOpen.append(i)
  74.  
  75. if len(edgesOpen) > 0:
  76. move = selectRandom(edgesOpen)
  77.  
  78. return move
  79.  
  80. def selectRandom(li):
  81. import random
  82. ln = len(li)
  83. r = random.randrange(0,ln)
  84. return li[r]
  85.  
  86.  
  87. def isBoardFull(board):
  88. if board.count(' ') > 1:
  89. return False
  90. else:
  91. return True
  92.  
  93. def main():
  94. print('Welcome to Tic Tac Toe!')
  95. printBoard(board)
  96.  
  97. while not(isBoardFull(board)):
  98. if not(isWinner(board, 'O')):
  99. playerMove()
  100. printBoard(board)
  101. else:
  102. print('Sorry, O\'s won this time!')
  103. break
  104.  
  105. if not(isWinner(board, 'X')):
  106. move = compMove()
  107. if move == 0:
  108. print('Tie Game!')
  109. else:
  110. insertLetter('O', move)
  111. print('Computer placed an \'O\' in position', move , ':')
  112. printBoard(board)
  113. else:
  114. print('X\'s won this time! Good Job!')
  115. break
  116.  
  117. if isBoardFull(board):
  118. print('Tie Game!')
  119.  
  120. while True:
  121. answer = input('Do you want to play again? (Y/N)')
  122. if answer.lower() == 'y':
  123. print('-----------------------------------')
  124. main()
  125. else:
  126. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement