Bonsoir à tous !
Je vous expose mon problème, en espérant que quelques irréductibles travaillent encore en Pascal et n'ont pas encore tous migré vers le C/C++.
Tout d'abord, le fait que je code en Pascal vient que c'est le seul langage qui est disponible pour l'option info en maths spé dans mon lycée. Du coup, vu que j'ai bien plus manipulé le pascal que le C, j'ai décidé de continuer dans cette voie(mon prof pouvant en plus m'aider).
Peut être que vous le savez, mais les secondes années de classe préparatoire doivent rendre un dossier sur lequel ils ont travaillé toute l'année et qu'ils doivent présenter devant un jury.
J'ai choisi de travailler sur un puissance 4, et plus précisément sur la partie IA du puissance 4. Le puissance 4 étant un bon compromis difficulté/intérêt. Je n'ai en effet que peu de temps à m'y consacrer et viser plus haut aurait sans doute compromis mes chances de réussite !
Mon programme est dorénavant fini, ou presque. Il me reste des améliorations à apporter et c'est pour cela que je mobilise votre aide !
En effet, mon IA joue et arrive à me battre de temps en temps. Mais je la trouve très très mal optimisée.
Je m'explique :
-Son plus gros défaut reste que dans certains cas, où elle peut aligner 4 jetons verticalement en 2 coups alors que moi en 1 coup je peux gagner, elle va chercher ce coup et ne va pas tenter de bloquer le mien =>victoire facile
-L'autre soucis est le coup banal qui consiste à aligner 3 jetons au milieu pour pouvoir gagner soit en posant un jeton à droite ou à gauche. Je pense l'avoir contré, du moins en partie, en forçant l'ordinateur à poser un jeton dans une colonne au hasard (au lieu de toujours jouer dans la 1ère colonne)
Je pense que ce le problème majeur vient de ma fonction d'évaluation. Elle n'est finalement pas très poussée. Pour un coup qui aligne 1 jeton c'est 1 point, 2:10 points, 3:100 points et 4:1000 points
Je fais la somme de tous les scores pour chaque jeton de ma grille et soustrait au score de chaque jeton de la grille pour mon adversaire.
Après un algorithme min_max se charge de prendre soit le score le plus bas si c'est au tour de l'humain de jouer ou le plus haut si c'est à l'IA de jouer.
C'est assez long à expliquer mais je pense que cet algorithme est très connu du coup j'espère que vous comprendrez.
Je ne sais pas comment modifier mon programme de tel sorte que le 1er problème soit résolu... Si vous avez besoin de mon code source, je peux vous le fournir, je l'ai annoté de façon à ce qu'on puisse s'y retrouver facilement.
En tout cas je vous remercie d'avance pour votre aide et bonne soirée !
Partager