Application web de quiz géographique multijoueur inspirée de GeoGuessr.
GeoQuizz est un jeu où les joueurs doivent deviner l'emplacement géographique de photos. L'application compare leurs réponses avec les vraies coordonnées GPS et attribue des points en fonction de la précision.
- 🎮 Mode Multijoueur en temps réel avec synchronisation WebSocket
- 📱 QR Code automatique pour partager facilement les salles de jeu
- 🌐 Détection d'IP locale pour connexion sur réseau local
- 🔗 URL de partage directe (
/join/{room_id}) - ⏱️ Timer synchronisé de 60 secondes par manche
- 🎯 Carte avec marqueurs multijoueur en couleurs
- 👥 Jusqu'à 6 joueurs simultanés par salle
- 🏆 Classement en temps réel après chaque manche
- Sélection de photos personnalisées : Parcourt récursivement un dossier pour trouver des photos avec métadonnées GPS
- Filtrage automatique : Ignore les photos sans coordonnées GPS
- Système de scoring : Points attribués selon la précision (0-5000 points par manche)
- Carte interactive : Interface Leaflet pour placer les réponses
- Centrage automatique sur la France : Option activée par défaut pour faciliter la sélection de lieux en France
- Résultats détaillés : Affiche la distance, le score et la position réelle après chaque manche
- Classement : Historique des meilleures parties
- Configuration flexible : Nombre de manches personnalisable (3, 5, 10, 15)
- Lobby avec QR Code : Créez une salle et partagez le QR code
- 3 façons de rejoindre : QR code, lien direct ou code de salle
- Synchronisation temps réel : Tous les joueurs voient la même photo
- Gestion des déconnexions : Pause automatique de 30 secondes
- Résultats comparatifs : Carte interactive montrant toutes les réponses
- Python 3.13 ou supérieur
- Photos avec métadonnées EXIF GPS
-
Cloner ou télécharger ce dépôt
-
Installer les dépendances :
pip install -r requirements.txt- Lancer le serveur :
python app.py- Ouvrir votre navigateur à l'adresse :
http://localhost:5000
-
Configurer l'application :
- Entrer votre nom de joueur
- Spécifier le chemin du dossier contenant vos photos (ex:
C:\Photos\Vacances) - Choisir le nombre de manches
- Option : Cocher/décocher "Centrer la carte sur la France à chaque manche" (activée par défaut)
- Cliquer sur "Scanner les photos"
-
Démarrer une partie :
- Cliquer sur "Démarrer la partie"
- Pour chaque photo, cliquer sur la carte pour deviner l'emplacement
- Valider votre réponse
- Voir le résultat et passer à la manche suivante
GeoQuizz2/
├── app.py # Serveur Flask principal
├── photo_manager.py # Gestion des photos et extraction EXIF
├── game_manager.py # Logique du jeu et scoring
├── requirements.txt # Dépendances Python
├── data/ # Données JSON (sessions, historique, config)
├── static/
│ ├── css/
│ │ └── style.css # Styles de l'application
│ └── js/
│ └── app.js # Logique JavaScript
└── templates/
└── index.html # Interface HTML
GET /api/config- Récupérer la configurationPOST /api/config- Définir la configuration et scanner les photos
POST /api/game/start- Démarrer une nouvelle partieGET /api/game/<session_id>/photo- Récupérer la photo actuellePOST /api/game/<session_id>/guess- Soumettre une suppositionGET /api/game/<session_id>/summary- Récupérer le résumé de la partie
GET /api/leaderboard- Récupérer le classementGET /api/stats- Récupérer les statistiques générales
Le score est calculé selon la distance entre la supposition et la vraie position :
- Distance < 1 km : 5000 points
- Distance > 2000 km : 0 point
- Entre les deux : décroissance exponentielle
Formule : score = 5000 * (2^(-distance/250))
- Guide Multijoueur - Guide complet du mode multijoueur
- CLAUDE.md - Instructions pour Claude Code
- CHANGELOG.md - Historique des versions
- DEPLOY.md - Guide de déploiement
- Lancez le serveur :
python app.py - Sur votre PC : Ouvrez http://localhost:5000
- Cliquez sur "Créer partie multijoueur"
- Sur mobile : Scannez le QR code affiché
- Jouez ensemble en temps réel !
- Interface mobile optimisée
- Modes de jeu supplémentaires (pays spécifique, continent, etc.)
- Indices progressifs
- Profils utilisateurs persistants
- Mode tournoi
- Équipes multijoueur
- Statistiques avancées
- Backend : Flask (Python 3.13)
- Frontend : HTML5, CSS3, JavaScript
- Temps réel : Flask-SocketIO, Socket.IO (WebSocket)
- Cartes : Leaflet.js
- QR Code : qrcode library (PIL)
- Stockage : Fichiers JSON (sans base de données)
- Images : Pillow (extraction EXIF)
- Géolocalisation : geopy
Projet éducatif - Libre d'utilisation
Développé avec Claude Code