Jeu de course dans un labyrinthe, avec une phase d'exploration puis une phase de course.
Chaque joueur pilote un agent dans un labyrinthe.
- Exploration : pendant 3 minutes, les joueurs découvrent le labyrinthe.
- Course : après l'exploration, les joueurs repartent du début et tentent d'atteindre l'arrivée.
Paramètres principaux :
- Durée exploration :
180secondes - Durée course :
60secondes - Taille du labyrinthe :
15x15
Le jeu se termine quand :
- un joueur gagne la course, ou
- le temps maximal est atteint.
Le score depend principalement :
- du nombre de cases visitées pendant l'exploration,
- d'un bonus lié au temps de course,
- d'un bonus de fin pour un joueur qui termine la course.
Le client joueur envoie des lignes texte au serveur. Commandes supportées :
ACCELERATE: accélère de 0.1DECELERATE: décélère de 0.1 (ne descend pas en dessous de 0)TURN_RIGHT: tourne de 10° à droiteTURN_LEFT: tourne de 10° à gaucheGET_SENSORS: récupère les infos des capteurs (cf ci-après)
Réponses typiques :
OK: commande acceptéeKO: commande invalideBLOCKED: commande reçue mais le joueur ne peut pas agir en ce moment
| Cause | Durée | Effet |
|---|---|---|
| Trop d'erreurs de commandes (> 3) | Permanent | Joueur déconnecté par le serveur |
| Collision avec un mur | 10 secondes | Le joueur reprend automatiquement après la pause |
Pendant un blocage temporaire (mur), les commandes reçoivent BLOCKED en réponse mais le joueur n'est pas déconnecté et reprend normalement à la fin de la pause.
La réponse est une ligne avec:
time exploration x y orientation speed front right rear left
avec (les nombres à virgules ont deux décimales) :
timeétant la date en secondes depuis le début du jeu (à virgule)explorationvaut1en phase exploration, sinon0x/yposition du joueur (à virgule)orientationen degrés, sens trigonométriquespeedvitesse courante en largeur de cellule par seconde (à virgule)front/right/rear/leftdistances aux murs (à virgule)
- Python
>= 3.14 uv
uvx --from amazinggame serverOptions principales :
-a,--address(défaut:localhost)-p,--port(défaut:16210)-t,--timeouttemps d'attente pour laisser entrer d'autres joueurs-f,--fastmode rapide
Exemple:
uvx --from amazinggame server -p 16210 -t 10uvx --from amazinggame viewer -p 16210Options:
-a,--address-p,--port-s,--small-window
Compilation :
gcc -Wall -o sample_player_client sample_player_client.cExecution:
./sample_player_client 127.0.0.1 16210 MonBotLe script competition.sh lance un scenario complet (serveur, viewer, bots de test) :
bash competition.shExécuter la suite de vérification complète :
prek run --all-filesVoici un barème pour évaluer le projet :
| Critère | Points |
|---|---|
| Structures de données | 4 |
| Gestion des commandes basiques | 1 |
| Utilisation intelligente des capteurs | 2 |
| Reconstruction de la carte du labyrinthe | 3 |
| Algorithme de path finding | 4 |
| Robustesse à la communication avec le serveur | 1 |
| Performance (complexité algorithmique) | 1 |
| Documentation (installation des dépendances, lancement) | 1 |
| Écriture de tests pertinents | 4 |
| Qualimétrie | 1 |
| Automatisation avec GitHub action | 2 |
| Refus de pull request / push si baisse de qualité ou tests KO | 1 |
| Classement compétition | 3 |
| Pre-commit en local et en intégration continue | 1 |
| Rapport : démarche étape par étape | 3 |
| Rapport : 3 plus grandes difficultés, et solutions mises en place | 6 |
| Rapport : notions apprises, retour d'expérience | 1 |