Chères agrumes, bonjour !
Il y a quelques temps (bon, deux ans en fait) Eskimon lançait la première édition de la ZestArena. Malheureusement, elle n'a jamais abouti.
Mais aujourd'hui, je vous propose de relancer cet atelier avec un nouveau défi : faire une IA capable de jouer aux dominos.
La ZestArena, keskesékoi ?
C'est un ensemble de défis/ateliers de programmation, dans lesquels les différents participants s'affrontent dans des combats acharnés !1
Chaque participant devra donc créer une petite (ou grosse) IA dans le langage de son choix, capable de jouer à un jeu de société. Les différentes IA se battront ensuite dans des duels à mort, et un classement sera établi.
Deuxième arène : les dominos
La première arène était le puissance 4, celle-ci sera les dominos. Je pense que vous savez tous y jouer, mais comme les règles peuvent changer, voici celles qui sont utilisées :
- Il y 4 joueurs et 28 dominos dans une partie ;
- Au début de la partie, chaque joueur a donc 7 domino ;
- Le joueur qui a un double 6 commence ;
- Les autres joueurs connectent ensuite leurs dominos à droite ou à gauche de la file. Il faut bien sûr que deux dominos qui se touchent aient un nombre en commun ;
- Les joueurs peuvent passer leur tour ;
- La partie se termine quand les quatre joueurs passent à la suite (plus aucun ne peut jouer) ou quand les 28 dominos ont étés joués.
- Pour le décompte des points, c'est expliqué sur le Framagit.
Au niveau du code
Il y a un programme maître qui dit qui joue quand et qui donne les informations sur la partie en cours au programmes enfant. J'ai écrit ce programme maître, et vous, vous allez écrire les programmes enfants.
Ils communiquent entre eux via des messages, envoyés par WebSockets. Pour plus de détails, n'hésitez pas à aller lire ce fichier qui explique tout.
Si vous voulez participer, il faudra respecter ces conditions :
- Votre programme doit pouvoir être lancé via la ligne de commande ;
- Si il est compilé, merci de le faire sous Linux (Fedora de préférence), pour être sûr que je puisse le lancer. Sinon, il faudra me fournir les sources et me dire comment le compiler ;
Le programme maître générera aussi des GIFs animés des parties, pour que vous ayez droit à un replay.
Ce défi est une bonne occasion de vous entraîner dans un nouveau langage, d'en tester un, d'apprendre à utiliser les WebSockets, de faire une petite IA … ou tout ça à la fois ! Alors, n'hésitez pas à proposer quelque chose. Et si vous ne savez pas trop comment faire, n'hésitez pas à aller voir le code de l'IA de test (nommée « idiot », ça en dit long … D'ailleurs ce n'est même pas une vraie IA), ou à demander de l'aide.
Bonne chance à tous !
Et je ne l'ai pas dit, mais essayez de garder un esprit bon enfant. Si vous êtes le dernier du classement, profitez en pour voir ce qu'a fait le premier et voir comment vous pourriez améliorer votre programme.2 Du coup, si vous partagez vos codes sources, c'est mieux, même si dans un premier temps, on peut garder son algorithme secret.