Projet Jeu Scrabble en C

Création d'une version console du Scrabble® en respectant les règles officielles, avec gestion des joueurs (2 à 4), calcul dynamique des scores, et validation des mots en langage C.

Admin

1/1/20242 min read

Dans le cadre de mon Bachelor en informatique à l’ECE Paris (2023-2024)

📌 Objectif

Créer une version console du Scrabble® en respectant les règles officielles, avec gestion des joueurs (2 à 4), calcul dynamique des scores, et validation des mots. Mon rôle : conception de l’algorithme de placement des mots et gestion des interactions utilisateur.

⚙️ Réalisation technique

  • Structures de données :

    • Plateau de jeu en tableau 2D (15x15) avec cases spéciales (#, @, §, etc.).

    • Structs pour les joueurs (pseudo, score, chevalet).

    • Pioche générée aléatoirement (102 jetons avec valeurs et occurrences conformes aux règles).

  • Fonctionnalités clés :

    • Placement des mots avec vérification des contraintes (case centrale, connexion aux mots existants).

    • Calcul des scores incluant les multiplicateurs de cases (&, %, @).

    • Menu interactif (nouvelle partie, scores, aide).

    • Système de sauvegarde/chargement de partie (bonus implémenté).

  • Outils : Code::Blocks, Doxygen pour la génération de graphes d’appel, Git pour le versionnement.

🚀 Défis relevés

  • Validation en temps réel : Implémentation d’un algorithme pour vérifier que les mots s’appuient sur les lettres existantes (logique de mots croisés).

  • UI/UX en console : Utilisation de gotoligeol pour déplacer le curseur et color pour les cases spéciales (ex : § en rouge).

  • Gestion des conflits : Résolution des problèmes de synchronisation entre joueurs lors des tours (ex : gestion des ex æquo avec tri alphabétique).

💡 Bonus implémentés

  • IA adversaire : Développement d’un bot capable de former des mots de 3 à 7 lettres à partir de son chevalet (algorithme de recherche dans un dictionnaire trié).

  • Dictionnaire intégré : Téléchargement et parsing d’un fichier texte de 300k mots français pour la validation automatique (librairie curl utilisée pour le scraping initial).

  • Chronomètre : Limitation du temps de réflexion à 2 minutes par tour (fonction clock() de la bibliothèque time.h).

📈 Compétences mobilisées

  • Programmation C : Manipulation de pointeurs, structs, fichiers.

  • Algorithmie : Recherche optimisée dans des structures de données complexes.

  • Travail d’équipe : Répartition des tâches avec 2 coéquipiers (GitHub pour le merge des branches).

  • Rigueur : Respect strict des règles du Scrabble® et tests unitaires