aboutsummaryrefslogblamecommitdiff
path: root/README.md
blob: ebff8f5e8dfa3f1f4ef966abccb2ad0b9bf094d1 (plain) (tree)





























































































                                                                                         
Juge automatique pour IA pour jeu générique...
==============================================

Les joueurs sont des programmes qui lisent des infos sur le jeu sur l'entrée
standard et jouent leur coups sur la sortie standard.


Organisation des fichiers
-------------------------

juge/
	*.ml			le code du juge
	protocol.ml		encodeur et décodeur pour le protocole décrit plus bas
	core.ml			la partie principale
	main.ml			la synchro
	gui.ml			l'interface de visualisation
	morpionrec.ml		la partie spécifique à un jeu
morpionrec/
	joueur_1/
		player		le binaire/code du joueur
		*			fichiers de données perso
					(le binaire est lancé dans le dossier du joueur)
	joueur_2/
		player
		*
	201411202011.log		log de chaque séance
	201411202011.score		enregistrement des scores de chaque séance


Protocole d'entrée-sortie
-------------------------

Le juge et le joueur s'envoient des messages
terminés par un retour à la ligne.

J : Juge, P : joueur

1. Le juge et le joueur se disent bonjour:
  
      J    Hello morpion-rec
      P	   Hello morpion-rec

   Le joueur doit charger ses données *avant* de répondre, car dès qu'il a
   répondu on peut lui demnander de jouer et décompter son temps.

2. Lorsque c'est au joueur de jouer:

      J    Your turn secondes_pour_jouer
      P    Play des_infos_sur_le_coup
	  J    OK

3. Lorsque l'adversaire a joué:

      J    Play des_infos_sur_le_coup
 
   À partir de ce moment commence immédiatement le décompte du temps de
   réflexion du joueur.

4. Lorsque la partie se termine, un des cas suivants se présentent:

      J    You win
      J    You lose
      J    Tie
	  J    Eliminated

   Le joueur répond alors:

      P    Fair enough

   Le joueur doit enregistrer toutes ses données (apprentissage, ...) avant
   d'envoyer ce message : en effet, le juge envoit un SIGTERM au joueur une fois
   qu'il l'a reçu.


Organisation du tournoi
-----------------------

Chaque paire ordonnée de joueurs distincts est considérée (pour chaque paire de
joueurs, il y a deux matchs, un où chaque joueur commence). Les matchs sont mis
en attente, et n matchs sont lancés en parallèle (typiquement n = 4).


Interface de visualisation du juge
----------------------------------

On a une GUI avec les vues suivantes :

- Tableau des scores (classé, évidemment)
- Liste des matchs en cours, liste de tous les matchs (en cours et finis)
- Visualisation d'un match (géré par le jeu)