Conseils de programmation de JARNAC ----------------------------------- Pour une compatibilité avec l'affichage fourni, le plateau d'un joueur doit être représenté (ou doit pouvoir être converti en un tableau de chaines de caractères), tel que la premiere chaine représente les lettres en vrac et les suivantes les mots déjà posés. Sont fournis les fichiers : - Documentation : index.md ( enoncé ) aLireAvantDeCommencerLaProgrammation ( ce descriptif ) RegleJarnac1.pdf ( regle du jeu de JARNAC ) dictionnaire.txt ( un dictionnaire ) - Les bibliothèques : mEquivalence.hpp mGereLesAnagrammes.hpp mCalculeLesPoints.hpp mTrouveLesMotsDansLeDico.hpp vueEnModeTexte.hpp controleurChoixAction.hpp - Les fichiers de tests : TestCalculeLesPoints.cpp TestEquivalenceDeBase.cpp TestGereLesAnagrammes.cpp - Les utilitaires IllustrationInterface.cpp vueEnModeTexte.cpp */ Votre projet doit contenir au moins une implantation pour chacune des bibliotheques qui passe le test fourni C'est à dire : 1.un fichier mCalculeLesPoints.cpp qui implante mCalculeLesPoints.hpp et passe le test TestCalculeLesPoints.cpp 2.un fichier mGereLesAnagrammes.cpp qui implante mGereLesAnagrammes.hpp et passe TestGereLesAnagrammes.cpp ///BEGIN SOLUTION g++ mGereLesAnagrammes-correction.o mTrouveLesMotsDansLeDico-correction.o TestGereLesAnagrammes.o -o TestGereLesAnagrammesOK /// END SOLUTION 3.Le nouveau fichier de test TestEquivalenceEnrichi.cpp qui vérifie la validation de la spécification de equivautA. 4. un fichier mEquivalenceDeBase.cpp qui implantent mEquivalence.hpp et passent les tests TestEquivalenceDeBase.cpp et TestEquivalenceEnrichi.cpp 5. un fichier mTrouveLesMotsDansLeDico.cpp qui implante les fonctions de mTrouveLesMotsDansLeDico.hpp un fichier controleurChoixAction.cpp pour implanter les fonctions de controleurChoixAction.hpp donc interagir d'une part avec l'interface utilisateur vueEnModeTexte.cpp et d'autre part avec le fonctions du modele c'est à dire les fonction des fichiers commencant par un m. Pour compiler il faut faire pour chaque fichier.cpp: 1. clang++ -c fichier.cpp cela créé fichier.o dans le même repertoire, ensuite il suffit de suivre le cours sur la compilation séparée de info111 pour savoir quelles instructions taper exactement (à savoir pour l'exemple). 2. clang++ IllustrationInterface.o mEquivalence.o vueEnModeTexte.o -o illustration clang++ TestEquivalence.o mEquivalence.o -o testEquivalence dans un premier temps pour préparer les exécutables 3. ./nomExecutable pour exécuter le programme qui contient la fonction int main(). Ainsi la suite d'instructions : clang++ -c mEquivalence.cpp clang++ -c TestEquivalenceEnrichi.cpp clang++ mEquivalence.o TestEquivalenceEnrichi.o -o testEquivautA ./testEquivautA permet de savoir si votre test enrichi passe ou non. et si on la complete par : clang++ -c IllustrationEquivalence.cpp clang++ -c vueEnModeTexte.cpp clang++ -c mCalculeLesPoints.cpp clang++ mEquivalence.o IllustrationEquivalence.o vueEnModeTexte.o mCalculeLesPoints.o -o illustre L'instruction suivante permet d'obtenir une suite d'affichage de plateaux deux à deux équivalents (ou non) pour illustrer que l'équivalence de plateaux ne réside pas seulement dans le nombre de points identiques ni l'égalité des mots stockés. ./illustre Partie I COMPRENDRE le trio Spécification Test Codage : compilation séparée Exercice 1: Dans un fichier mCalculeLesPointsConstante.cpp écrire une fonction qui implante l'unique fonction de la bibliothèque mCalculeLesPoints.hpp en renvoyant toujours la constante 100 c'est à dire sans en respecter la spécification indiquée dans la bibliothèque ni dans la règle du JARNAC. Exercice 2: Ecrire la séquence de compilation qui permet de tester la fonction du fichier mCalculeLesPointsConstante.cpp et mettre en évidence que certains tests échouent. Exercice 3: Ecrire la séquence de compilation qui permet de tester la fonction d'un fichier mCalculeLesPointsJarnac.cpp implantant l'unique fonction de la bibliothèque mCalculeLesPoints.hpp en respectant sa spécification précisée dans la bibliothèque et dans la règle du JARNAC jusqu'à ce qu'elle passe tous les tests. PARTIE II: COMPRENDRE le trio Spécification-Test-Codage : L'écriture d'un test fiable Exercice 4: compiler, éditer les liens et exécuter le fichier IllustrationInterface.cpp. Exercice 5: Comparer l'affichage écran de ce fichier avec le code du test du fichier TestEquivalenceDeBase.cpp Exercice 6: Dans un fichier TestEquivalenceEnrichi.cpp, proposer un test enrichi pour la fonction equivautA. Exercice 7: coder la fonction equivautA, jusquà ce qu'elle passe les deux tests. PARTIE III: INTERAGIR avec des fichiers Exercice 8: Créer un dictionnaire de test avec seulement 20 mots dedans. Exercice 9: A l'aide de ce dictionnaire, écrire un test pour les fonctions de la bibliothèque mTrouveLesMotsDansLeDico.hpp. PARTIE IV: CODER avec un encadrement Exercice 10: implanter la bibliothèque mGereLesAnagrammes.hpp jusqu'à ce qu'elle passe le test TestGereLesAnagrammes.cpp PARTIE V: CODER en réutilisant Exercice 11: utiliser toutes les biliothèques précedantes pour coder votre jeu du JARNAC qui utilise l'interface utilisateur fournie. PARTIE VI:CODER librement Exercice 12: Completer votre code pour proposer les extensions du jeu (autre interface utilisateur, IA, etc. )