324Fermer326
EthanielLe 26/11/2004 à 18:20
Voici le code de l'interface link pour les programmes en TI-Basic (commenté, en plus eekpartie est finie ! ©©© on efface éventuellement les variables qui ne servent plus EndPrgm
, alors profitez-en !), avec quelques sections à compléter par vos soins (marquées par ©©©) :IA()
Prgm

©©© on demande à l'utilisateur si l'IA est le joueur 1 ou 2 (variable num_play)
© il faut lancer le joueur 1 avant le joueur 2 pour la synchronisation

If num_play=1 Then
 GetCalc colonne © on attend que le joueur 2 soit prêt
 ©©© on teste éventuellement si colonne vaut bien 0 (facultatif)
 init() © sous-programme d'initialisation qui prépare tout ce qu'il faut pour commencer une partie
        © (grille vide, matrices de pré-traitement, etc.)
 calcul() © calcul du premier demi-coup de la partie
Else
 init() © initialisation
 0->colonne © pour prévenir le joueur 1 que l'on est prêt
EndIf

While colonne<8
 SendCalc colonne © on envoie à l'adversaire le coup que l'on a décidé de jouer
 GetCalc colonne © on attend la réponse de l'adversaire
 check() © on vérifie le demi-coup adverse
EndWhile

© la 
check()
Prgm

If colonne>7 Then © l'adversaire dit que la partie est finie (colonne vaut 8, 9 ou 10)
 18-colonne->colonne © si un joueur gagne, l'autre perd, et réciproquement ...
 SendCalc colonne © on annonce à l'adversaire son résultat pour accuser réception
 Return © on a toujours colonne>7, donc on sortira bien de la boucle While
EndIf

©©© si on voit que l'adversaire vient de gagner
 8->colonne © l'adversaire gagne, la partie est finie
 SendCalc colonne © on le lui dit
 GetCalc colonne © on attend l'accusé de réception de fin de partie
 Return © l'accusé de réception se fait avec colonne=10, donc on sortira bien de la boucle While

©©© si on voit que l'adversaire vient de remplir la 42e case
  © (sans gagner, forcément, sinon on serait dans le cas précédent)
 9->colonne © match nul, la partie est finie
 SendCalc colonne © on le lui dit
 GetCalc colonne © on attend l'accusé de réception de fin de partie
 Return © l'accusé de réception se fait avec colonne=9, donc on sortira bien de la boucle While

©©© si on voit que l'adversaire vient de jouer un coup invalide (colonne déjà pleine, etc.)
 10->colonne © l'adversaire perd, la partie est finie
 SendCalc colonne © on le lui dit
 GetCalc colonne © on attend l'accusé de réception de fin de partie
 Return © l'accusé de réception se fait avec colonne=8, donc on sortira bien de la boucle While

calcul() © la partie n'est pas finie, on peut donc déterminer le prochain demi-coup à jouer

EndPrgm
Les fonctions init() et calcul() correspondent au coeur de votre IA, je vous laisse donc vous débrouiller avec hehe !
L'IA se lance avec IA() (sans blague roll !).
Je pense que la conversion en C ne vous posera pas vraiment de problème, et si quelqu'un la fait et la poste ici, je pense que tout le monde sera content grin !

@++