Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. class TTTBoard:
  2. def __init__(self):
  3. #self.board = ['*', '*', '*', '*', '*', '*', '*', '*', '*']
  4. self.board = 9*['*']
  5. # self.board = []
  6. # for i in range(9):
  7. # self.board.append('*')
  8. #self.board = ['*' for i in range(9)]
  9.  
  10. def __str__(self):
  11. s = ""
  12. for x in [0,3,6]:
  13. s += self.board[x] + " " + self.board[x+1] + " " + self.board[x+2] + "\n"
  14. return s
  15.  
  16. def makeMove(self, player, pos):
  17. #player is "X" or "O"
  18. #pos is a number (hopefully 0-8)
  19. if pos < 0 or pos > 8:
  20. return False
  21. else:
  22. if self.board[pos] == "*":
  23. self.board[pos] = player
  24. return True
  25. else:
  26. return False
  27.  
  28. def hasWon(self, player):
  29. if self.board[0] and self.board[1] and self.board[2] == player:
  30. return True
  31. elif self.board[3] and self.board[4] and self.board[5] == player:
  32. return True
  33. elif self.board[6] and self.board[7] and self.board[8] == player:
  34. print myB.hasWon("X")
  35. print myB.hasWon("O")
  36. return True
  37. elif self.board[0] and self.board[3] and self.board[6] == player:
  38. return True
  39. elif self.board[1] and self.board[4] and self.board[7] == player:
  40. return True
  41. elif self.board[2] and self.board[5] and self.board[8] == player:
  42. return True
  43. elif self.board[0] and self.board[4] and self.board[8] == player:
  44. return True
  45. elif self.board[2] and self.board[4] and self.board[6] == player:
  46. return True
  47. else:
  48. return False
  49.  
  50. def gameOver(self):
  51. if self.hasWon("X") or self.hasWon("O"):
  52. return True
  53. elif "*" not in self.board:
  54. return True
  55. elif "*" in self.board:
  56. return False
  57. else:
  58. return False
  59.  
  60.  
  61. # def clear(self):
  62. # if self.gameOver() == True:
  63. # self.board = 9*['*']
  64.  
  65.  
  66.  
  67.  
  68.  
  69. def playTicTacToe():
  70. """uses our TTTBoard class to play tic tac toe with two players"""
  71. myB = TTTBoard()
  72. players = ["X", "O"]
  73. playerTurn = 0
  74. while not myB.gameOver():
  75. print myB
  76. iMove = input("Player " + players[playerTurn] + " what is your move? ")
  77. myB.makeMove(players[playerTurn], iMove)
  78. if playerTurn == 0:
  79. playerTurn = 1
  80. else:
  81. playerTurn = 0
  82.  
  83. print "\nGame over!!!\n"
  84. print myB
  85. for i in [0,1]:
  86. if myB.hasWon(players[i]):
  87. print players[i] + " wins!"
  88.  
  89. #Here are some tests. These are not at all exhaustive tests. You will DEFINITELY need
  90. # to write some more tests to make sure that your TTTBoard class is behaving properly.
  91. myB = TTTBoard()
  92. myB.makeMove("X", 8)
  93. myB.makeMove("O", 7)
  94. print myB
  95. assert myB.gameOver() == False
  96.  
  97. myB.makeMove("X", 5)
  98. myB.makeMove("O", 6)
  99. myB.makeMove("X", 2)
  100.  
  101. assert myB.hasWon("X") == True
  102. assert myB.hasWon("O") == False
  103. assert myB.gameOver() == True
  104.  
  105. myB.clear()
  106.  
  107. assert myB.gameOver() == False
  108.  
  109. myB.makeMove("O", 3)
  110. myB.makeMove("O", 4)
  111. myB.makeMove("O", 5)
  112.  
  113. assert myB.hasWon("X") == False
  114. assert myB.hasWon("O") == True
  115. assert myB.gameOver() == True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement