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 :
- 1 serveur "arbitre" le match.
- 2 clients (2 programmes joueurs) s'affrontent.
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