class Connect4Game: def __init__(self, num_rows, num_columns, winSize): self.board = Board(num_rows, num_columns, winSize) self.isPlayer1 = True def play(self): win = lambda x:sys.stdout.write('\nPlayer {} is the winner. Congratulations!\n'.format(x)) self.board.createBoard() while self.board.noWinner: x = self.getInput() if x == -1: self.save() elif x == -2: self.load() else: self.board.selectToken(x, self.getPlayer()) self.switchPlayer() winner = self.board.winner win(winner) def getPlayer(self): if self.isPlayer1: return 1 else: return 2 def switchPlayer(self): if self.isPlayer1: self.isPlayer1 = False else: self.isPlayer1 = True def getInput(self): self.board.createBoard() x = input('Enter a Column Number(-1 for save, -2 for load):\t') return x def save(self): filename = raw_input ('Input filename:\t') with open(filename, 'wb') as output: pickle.dump(self.board, output, pickle.HIGHEST_PROTOCOL) def load(self): filename = raw_input('Input filename:\t') with open(filename, 'rb') as ip: self.board = pickle.load(ip) self.getPlayerFromBoard() def getPlayerFromBoard(self): player = self.board.getPlayer() if player == 1: self.isPlayer1 = True else: self.isPlayer1 = False def testBoard(self): sys.stdout.write('{}'.format(self.board.get(1,1)))