• # Intelligence certes mais artificielle quand même....

    Posté par . En réponse au message ia d'échec.... Évalué à 1.

    Je sais qu'il existe au échecs une facon de compter les points en fonction: des positions des pièces, et des pièces restante en jeu.

    A partir de là, c'est "facile", tu comptes pour toutes les possibilités de mouvement (en déplacant chaque pièce dans toutes les directions) la valeur finale de ce mouvement, puis, pour chacune d'elle, tu calcules la meilleure position adverse.
    Tu gardes en mémoire la différence de point la plus élevée (en gros, cela veux dire que tu as une amélioration de ta situation). Tu mémorise donc ce premier enchaînement de coup (un pour toi, un pour lui), et tu continue avec cette position théorique, sur un, deux, ou trois coup.

    Ca c'est le principe de base.

    Ensuite, il peux être intéressant de mémoriser d'autres coups (les 3 meileurs par exemple, le moins bon également) au départ pour explorer d'autres solutions.

    En algo, ca donne:

    Score = calculDuScore() //Le score au début du tour
    ScoreAdv = 0;
    For Each pièces
    For Each mouv = mouvement possible
    ScoreTmp = calculDuScore()
    Si ScoreTmp < Score //Régression du score
    Next
    For Each piècesAdverse
    For Each MouvAdv = mouvement possible
    ScoreTmp2 = calculDuScore()
    Si ScoreTmp2 > ScoreAdv
    ScoreAdv = ScoreTmp2
    MouvMem = MouvAdv
    FinSi
    FinFor
    FinFor
    ScoreTmp = ScoreTmp - ScoreAdv
    Si ScoreTmp > Score
    MouvList = MouvList + (Mouv + MouvAdv + ScoreTmp)
    FinSi
    FinFor
    BestMouv = MaxScore(MouvList)

    Voilà pour calculer le Meilleur Mouvement. PLus qu'à faire une fonction Anticiper() qui calcule plusieurs coup d'affilée, et voilou :)