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)