Docs: Add comprehensive README.md file
Adds a detailed README file for the Best 2048 project. The README includes: - Project description and context (university project). - List of features for both single-player and multiplayer modes. - Overview of technologies used (Android, Java, network libraries, backend). - Simplified project structure overview. - Basic setup instructions for development. - Mention of the required backend server for multiplayer. - Instructions on how to play both modes. - Author information.
This commit is contained in:
parent
2b5dc6b85f
commit
78e695e377
118
README.md
118
README.md
@ -1,21 +1,107 @@
|
|||||||
# Projet Android 2048
|
# Best 2048 - Projet Universitaire
|
||||||
|
|
||||||
Un clone simple du jeu populaire 2048 développé pour Android en utilisant Android Studio et Java.
|
 ## Description
|
||||||
|
|
||||||
## Objectif
|
**Best 2048** est une implémentation Android du célèbre jeu 2048, développée dans le cadre d'un projet universitaire par l'équipe "La Legion de Muyue". L'application propose non seulement le mode de jeu classique en solo, mais également un mode multijoueur en temps réel via WebSockets.
|
||||||
|
|
||||||
L'objectif principal est d'apprendre les bases du développement Android, y compris :
|
L'objectif est de faire glisser les tuiles sur une grille pour combiner celles de même valeur, créer la tuile 2048 (en solo) ou atteindre un score cible avant l'adversaire (en multijoueur).
|
||||||
* La gestion des layouts (GridLayout, ConstraintLayout)
|
|
||||||
* La gestion des événements tactiles (Swipe)
|
|
||||||
* La logique de jeu de base
|
|
||||||
* Le cycle de vie d'une activité Android
|
|
||||||
* La persistance simple des données (scores)
|
|
||||||
|
|
||||||
## Étapes Futures
|
## Fonctionnalités
|
||||||
|
|
||||||
1. Mise en place de la structure de base du projet.
|
* **Mode Solo Classique :**
|
||||||
2. Implémentation de la logique de la grille et de l'ajout de tuiles.
|
* Gameplay 2048 standard sur une grille 4x4.
|
||||||
3. Implémentation des mouvements des tuiles (Haut, Bas, Gauche, Droite).
|
* Détection de swipe (Haut, Bas, Gauche, Droite).
|
||||||
4. Création de l'interface graphique.
|
* Calcul et affichage du score actuel et du meilleur score.
|
||||||
5. Liaison de la logique et de l'interface.
|
* Sauvegarde et chargement automatique de l'état de la partie solo.
|
||||||
6. Ajout de fonctionnalités (score, high score, redémarrage, etc.).
|
* Détection de victoire (atteinte de 2048) et de fin de partie (plateau bloqué).
|
||||||
|
* Option "Continuer à jouer" après avoir atteint 2048.
|
||||||
|
* Effets sonores pour les mouvements et les fusions.
|
||||||
|
* Probabilités de génération de nouvelles tuiles personnalisées (légèrement différent du standard 90% 2, 10% 4).
|
||||||
|
* **Mode Multijoueur Temps Réel :**
|
||||||
|
* Matchmaking automatique : Crée une nouvelle partie ou rejoint une partie en attente.
|
||||||
|
* Communication via WebSocket (`wss://best2048.legion-muyue.fr/ws`) pour les mises à jour d'état.
|
||||||
|
* API REST (`https://best2048.legion-muyue.fr/api/`) pour la gestion initiale des parties.
|
||||||
|
* Gameplay au tour par tour.
|
||||||
|
* Affichage des scores des deux joueurs et indicateur de tour.
|
||||||
|
* Condition de victoire : Atteindre un score cible (ex: 500 points) OU blocage du plateau de l'adversaire (victoire au score le plus élevé) OU déconnexion de l'adversaire.
|
||||||
|
* Boîte de dialogue de fin de partie indiquant Victoire / Défaite / Égalité.
|
||||||
|
* **Statistiques Détaillées :**
|
||||||
|
* Suivi des statistiques pour les modes solo et multijoueur (parties jouées, gagnées, perdues, meilleur score, meilleure tuile, temps de jeu, séries de victoires, etc.).
|
||||||
|
* Persistance des statistiques via SharedPreferences.
|
||||||
|
* Affichage des statistiques dans un panneau dédié.
|
||||||
|
* Option de partage et de réinitialisation des statistiques.
|
||||||
|
* **Paramètres Utilisateur :**
|
||||||
|
* Activation/Désactivation des effets sonores.
|
||||||
|
* Activation/Désactivation des notifications (nécessite permission sur Android 13+).
|
||||||
|
* Gestion des permissions via les paramètres système.
|
||||||
|
* Option pour quitter l'application.
|
||||||
|
* **Notifications :**
|
||||||
|
* Notifications d'accomplissement (ex: atteinte d'une tuile élevée).
|
||||||
|
* Notifications périodiques en arrière-plan (via WorkManager) pour rappeler le meilleur score ou en cas d'inactivité (si activées).
|
||||||
|
* **Interface Utilisateur :**
|
||||||
|
* Interface propre avec gestion des couleurs par tuile.
|
||||||
|
* Animations pour l'apparition et la fusion des tuiles.
|
||||||
|
* Utilisation de polices personnalisées (Nunito).
|
||||||
|
* Layouts adaptatifs (ConstraintLayout, GridLayout).
|
||||||
|
|
||||||
|
## Technologies Utilisées
|
||||||
|
|
||||||
|
* **Langage :** Java
|
||||||
|
* **Plateforme :** Android SDK
|
||||||
|
* **Bibliothèques AndroidX :** AppCompat, ConstraintLayout, GridLayout, CardView, WorkManager, Core, Activity, Fragment
|
||||||
|
* **Composants Material Design :** SwitchMaterial
|
||||||
|
* **Réseau :**
|
||||||
|
* Retrofit 2 (pour les appels API REST)
|
||||||
|
* OkHttp 3 (Client HTTP sous-jacent pour Retrofit et pour les WebSockets)
|
||||||
|
* WebSocket (via OkHttp)
|
||||||
|
* **Parsing JSON :** Gson
|
||||||
|
* **Persistance :** SharedPreferences
|
||||||
|
* **Audio :** SoundPool
|
||||||
|
* **Backend (Déduit de `server.js`) :**
|
||||||
|
* Node.js
|
||||||
|
* Express.js (pour l'API REST)
|
||||||
|
* Bibliothèque `ws` (pour le serveur WebSocket)
|
||||||
|
|
||||||
|
## Structure du Projet (Simplifiée)
|
||||||
|
|
||||||
|
* **`legion.muyue.best2048`**: Package principal
|
||||||
|
* `MainActivity.java`: Gère le mode solo et l'interface principale.
|
||||||
|
* `MultiplayerActivity.java`: Gère le mode multijoueur et la communication réseau associée.
|
||||||
|
* `Game.java`: Contient la logique de base du jeu 2048 (plateau, mouvements, règles).
|
||||||
|
* `GameStats.java`: Gère le suivi, le stockage et la récupération des statistiques.
|
||||||
|
* `OnSwipeTouchListener.java`: Détecteur de gestes de balayage.
|
||||||
|
* `NotificationHelper.java`: Utilitaire pour créer et afficher les notifications.
|
||||||
|
* `NotificationWorker.java`: Worker pour les notifications en arrière-plan.
|
||||||
|
* **`data/`**: Contient les objets DTO (Data Transfer Objects) pour la communication réseau (e.g., `GameInfo`, `GameStateResponse`, `MoveRequest`).
|
||||||
|
* **`network/`**: Contient la configuration du client réseau (`ApiClient`, `ApiService` pour Retrofit).
|
||||||
|
* **`res/`**: Ressources Android
|
||||||
|
* `layout/`: Fichiers XML définissant les interfaces utilisateur des activités et des boîtes de dialogue.
|
||||||
|
* `drawable/`: Formes (tuiles, boutons), icônes.
|
||||||
|
* `values/`: Chaînes de caractères (`strings.xml`), couleurs (`colors.xml`), dimensions (`dimens.xml`), styles (`themes.xml`).
|
||||||
|
* `raw/`: Fichiers audio pour les effets sonores (`move.ogg`, `merge.ogg`, etc.).
|
||||||
|
* `font/`: Police personnalisée (Nunito).
|
||||||
|
* `anim/`: Animations XML (ex: `button_press.xml`).
|
||||||
|
* `mipmap-*/`: Icônes de l'application.
|
||||||
|
* `AndroidManifest.xml`: Déclare les composants de l'application, les permissions (INTERNET, POST_NOTIFICATIONS).
|
||||||
|
|
||||||
|
## Installation et Lancement (Développement)
|
||||||
|
|
||||||
|
1. Clonez ce dépôt Git.
|
||||||
|
2. Ouvrez le projet dans Android Studio (dernière version stable recommandée).
|
||||||
|
3. Laissez Gradle synchroniser et télécharger les dépendances.
|
||||||
|
4. **Backend :** Assurez-vous que le serveur backend (Node.js, voir `server.js`) est en cours d'exécution et accessible à l'URL configurée (`https://best2048.legion-muyue.fr`) pour que le mode multijoueur fonctionne.
|
||||||
|
5. Sélectionnez un émulateur ou connectez un appareil Android.
|
||||||
|
6. Compilez et lancez l'application via Android Studio (Run 'app').
|
||||||
|
|
||||||
|
## Comment Jouer
|
||||||
|
|
||||||
|
* **Mode Solo :** Balayez l'écran (haut, bas, gauche, droite) pour déplacer toutes les tuiles. Lorsque deux tuiles de même valeur se touchent, elles fusionnent en une nouvelle tuile dont la valeur est la somme des deux. Essayez d'atteindre la tuile 2048 ! La partie est perdue si la grille est pleine et qu'aucun mouvement n'est possible.
|
||||||
|
* **Mode Multijoueur :** Appuyez sur le bouton "Multijoueur". Vous serez automatiquement mis en relation avec un adversaire. Jouez à tour de rôle. Le premier joueur à atteindre le score cible (par défaut 500) gagne. Si le plateau d'un joueur se bloque, le joueur avec le score le plus élevé gagne. Si un joueur se déconnecte, l'autre gagne par forfait.
|
||||||
|
|
||||||
|
## Auteurs
|
||||||
|
|
||||||
|
Ce projet a été réalisé par l'équipe **La Legion de Muyue** :
|
||||||
|
* Muyue (Leader)
|
||||||
|
* (Mentionner les autres membres si souhaité)
|
||||||
|
|
||||||
|
Projet universitaire - [Date ou contexte du cours si pertinent]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user