The PyRat tournament
Duration2h30 + préparationPrésentation & objectifs
Après l’examen final, un créneau horaire est dédié à un tournoi PyRat.
Dans ce tournoi, vous devrez concevoir un programme PyRat pour défier un adversaire. Au travers de ce cours, vous apprendrez à atteindre progressivement cet objectif. Ensuite, le plus rapide à récupérer les morceaux de fromage gagne la partie !
Il s’agit d’un événement optionnel, uniquement fait pour que vous vous amusiez et défiiez vos amis. Par conséquent, il n’y a pas d’évaluation associée.
Voici quelques vidéos qui ont été prises depuis la création du cours PyRat ! Certaines sont plus “commerciales” que d’autres, mais c’est un aperçu sympa de l’ambiance pendant le tournoi, ainsi qu’un aperçu des différentes versions du jeu !
Organisation du tournoi
Deux phases
Malheureusement, nous n’aurons pas le temps de faire s’affronter tout le monde dans le tournoi final. Par conséquent, nous procéderons sous forme de poules dans lesquelles tous les joueurs s’affronteront, en deux tours gagnants. Dans chaque poule, nous garderons le meilleur programme, c’est-à-dire celui ayant le plus grand nombre de points dans les matchs de poule (1 point pour une victoire, 0.5 pour un match nul). En cas d’égalité après tous les matchs, nous considérerons comme meilleur programme celui ayant le temps d’exécution total le plus faible.
Une fois les gagnants des poules déterminés (16 IA), le tournoi lui-même aura lieu dans un amphithéâtre. Les matchs seront déterminés aléatoirement.
Le vainqueur du tournoi remportera un trophée, et son IA servira de boss final pour les étudiants de l’année suivante !
Paramètres PyRat
Les options suivantes seront utilisées pour créer les parties PyRat :
maze_width
: 25.maze_height
: 20.cell_percentage
: 80.0.wall_percentage
: 60.0.mud_percentage
: 20.0.mud_range
: [4, 9].nb_cheese
: 41.preprocessing_time
: 3.0.turn_time
: 0.1.
Voici le script de jeu que nous utiliserons pour lancer le tournoi.
Notez que les joueurs seront instanciés sans aucun argument. Ainsi, assurez-vous de définir des valeurs par défaut dans votre constructeur si vous utilisez des arguments supplémentaires. En particulier, si vous souhaitez un nom personnalisé (et non le nom de la classe) pour votre programme, vous devez le préciser comme suit :
def __init__ ( self: Self,
*args: Any,
**kwargs: Any
) -> Self:
# Inherit from parent class
super().__init__(name="Your name here", *args, **kwargs)
Comment participer ?
Pour participer, vous devez soumettre votre programme sur Moodle, avant le 13 décembre 2024, 23:59.
Votre programme doit être placé dans une archive nommée team_name.zip
, où team_name
est le nom de votre équipe.
Cette archive doit être structurée comme suit :
team_name.zip
|
|_ games
| | # Put a simple game script here that starts a game with your program
| | # This will allow us to check that it works
| |_ # Take inspiration from the visualize_XXX.ipynb game scripts with the tournament settings
|
|_ players
| | # Put your player here
| | # This directory should only contain your player file that will participate in the tournament
| |_ # If you need functions defined in other players, please put them in utils
|
|_ utils
| |_ # Put your additional codes here (if any)
|
|_ data
| |_ # Put your other files here (if any)
|
|_ README_TOURNAMENT.md
Vous pouvez trouver le fichier README_TOURNAMENT.md
à ce lien.
Veuillez remplacer tout ce qui est dans <...>
.
Veuillez vous assurer que votre programme fonctionne, et que vous respectez l’organisation des fichiers ci-dessus.
Assurez-vous également que tous les fichiers nécessaires sont disponibles pour que votre programme fonctionne. Nous aurons beaucoup de matchs à faire pour les poules, donc nous ne pouvons pas perdre trop de temps à demander des fichiers manquants.