Pollux a écrit :
C'est vrai que, indépendamment de la triche (dont on a un peu rien à foutre, quoique un bug involontaire dans une IA pour *vraiment* faire chier l'autre), le link pourrait bien être la manière la plus simple de faire... (avec cmd_sendcalc)
Ca oblige donc les IA à disposer d'un module d'envoi/réception des données et d'affichage graphique, en plus de la fonction de base qui est de décider du coup à jouer en fonction de l'état de la partie.
Ethaniel & squalyl> bien sûr que le pb n'est pas de créer ou modifier des variables tios
C'est écrire *toutes* les vars C du prog dans les vars tios qui est chiant...
Et ben voilà,
enfin la réponse que j'attendais !
**Toutes** ... il ne faut pas exagérer, tout de même : elles sont au nombre de 2,
colonne et
etatpart (3 en comptant
nom qui n'intervient qu'au tout début et tout à la fin).
La variable
etatpart, ou tout autre nom qui vous agréera (
evolpart serait ainsi plus adapté pour mon deuxième exemple), pourra par exemple être :
- une matrice 6x7 contenant des 0 (cases vides), des 1 (cases où on a joué) et des -1 (ou des 2, ou des 8, cases où a joué l'adversaire)
- une matrice 6x7 avec des 0 dans les cases vides, la valeur 1 dans la case où a été joué le premier demi-coup, la valeur 2 dans celle où a été joué le deuxième demi-coup, etc.
- une liste de 42 valeurs (juxtaposition des lignes ou des colonnes) correspondant à un des deux cas précédents
- une liste de 42 valeurs contenant des nombre entre 0 et 7 (le premier élément contient la colonne du premier demi-coup, le deuxième élément pour le deuxième demi-coup, etc., et des 0 pour les demi-coups non encore joués)
- n'importe quelle autre représentation plus ou moins alambiquée de l'état ou de l'évolution de la partie
Franchement, je ne pense pas que ce soit la mer à boire ...
A vous lire, j'ai l'impression que vous voulez enregistrer des ko de données, par exemple pour repartir à l'instruction Asm exacte où vous vous en étiez arrêté si c'était possible.
Pourtant, la simple donnée de l'état ou de l'évolution de la partie (
etatpart ou
evolpart) est amplement suffisant pour décider où jouer.
Imaginez par exemple deux personnes commençant une partie, puis à un moment donné, un joueur quitte la table, son adversaire joue, puis vous remplacez le joueur qui vient de partir.
Tout ce que vous avez, c'est une grille à moitié remplie (cas de la première matrice donnée en exemple, qui donne l'état de la partie à un moment donné), et pourtant, vous pouvez jouer sans problème.
Si vous le souhaitez, vous pouvez même avoir l'historique des demi-coups joués (cas de la seconde matrice donnée en exemple, qui donne l'évolution de la partie jusqu'à un moment donné) pour deviner si le joueur que vous avez remplacé avait commencé à élaborer une stratégie, afin que vous puissiez la mener à bout.
Et si ça se trouve, le joueur précédent aura laissé un petit bout de papier avec écrit dessus quelques idées de startégies possibles selon ce que l'adversaire allait jouer (vous n'êtes pas limité à
colonne et
etatpart, donc même si
c'est chiant, vous pouvez gérer une troisième variable TI de base, ça ne doit pas être le bout du monde).
Ce changement de joueur est strictement équivalent à une IA qui, une fois son demi-coup joué, s'arrête, avant d'être relancée lorsque son tour revient.
Et ne venez pas me dire qu'un humain et une IA ne sont pas comparables en intelligence : le jeu de Puissance 4 est suffisamment simple pour que n'importe quel algorithme basique se débrouille très bien (EthanIA est d'ailleurs un algorithme très basique, hyper-optimisé certes, mais basique tout de même, et il se débrouille très bien rien qu'avec l'état de la partie, il ne garde même pas d'historique des demi-coups joués (quand je vous dis qu'il est basique ...)).
D'ailleurs, je suis à peu près sûr que vos algorithmes, ou du moins leur noyau, se contre-fichent pas mal de prendre une partie en cours, tant qu'ils connaissent l'état ou l'évolution de celle-ci ...
Si vous avez une récrimination majeure à faire concernant cette méthode du
je prends la partie en cours de route, je suis toute ouïe.
Je ne commente pas les autres posts, ils sont trop techniques pour moi ...
@++