from datetime import datetime, time from GameMap import * from Player import * class GameLogic(): def __init__(self, gameMap, playerList, winRowLength = 3, individualMoves = 1): self.gameMap = gameMap self.playerList = playerList self.winRowLength = winRowLength self.individualMoves = individualMoves self.score = 0 self.wait_for_input() def wait_for_input(self): pass def check_who_win(self): # Should have used vectors instead of committing tuples mithosis, # but whatever, it works anyway, and if it works, why code more # for nothing? for player in self.playerList: markList = player.get_markList() # since every mark is checked, there's no need to go into # opposite directions, so, there is (0,1) but no (0, -1). # This twice decreases the amount of computation needed. # maybe TODO - Optimize even more by preventing repeated calculations. directions = ((0, 1), (1, 0), (1,1), (-1, 1)) for mark in markList: for direction in directions: if self.is_line(markList, mark, direction): return player return False def is_line(self, markList, mark, direction): # INTERNAL, I guess. for i in range(1, self.winRowLength): seeked = (mark[0] + direction[0] * i, mark[1] + direction[1] * i) if seeked in markList: continue else: return False return True def get_time(self): return str(datetime.now() - self.startTime) def reset_time(self): self.startTime = datetime.now() def get_score(self): return self.score