Un jeu de Snake classique avec une IA entraînée par apprentissage par renforcement profond (Deep Q-Learning).
Ce projet implémente le jeu classique Snake avec deux modes :
- Mode manuel : jouable avec les touches directionnelles
- Mode IA : le serpent est contrôlé par un modèle de Deep Q-Learning
L'agent d'IA apprend à jouer au Snake en maximisant les récompenses (manger de la nourriture) tout en évitant les obstacles (murs et son propre corps).
- Interface graphique Pygame
- Système de score
- Agent DQN (Deep Q-Network) pour l'apprentissage par renforcement
- Visualisation de l'entraînement en temps réel avec graphiques
- Sauvegarde des meilleurs modèles
# Cloner le dépôt
git clone https://github.com/D0ko/snake-ai.git
cd snake-ai
# Installer les dépendances
pip install -r requirements.txt- Python 3.8+
- TensorFlow 2.x
- Pygame
- NumPy
- Matplotlib
python main.pypython snake_train.pypython snake_test.pymain.py: Point d'entrée principalsnake_logic.py: Moteur du jeu Snakesnake_graphic.py: Interface graphique Pygamesnake_dqn_agent.py: Agent DQN pour l'apprentissage par renforcementsnake_train.py: Script d'entraînement avec visualisationsnake_test.py: Script de test pour l'agent entraîné
L'agent apprend grâce à un réseau de neurones qui prédit les valeurs Q pour chaque action possible. Le processus comprend :
- Observation de l'état actuel (12 caractéristiques)
- Choix d'une action (haut, droite, bas, gauche)
- Réception d'une récompense (+100 pour manger, -100 pour mourir)
- Mise à jour du modèle via l'algorithme Q-learning
- Flèches directionnelles : Déplacer le serpent
- R : Recommencer après game over
- Espace : Pause (pendant l'entraînement)
- Échap : Quitter
Après 1000 épisodes d'entraînement, l'agent atteint généralement un score moyen de 10-15, avec des pics à 25+.
- Implémenter un algorithme PPO ou A3C
- Ajouter des obstacles dynamiques
- Créer différents niveaux de difficulté
- Optimiser la représentation d'état pour de meilleures performances
MIT