Attention : ce jeu n'a pas grand chose à voir avec Puissance 4...
Il se rapproche plus d'un morpion géant...


Dans ce jeu, 2 joueurs (donc 2 programmes) vont s'affronter.

On dispose d'un plateau de jeu carré de 20 cases sur 20 cases.
A chaque tour de jeu un joueur place un pion de sa couleurs sur le plateau, sur n'importe quelle case libre.

Le gagnant est le premier joueur qui parvient à réaliser un alignement de 6 pions, en ligne, en colonne, ou en diagonale.
Si aucun alignement de 6 pions n'est réalisé à la fin de la partie (quand le plateau de jeu est rempli) il y a match nul.

Les paramêtres du jeu (la taille du plateau et le nombre de pions à aligner) sont succeptibles de changer.
Prévoyez donc de mettre ces valeurs sous forme de constantes dans vos programmes.

Voici comment seront organisé les matchs :

Si un client effectue un coup non valide (jouer en dehors du plateau ou sur une case occupée) il perd le match.
De même s'il est trop lent à répondre, il perd aussi (le temps limite par tour sera pécisé plus tard).

Le mécanisme utilisé pour faire communiquer les processus (serveur et clients) entre eux est celui des files (FIFO).
Pour simplifier la programmation des clients, ceux-ci lisent les données sur l'entrée standard (stdin) et envoient leurs réponses sur la sortie standard (stdout).
Par exemple en C, un scanf permet de lire et un printf de répondre.
En pascal se sont respectivement readln et writeln qui seront utilisés...
Ainsi n'importe quel langage peut-être utilisé pour programme son client.
Attention : en C toutes les sorties doivent être flushées :
printf("%d\n%d\n",x,y); fflush(stdout);

Au premier tour de jeu, chaque client lit un numéro qui lui indique s'il commence (1) ou s'il va jouer en second (2).
Ensuite a chaque tour de jeu il écrit sur la sortie standard les coordonnés; de la case sur laquelle il souhaite jouer son pion.
Il envoie d'abord la colonne (x) puis la ligne (y). Il doit y avoir une donnée par ligne.
De la même manière, le coup joué par l'adversaire est lu sur l'entrée standard : la colonne puis la ligne.

Lignes et colonnes sont numérotées de 1 à 20.

Vous trouverez le code du dernier serveur ici, un client bidon ici et enfin le script pour organiser les matchs ici