Agrumes de tout bords et de toutes les couleurs, approchez approchez ! et n'ayez pas peur
Aujourd'hui ouvre devant vous la première ZestArena !!
Qu'est ce que la ZestArena
C'est là une bien bonne question petit agrume encore jeune et innocente… La ZestArena est un lien de défi féroce, de combat acharné, d'affrontement sans fin, jusqu'à ce qu'une intelligence les domaines tous !
La ZestArena, ce sont des défis de programmation à relever pour montrer à tous ô combien vous maîtrisez les codes les plus obscurs de ce monde. Mais attention, il ne pourra en rester qu'un… (qui deviendra alors le meilleur dresseurs pokemon)
Je vous propose sur ce nouveau theme des exercices de programmation pour vosu entrainer a coder dans le langage qui vous plait pour répondre à un problème donné. Nous revisiterons ainsi les plus grands classiques des jeux de société simple à mettre en oeuvre, mais pas forcément simple à maitriser. Lebut sera donc de développer une IA capable de jouer contre une autre IA d'un adversaire. Votre but ultime bien sur sera d'essayer d'avoir la meilleure IA pour être classé comme "Champion du challenge"
Première Arène : Puissance 4
On commence en douceur avec ce premier challenge qui émule un grand classique de l'enfance, le puissance 4 !
Rappels des règles
Concrètement, comment ca se passe ?
Eh bien c'est très simple. Toute personne désirant participer doit juste fournir un programme capable de fournir un entier. Cet entier représente la colonne dans laquelle il désire déposer son jeton. Afin de faire une décision éclairée, le programme a accès aux informations suivantes :
- La grille dans son état actuel
- Les grilles précédentes
Les grilles sont fournis dans un fichier texte représentant une analogie d'une grille de puissance 4 physique.
Déroulement d'une partie
Lors du lancement, le programme principal est démarré avec en arguments les deux programmes concurrents (ils doivent être exécutable). Il s'en suit alors la logique suivante :
- Le maître du jeu tire au sort qui est joueur 1 et qui est joueur 2
- Joueur 1 joue en premier
- Joueur 2 joue a son tour
- puis joueur 1 joue de nouveau
- La partie se continue ainsi jusqu'à ce que :
- Une égalité parfait a lieu
- Un des deux joueurs réalise un puissance 4
- Un des deux joueurs joue un coup impossible (rajout d'un pion sur une colonne pleine) = défaite
- Un des deux joueurs donne une entrée erronée (quelque chose autre qu'un entier)
On joue ?
Si vous souhaitez participer, voici les conditions d'entrée :
- Votre programme doit pouvoir être exécuté via une ligne de commande
- S'il est compilé, merci de le compilé pour Ubuntu. Sinon il faudra fournir les sources pour que je puisse le compiler.
- Je ne peux pas garantir d'être en mesure d’exécuté tout les langages
J’essaierai de faire un tableau récapitulatif des combats qui se sont déroulé. Vous pourrez ainsi avoir un oeil sur les meilleurs candidats.
Bien entendu, tout cela doit rester bon enfant. Personne n'est obligé de partager son code (au moins dans un premier temps pour forcer à réfléchir à l'implémentation).
Détails techniques
Si vous souhaitez participer, je vous fournis le maître du jeu ainsi qu'un joueur "aléatoire" pour vous entraîner à jouer Tout est expliqué dans le GitHub
Et voici un exemple de résultat de match entre deux joueurs "aléatoires complet"
(PS : Merci d’être tolérant pour mon petit programme Python, je me sers d'excuse de cet exercice pour m'entrainer )