14 Commits

Author SHA1 Message Date
9d8d2c5c62 Refactor: Finalisation et externalisation des statistiques
- Création de la classe GameStats pour encapsuler les données et la logique des statistiques.
- Implémentation de loadStats() et saveStats() dans GameStats utilisant SharedPreferences.
- Ajout de méthodes dans GameStats pour enregistrer les événements du jeu (startGame, recordMove, recordMerge, recordWin, recordLoss, endGame, updateHighestTile, addPlayTime, setCurrentGameStartTimeMs, setHighestScore).
- Ajout de getters dans GameStats pour l'affichage et de méthodes pour les valeurs calculées (moyennes, pourcentages).
- Déplacement de formatTime() dans GameStats.
- Refactorisation de MainActivity:
  - Suppression des champs et méthodes de statistiques individuelles.
  - Utilisation d'une instance de GameStats pour gérer les statistiques.
  - Mise à jour de handleSwipe, startNewGame, onPause, onResume pour appeler GameStats.
  - Mise à jour de updateStatisticsTextViews pour utiliser les getters de GameStats.
  - MainActivity gère maintenant le chargement/sauvegarde de l'état sérialisé du jeu et du high score via SharedPreferences, en passant le high score à Game via setHighestScore.
- Refactorisation de Game:
  - Suppression de la dépendance au Contexte et SharedPreferences.
  - Suppression de la gestion interne du high score (reçoit via setHighestScore).
  - Ajout de getBoard() et getHighestTileValue().
  - Modification du constructeur et de deserialize pour être indépendants du contexte et du high score.
- Ajout/Mise à jour des commentaires JavaDoc dans les classes modifiées.
2025-04-04 13:12:59 +02:00
73ab81e208 Feat: Stats, Refactor, Permissions
- AndroidManifest: Ajout permissions (Network, BT, Location).
- Game.java: Refonte majeure (renommage, contexte, états win/loss,
  logique SharedPreferences implémentée, probabilités addNewTile modifiées,
  méthodes check win/loss, pushX retourne boolean, JavaDoc).
- MainActivity.java: Refonte majeure (gestion stats via ViewStub,
  champs/méthodes stats, dialogs win/loss, refactorisation onCreate,
  getters/setters, gestion cycle vie onPause/onResume, MAJ handleSwipe).
- OnSwipeTouchListener.java: Ajout annotations, JavaDoc.
- Layouts: Ajout stats_layout.xml, ajout ViewStub dans activity_main.xml.
- Ressources: Ajout/MAJ strings (stats), colors (thème, tuiles, stats),
  styles (stats, fullscreen), dimens, anim (durée), drawables (bouton multi, tile_background).
2025-04-04 12:06:08 +02:00
a190263cf5 Feat: Ajout confirmation restart et sauvegarde/chargement état
- Ajout dialog_restart_confirm.xml et dialog_background.xml pour la confirmation.
- Mise à jour strings.xml avec les textes de la boîte de dialogue.
- Modification de MainActivity:
  - Implémentation de showRestartConfirmationDialog.
  - Ajout logique SharedPreferences pour saveGame() dans onPause() et loadGame() dans onCreate().
- Modification de Game:
  - Ajout constructeur Game(board, score, highScore).
  - Ajout setter setHighScore(int).
  - Implémentation de serialize() et static deserialize() pour l'état du jeu.
  - updateHighScore() appelle maintenant saveHighScore() (stub).
2025-04-04 11:39:22 +02:00
a5cf3509d8 Feat: Bloquage orientation et plein écran 2025-04-04 11:24:15 +02:00
344db1e4ae Refactor: UI - Styles, Dimens, Animations, Code Java
- XML:
  - Utilisation de <include> pour les boutons du bas (bottom_buttons_layout.xml).
  - Extraction des dimensions dans dimens.xml.
  - Définition de styles (ScoreLabelStyle, ButtonStyle, LargeButtonStyle) dans styles.xml.
  - Ajout de nombreuses couleurs dans colors.xml.
  - Ajout placeholders pour tile_background.xml et button_multiplayer_background.xml.
- Java:
  - MainActivity: Utilisation de switch et teinte pour l'apparence des tuiles (setTileAppearance),
    utilisation de getString pour les scores, ajout listeners et animations simples aux boutons,
    implémentation de restartGame(), ajout stubs autres boutons, ajout enum Direction.
  - Game: Ajout champ/méthodes highScore (stubs load/save), appel updateHighScore après fusion,
    utilisation de List<int[]> pour emptySpaces.
  - OnSwipeTouchListener: Utilisation d'une interface SwipeListener pour découplage.
- Ajout des fichiers d'animation button_press.xml et button_release.xml.
2025-04-03 19:25:08 +02:00
84ca7f9fc3 Feat: Liaison UI-Logique et gestion des swipes
- Modification de MainActivity:
  - Récupération des vues (GridLayout, TextViews).
  - Implémentation de initGameBoardLayout et updateUI pour dessiner la grille
    en fonction de l'état de Game.
  - Création et attachement de OnSwipeTouchListener pour gérer les swipes.
- Modification de Game:
  - Ajout des getters: getGameBoard, getScore, getHighScore (placeholder).
- Création de OnSwipeTouchListener.java pour la détection des gestes.
2025-04-03 19:11:52 +02:00
7eb597650c Feat: Ajout layout initial et ressources UI
- Création de activity_main.xml avec la structure de base (labels score,
  conteneur grille, boutons).
- Création de strings.xml avec les textes initiaux.
- Création de colors.xml avec les couleurs de base.
- Création des fichiers drawable tile_*.xml pour l'apparence des tuiles
  (vide, 2 à 2048).
2025-04-03 18:47:59 +02:00
e3c2cc74a3 Feat: Implémentation de pushLeft et pushRight
- Ajout des méthodes pushLeft et pushRight dans Game.java pour gérer
  le déplacement et la fusion horizontaux.
- Logique 'alreadyCombined' adaptée pour les mouvements horizontaux.
- Ajout de logs de débogage pour pushLeft/pushRight.
- Mise à jour de MainActivity pour tester les quatre directions.
2025-04-03 18:39:34 +02:00
0b297a3089 Feat: Implémentation de pushDown et prévention double fusion
- Implémentation de la méthode pushDown dans Game.java pour le mouvement/fusion vers le bas.
- Ajout de la logique 'alreadyCombined' dans pushUp et pushDown pour empêcher
  une tuile de fusionner plus d'une fois par mouvement.
- Ajout de logs de débogage pour pushUp/pushDown.
- Mise à jour de MainActivity pour tester pushDown.
2025-04-03 18:37:28 +02:00
276cf2e579 Feat: Implémentation de la logique pushUp
- Ajout de l'attribut 'score' à Game.java.
- Implémentation de la méthode pushUp dans Game.java pour gérer:
  - Le déplacement des tuiles vers le haut dans les cases vides.
  - La fusion des tuiles de même valeur.
  - La mise à jour du score lors d'une fusion.
- Modification de MainActivity pour tester pushUp.
2025-04-03 18:34:06 +02:00
1c7ae29651 Refactor: Amélioration de printArray et préparation pour pushUp
- Ajout de retour à la ligne (%n) et d'une ligne vide dans printArray
  pour une meilleure lisibilité dans Logcat.
- Ajout de la signature de la méthode pushUp() (vide) dans Game.java.
- Modification de MainActivity pour tester addNewNumbers/printArray 10 fois.
2025-04-03 18:31:09 +02:00
f72fc5b733 Feat: Ajout de la logique addNewNumbers
- Ajout d'un générateur Random dans Game.java
- Implémentation de la méthode addNewNumbers pour ajouter une tuile 2, 4 ou 8
  sur une case vide aléatoire (Probabilités: 85% pour 2, 10% pour 4, 5% pour 8).
- Appel de addNewNumbers dans MainActivity avant printArray.
2025-04-03 18:28:46 +02:00
6f77e8b347 Feat: Ajout structure de base MainActivity et Game
- Création de MainActivity.java et Game.java
- Initialisation du gameBoard 4x4 dans Game.java
- Ajout de la méthode printArray pour le débogage Logcat
2025-04-03 18:25:33 +02:00
0126838872 Création du projet sous Android Studio 2025-04-03 18:21:45 +02:00