Changement d'interface graphique
This commit is contained in:
+418
@@ -0,0 +1,418 @@
|
||||
# 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*
|
||||
Reference in New Issue
Block a user