419 lines
15 KiB
Markdown
419 lines
15 KiB
Markdown
# 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<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
|
|
|
|
```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*
|