# Analyse Complète du Code - BoideloV3 ## 📋 Table des Matières 1. [Présentation du Projet](#présentation-du-projet) 2. [Structure du Projet](#structure-du-projet) 3. [Fichiers Principaux](#fichiers-principaux) 4. [Fonctionnalités](#fonctionnalités) 5. [Technologies et Dépendances](#technologies-et-dépendances) 6. [Architecture](#architecture) 7. [Composants et Leurs Relations](#composants-et-leurs-relations) 8. [Configuration](#configuration) --- ## 🎮 Présentation du Projet **BoideloV3** est une application Android de jeu d'alcool (similaire à "King's Cup" ou "Never Have I Ever"). L'application permet à un groupe de joueurs de répondre à des questions aléatoires avec des consommations de boissons associées. ### Caractéristiques Principales - **Jeu multijoueur** (minimum 3 joueurs, sans maximum) - **115 questions préchargées** depuis un fichier JSON - **Interface en français** avec Material Design 3 - **Intégration OpenAI** (en développement) - **Connexion PostgreSQL** (prête) - **Interface moderne et responsive** --- ## 📁 Structure du Projet ``` C:\Users\polar\Documents\boidelo\ ├── .gradle/ # Cache de construction Gradle ├── .idea/ # Configuration IntelliJ IDEA ├── app/ │ ├── build.gradle # Configuration de build app-level │ ├── libs/ # Librairies JAR externes │ │ ├── postgresql-42.2.27.jre7.jar │ │ └── postgresql-42.6.0.jar │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── assets/ │ │ ├── question.json # Base de données questions (115 questions) │ │ └── questionOLD.json │ ├── java/com/example/boidelov3/ │ │ ├── MainActivity.java │ │ ├── Jeux.java # Activité principale du jeu │ │ ├── Jeuxold.java # Implémentation héritée │ │ ├── JeuxParametres.java # Paramètres du jeu │ │ ├── ChatGPTTask.java # Intégration OpenAI (commenté) │ │ ├── DatabaseConnection.java # Connexion PostgreSQL │ │ ├── Question.java # Modèle de données Question │ │ └── Questions.java # Conteneur de questions │ └── res/ │ ├── anim/ # Animations │ ├── drawable/ # Icônes et graphiques │ ├── layout/ # Layouts UI (4 fichiers XML) │ ├── mipmap-*/ # Icônes pour différentes densités │ ├── values/ # Chaînes, couleurs, thèmes │ ├── values-night/ # Ressources mode nuit │ └── xml/ # Fichiers de configuration XML ├── build.gradle # Configuration de build projet-level ├── gradle.properties # Propriétés Gradle ├── settings.gradle # Paramètres du projet ├── gradlew, gradlew.bat # Exécutables Gradle wrapper └── .gitignore # Fichier Git ignore ``` --- ## 📄 Fichiers Principaux ### Activités Principales #### `MainActivity.java` **Point d'entrée principal** de l'application. **Responsabilités :** - Gestion de la saisie des noms de joueurs - Validation du minimum de 3 joueurs - Génération dynamique de l'interface utilisateur - Persistence des noms avec SharedPreferences #### `Jeux.java` **Cœur du jeu**, gère l'affichage des questions et les mécaniques de jeu. **Responsabilités :** - Chargement des questions depuis le JSON - Sélection aléatoire sans répétition - Gestion des tours de joueurs - Feedback visuel avec arrière-plans colorés - Remplacement dynamique des variantes #### `JeuxParametres.java` **Écran de configuration** des paramètres du jeu. **Responsabilités :** - Configuration du nombre de questions - Gestion des comptes de boissons - Configuration de l'API OpenAI - Lancement de l'activité Jeux #### `Jeuxold.java` **Version héritée** du jeu avec questions hardcodées (non utilisée activement). ### Modèles de Données #### `Question.java` **Modèle de données** pour une question individuelle. **Propriétés :** ```java public class Question { private int id; // Identifiant unique private String question; // Texte de la question private int boire; // Nombre de boissons private boolean donner; // Flag de distribution private boolean recevoir; // Flag de réception private List variantes; // Variantes de la question private int manches; // Nombre de manches private String stop; // Message d'arrêt } ``` #### `Questions.java` **Classe conteneur** pour la liste de questions. ### Intégrations #### `ChatGPTTask.java` **Intégration OpenAI** pour la génération de questions avec ChatGPT. **Statut :** Commenté / En développement **Fonctionnalités prévues :** - Génération dynamique de questions - Appel API à OpenAI - Traitement des réponses #### `DatabaseConnection.java` **Gestionnaire de connexion** à la base de données PostgreSQL. **Configuration :** - Hôte : 82.65.214.214 - Port : 5432 - Base de données : boidelo - Utilisateur : android --- ## ⚡ Fonctionnalités ### Gestion des Joueurs - **Entrée dynamique** des noms de joueurs - **Minimum 3 joueurs** requis pour commencer - **Support illimité** de nombre de joueurs - **Persistance** avec SharedPreferences ### Système de Questions - **115 questions préchargées** depuis JSON - **Sélection aléatoire** sans répétition - **Variantes** avec remplacement dynamique de contenu - **Questions à manches** avec mécanique de compte à rebours ### Mécaniques de Jeu - **Ajustement dynamique** du nombre de boissons - **Randomisation** des joueurs pour les questions - **Feedback visuel** avec arrière-plans colorés - **Catégorisation** (distribution/réception) ### Fonctionnalités Avancées - **Intégration OpenAI ChatGPT** (stade de développement) - **Connectivité PostgreSQL** (prête) - **Paramètres personnalisables** - **Défis multi-manches** ### Interface Utilisateur - **Trois activités principales** : Main, Jeux, Paramètres - **Interface Material Design 3** - **Localisation en français** - **Layout responsive avec ConstraintLayout** --- ## 🛠 Technologies et Dépendances ### Technologies Principales | Technologie | Version | Usage | |-------------|---------|-------| | **Android SDK** | 33 (compile) | Développement Android natif | | **Java** | - | Langage principal | | **Gradle** | 8.2 | Automatisation de build | ### Bibliothèques Principales ```gradle dependencies { // Cœur Android implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' // Réseau implementation 'com.squareup.okhttp3:okhttp:4.9.1' // Base de données implementation 'com.impossibl.pgjdbc-ng:pgjdbc-ng:0.8.3' // Traitement JSON implementation 'com.google.code.gson:gson:2.8.8' // Tests testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' } ``` ### Librairies Externes | Librairie | Version | Utilisation | |-----------|---------|-------------| | **OkHttp** | 4.9.1 | Client HTTP pour appels API | | **PostgreSQL JDBC** | 42.6.0 | Connectivité base de données | | **Gson** | 2.8.8 | Sérialisation/désérialisation JSON | --- ## 🏗 Architecture ### Pattern MVC (Model-View-Controller) ``` ┌─────────────────────────────────────────────────┐ │ Model │ │ • Question.java │ │ • Questions.java │ └─────────────────────────────────────────────────┘ ↑ │ ↓ ┌─────────────────────────────────────────────────┐ │ Controller │ │ • MainActivity.java │ │ • Jeux.java │ │ • JeuxParametres.java │ └─────────────────────────────────────────────────┘ ↑ │ ↓ ┌─────────────────────────────────────────────────┐ │ View │ │ • XML Layouts │ │ • Resources (drawable, strings, colors) │ └─────────────────────────────────────────────────┘ ``` ### Architecture Basée sur les Activités ``` MainActivity ├── Gère l'entrée des joueurs ├── Valide le minimum de 3 joueurs └── Lance JeuxParametres JeuxParametres ├── Configure les paramètres du jeu ├── Gère la configuration de l'API OpenAI └── Lance l'activité Jeux Jeux ├── Charge les questions depuis JSON ├── Gère l'état du jeu ├── Affiche les questions aléatoires └── Gère les interactions des joueurs ``` ### Persistence des Données | Méthode | Usage | |---------|-------| | **SharedPreferences** | Noms des joueurs et paramètres du jeu | | **JSON Assets** | Base de données des questions | | **PostgreSQL** | Base de données externe (planifié) | ### Opérations Asynchrones | Type | Implémentation | |------|----------------| | **AsyncTask** | Opérations de base de données (héritage) | | **OkHttp Callbacks** | Opérations réseau | --- ## 🔗 Composants et Leurs Relations ``` ┌────────────────────────────────────────────────────────────┐ │ MainActivity │ │ - Saisie des noms de joueurs │ │ - Validation (min. 3 joueurs) │ │ - Génération UI dynamique │ └────────────────────┬───────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────┐ │ JeuxParametres │ │ - Configuration du jeu │ │ - Setup API OpenAI │ │ - Lance Jeux │ └────────────────────┬───────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────┐ │ Jeux │ │ - Charge questions depuis JSON │ │ - Gère l'état du jeu │ │ - Affiche questions aléatoires │ │ - Gère interactions joueurs │ └────────────────────┬───────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────┐ │ Question Model │ │ - Stocke les données de question │ │ - Gère variantes et manches │ │ - Fournit les mécaniques de jeu │ └────────────────────────────────────────────────────────────┘ ``` --- ## ⚙️ Configuration ### Configuration de Build | Propriété | Valeur | |-----------|--------| | **Compile SDK** | 33 | | **Min SDK** | 24 | | **Target SDK** | 33 | | **Version Code** | 1 | | **Version Name** | "1.0" | | **Package** | com.example.boidelov3 | ### Configuration de l'Application | Fichier | Description | |---------|-------------| | **AndroidManifest.xml** | Permissions Internet, 4 activités déclarées | | **gradle.properties** | AndroidX activé, 2GB RAM allouée | | **settings.gradle** | Nom du projet : "BoideloV3" | ### Configuration Base de Données ``` Hôte : 82.65.214.214 Port : 5432 Base de données : boidelo Utilisateur : android ``` ### Dépendances Externes | Service | Statut | |---------|--------| | **PostgreSQL Database** | Prêt | | **OpenAI API** | En développement | --- ## 📊 Observations Clés 1. **Localisation Française** - L'application est entièrement localisée en français 2. **Jeu d'Alcool** - Conçu pour des jeux sociaux à base de boissons avec questions 3. **Évolution de Version** - V3 indique plusieurs itérations, avec code héritage préservé 4. **Pratiques Android Modernes** - Utilise AndroidX, Material Design 3, outils de build modernes 5. **Intégration Base de Données** - Prêt pour JSON local et PostgreSQL distant 6. **Intégration IA** - Support OpenAI planifié mais pas entièrement implémenté 7. **Architecture Évolutive** - Supporte joueurs et questions illimités --- ## 🔮 Statut des Fonctionnalités | Fonctionnalité | Statut | |----------------|--------| | Jeu multijoueur | ✅ Terminé | | Questions JSON | ✅ Terminé | | Interface UI | ✅ Terminé | | PostgreSQL | 🔧 Prêt | | OpenAI ChatGPT | 🚧 En développement | | Tests unitaires | 🔧 Configuré | --- ## 📝 Conclusion Le codebase représente une **application Android de jeu d'alcool bien structurée** avec des patterns d'architecture modernes, prête pour la production mais avec certaines fonctionnalités encore en développement. L'architecture est propre, modulaire et facilement extensible pour de futures améliorations. --- *Document généré automatiquement - 2025*