import math

from display import YELLOW, RED
from engine import GameEngine
from agents.human_agent import HumanAgent
from agents.minimax_agent import MiniMaxAgent
from agents.random_agent import RandomAgent
from player1 import Player1
from player2 import Player2

if __name__ == "__main__":

    engine = GameEngine(YELLOW, RED)
    engine.init_display()

    # TODO: Separate AgentGlobalParams (HyperParams?) and AgentTurnParams

    human_agent = HumanAgent(params={'display': engine.display})
    random_agent = RandomAgent()
    minimax_agent = MiniMaxAgent(params={
        'depth': 5,
        'alpha': -math.inf,
        'beta': math.inf,
        'maximizingPlayer': True
    })

    human_player1 = Player1(human_agent, "Human 1")
    human_player2 = Player2(human_agent, "Human 2")
    minimax_player1 = Player1(minimax_agent, "MiniMax 1")
    minimax_player2 = Player2(minimax_agent, "MiniMax 2")
    random_player1 = Player1(random_agent, "Random 1")