Files
Application/ANALYSE_CODE.md
T

15 KiB

Analyse Complète du Code - BoideloV3

📋 Table des Matières

  1. Présentation du Projet
  2. Structure du Projet
  3. Fichiers Principaux
  4. Fonctionnalités
  5. Technologies et Dépendances
  6. Architecture
  7. Composants et Leurs Relations
  8. 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

  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