def minMax(situation,player,game,depth):
    name=game['name']
    if name == 'othello':
        import othello as Game
    elif name == 'tic_tac_toe':
        import tictactoe as Game
    elif name =='nim_game':
        import nim_game as Game
    if Player.name(player)==COMPUTER_NAME:
        coeff=1
    else:
        coeff=-1
    next_player=changePlayer(player,game)
    if Game.isFinished(situation) or depth==0:
        #décomenter pour vérifier le résultat de la fonction d'évaluation
        #print(Game.evalFunction(situation,player,game)*coeff) 
        return Game.evalFunction(situation,player,game)*coeff,situation
    else:
        next_situation=Game.nextSituations(game, situation, player)
        res=None
        if Player.name(player)==COMPUTER_NAME:
            for sit in next_situation:
                temp =minMax(sit,next_player,game,depth-1)
                if res==None or temp!=None and res[0]<temp[0]:
                   res=temp
        else:
            for sit in next_situation:
                temp =minMax(sit,next_player,game,depth-1)
                if res==None or temp!=None and res[0]>temp[0]:
                    res=temp
        try:
            return res[0],sit
        except:
            print (res)
def minMaxFinal(situation,player,game):
    name=game['name']
    if name == 'othello':
        import othello as Game
    elif name == 'tic_tac_toe':
        import tictactoe as Game
    elif name =='nim_game':
        import nim_game as Game
    next_player=changePlayer(player,game)
    if Game.isFinished(situation):
        return (Game.evalFunction(situation,player),situation)
    else:
        next_situation=Game.nextSituations(game, situation, player)
        res=None
        if Player.name(player)==COMPUTER_NAME:
            for sit in next_situation:
                temp =minMaxFinal(sit,next_player,game)
                if res==None or temp!=None and res[0]<temp[0]:
                   res=temp
        else:
            for sit in next_situation:
                temp =minMaxFinal(sit,next_player,game)
                if res==None or temp!=None and res[0]>temp[0]:
                    res=temp
        try:
            return res[0],sit
        except:
            pass