← Retour aux projets

Solveur 2048 (Castle Clash)

Date
2025
Type
Personnel
Code source
Voir le dépôt Git
Technologies
  • Python
  • easyocr

Objectif du projet

Réaliser une application qui permet de résoudre automatiquement le jeu de 2048 présent dans le jeu mobile Castle Clash.

Ma démarche

J’ai découpé le projet en trois étapes :

  1. Trouver un algorithme de résolution. Mes recherches m’ont mené à l’algorithme Expectimax, adapté aux jeux comportant une part de hasard comme le 2048.
  2. Réutiliser un projet existant. J’ai récupéré les fichiers du projet de cczhong11, qui fournit à la fois un simulateur et l’algorithme, plutôt que de tout recoder.
  3. Adapter le programme à mon entrée. Il me restait à faire le lien entre le jeu Castle Clash et ce programme.

Réalisation du projet

Dans Castle Clash, les cases du 2048 ne contiennent pas des chiffres mais des images. Le programme ne pouvait donc pas lire directement l’état de la grille.

J’ai utilisé EasyOCR pour analyser l’image du jeu et en extraire le texte, c’est-à-dire la valeur de chaque case. La grille ainsi reconstituée est ensuite transmise à l’algorithme Expectimax, qui détermine le meilleur coup à jouer. J’ai obtenu des résultats concluants.

Problèmes rencontrés

  • Problème : Une durée de développement très courte, le 2048 étant un événement temporaire du jeu.

    Solution : Partir d’un projet existant (simulateur et algorithme) pour me concentrer uniquement sur l’adaptation à mon entrée.

  • Problème : Une analyse de l’image parfois erronée. Avec ma méthode de récupération de la grille, la police d’écriture du jeu fait que le texte est mal reconnu dans certains cas.

    Solution : Une piste d’amélioration serait de remplacer la recherche de texte par une recherche de modèle (template matching) dans l’image.

Ce que j’en retiens

Ce projet m’a montré l’intérêt de s’appuyer sur un travail existant quand le temps est limité, et les limites de l’OCR quand le texte à lire est stylisé. Dans une prochaine version, je privilégierais la reconnaissance de modèles pour fiabiliser la lecture de la grille.

← Retour aux projets