15 KiB
Analyse Complète du Code - BoideloV3
📋 Table des Matières
- Présentation du Projet
- Structure du Projet
- Fichiers Principaux
- Fonctionnalités
- Technologies et Dépendances
- Architecture
- Composants et Leurs Relations
- 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 :
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<String> 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
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
-
Localisation Française - L'application est entièrement localisée en français
-
Jeu d'Alcool - Conçu pour des jeux sociaux à base de boissons avec questions
-
Évolution de Version - V3 indique plusieurs itérations, avec code héritage préservé
-
Pratiques Android Modernes - Utilise AndroidX, Material Design 3, outils de build modernes
-
Intégration Base de Données - Prêt pour JSON local et PostgreSQL distant
-
Intégration IA - Support OpenAI planifié mais pas entièrement implémenté
-
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