Skip to main content

No project description provided

Project description

amazinggame

Jeu de course dans un labyrinthe, avec une phase d'exploration puis une phase de course.

Principe du jeu

Chaque joueur pilote un agent dans un labyrinthe.

  1. Exploration : pendant 3 minutes, les joueurs découvrent le labyrinthe.
  2. Course : après l'exploration, les joueurs repartent du début et tentent d'atteindre l'arrivée.

Paramètres principaux :

  • Durée exploration : 180 secondes
  • Durée course : 60 secondes
  • Taille du labyrinthe : 15x15

Le jeu se termine quand :

  • un joueur gagne la course, ou
  • le temps maximal est atteint.

Règles de score

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.

Commandes joueur (protocole)

Le client joueur envoie des lignes texte au serveur. Commandes supportées :

  • ACCELERATE : accélère de 0.1
  • DECELERATE : décélère de 0.1 (ne descend pas en dessous de 0)
  • TURN_RIGHT : tourne de 10° à droite
  • TURN_LEFT : tourne de 10° à gauche
  • GET_SENSORS : récupère les infos des capteurs (cf ci-après)

Réponses typiques :

  • OK : commande acceptée
  • KO : commande invalide
  • BLOCKED : commande reçue mais le joueur ne peut pas agir en ce moment

Blocages

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.

Format des capteurs (GET_SENSORS)

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)
  • exploration vaut 1 en phase exploration, sinon 0
  • x/y position du joueur (à virgule)
  • orientation en degrés, sens trigonométrique
  • speed vitesse courante en largeur de cellule par seconde (à virgule)
  • front/right/rear/left distances aux murs (à virgule)

Installation et pre-requis

  • Python >= 3.14
  • uv

Installation locale :

uv sync

Commandes utiles

Lancer un serveur de jeu

uv run python -m amazinggame.game.server

Options principales :

  • -a, --address (défaut: localhost)
  • -p, --port (défaut: 16210)
  • -t, --timeout temps d'attente pour laisser entrer d'autres joueurs
  • -f, --fast mode rapide

Exemple:

uv run python -m amazinggame.game.server -p 16210 -t 10

Lancer le viewer (spectateur graphique)

uv run python -m amazinggame.viewer -p 16210

Options:

  • -a, --address
  • -p, --port
  • -s, --small-window

Lancer un client d'exemple C

Compilation :

gcc -Wall -o sample_player_client sample_player_client.c

Execution:

./sample_player_client 127.0.0.1 16210 MonBot

Scenario de competition local

Le script competition.sh lance un scenario complet (serveur, viewer, bots de test) :

bash competition.sh

Qualité et tests

Exécuter la suite de vérification complète :

prek run --all-files

Auto-évaluation

Voici 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amazinggame-0.2.1.tar.gz (351.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

amazinggame-0.2.1-py3-none-any.whl (359.6 kB view details)

Uploaded Python 3

File details

Details for the file amazinggame-0.2.1.tar.gz.

File metadata

  • Download URL: amazinggame-0.2.1.tar.gz
  • Upload date:
  • Size: 351.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for amazinggame-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a84768e927e2e4b55c082be209f74c18adc79abdb4690013fea6fdea14639c13
MD5 9359465bcf7b0a458ea56d862ded3311
BLAKE2b-256 dec6c1230b2ec56de0d38edc16decc7090257ba0730ec671b134b90e9c0d219f

See more details on using hashes here.

File details

Details for the file amazinggame-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for amazinggame-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ed05fa69bc864f6e80509b96ae4ba1deb378207aecf3e7ba7b67979aaf65166b
MD5 c6d23bc91138d35045f58da246283a40
BLAKE2b-256 78935df72634cadac8d2c33fcf22129fab6512077e7f4e40121d666e9eeff2d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page