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