tic-far-toe/GameLogic.py

46 lines
1.6 KiB
Python
Raw Normal View History

from GameMap import *
from Player import *
from Timer import *
2022-07-25 10:33:08 +00:00
class GameLogic():
2022-08-15 04:26:45 +00:00
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.
2022-08-07 06:32:16 +00:00
# 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