Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TTTBoard:
- def __init__(self):
- #self.board = ['*', '*', '*', '*', '*', '*', '*', '*', '*']
- self.board = 9*['*']
- # self.board = []
- # for i in range(9):
- # self.board.append('*')
- #self.board = ['*' for i in range(9)]
- def __str__(self):
- s = ""
- for x in [0,3,6]:
- s += self.board[x] + " " + self.board[x+1] + " " + self.board[x+2] + "\n"
- return s
- def makeMove(self, player, pos):
- #player is "X" or "O"
- #pos is a number (hopefully 0-8)
- if pos < 0 or pos > 8:
- return False
- else:
- if self.board[pos] == "*":
- self.board[pos] = player
- return True
- else:
- return False
- def hasWon(self, player):
- if self.board[0] and self.board[1] and self.board[2] == player:
- return True
- elif self.board[3] and self.board[4] and self.board[5] == player:
- return True
- elif self.board[6] and self.board[7] and self.board[8] == player:
- print myB.hasWon("X")
- print myB.hasWon("O")
- return True
- elif self.board[0] and self.board[3] and self.board[6] == player:
- return True
- elif self.board[1] and self.board[4] and self.board[7] == player:
- return True
- elif self.board[2] and self.board[5] and self.board[8] == player:
- return True
- elif self.board[0] and self.board[4] and self.board[8] == player:
- return True
- elif self.board[2] and self.board[4] and self.board[6] == player:
- return True
- else:
- return False
- def gameOver(self):
- if self.hasWon("X") or self.hasWon("O"):
- return True
- elif "*" not in self.board:
- return True
- elif "*" in self.board:
- return False
- else:
- return False
- # def clear(self):
- # if self.gameOver() == True:
- # self.board = 9*['*']
- def playTicTacToe():
- """uses our TTTBoard class to play tic tac toe with two players"""
- myB = TTTBoard()
- players = ["X", "O"]
- playerTurn = 0
- while not myB.gameOver():
- print myB
- iMove = input("Player " + players[playerTurn] + " what is your move? ")
- myB.makeMove(players[playerTurn], iMove)
- if playerTurn == 0:
- playerTurn = 1
- else:
- playerTurn = 0
- print "\nGame over!!!\n"
- print myB
- for i in [0,1]:
- if myB.hasWon(players[i]):
- print players[i] + " wins!"
- #Here are some tests. These are not at all exhaustive tests. You will DEFINITELY need
- # to write some more tests to make sure that your TTTBoard class is behaving properly.
- myB = TTTBoard()
- myB.makeMove("X", 8)
- myB.makeMove("O", 7)
- print myB
- assert myB.gameOver() == False
- myB.makeMove("X", 5)
- myB.makeMove("O", 6)
- myB.makeMove("X", 2)
- assert myB.hasWon("X") == True
- assert myB.hasWon("O") == False
- assert myB.gameOver() == True
- myB.clear()
- assert myB.gameOver() == False
- myB.makeMove("O", 3)
- myB.makeMove("O", 4)
- myB.makeMove("O", 5)
- assert myB.hasWon("X") == False
- assert myB.hasWon("O") == True
- assert myB.gameOver() == True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement