mardi 6 septembre 2011

Challenge "pendu"


Les challenges sont un moyen de gagner quelques points bonus, mais surtout c'est un moyen amusant de travailler le cours d'informatique. Ce que je vous propose dans ce premier challenge de l'année c'est de réalisez un jeu de pendu en langage C ...
Le principe de "challenge" vous a été décrit en cours, mais j'en fais ici un rapide rappel. C'est un travail optionnel, vous n'êtes donc pas obligé de le faire, cependant :
  • Le sujet est spécialement choisi pour vous faire travailler exactement ce dont vous avez besoin (pour faire un rappel en début d'année, ou préparer une interro' ou éval'). C'est plus sympathique que de bachoter, et ça vous fera gagner en expérience.
  • Je ferai une analyse des codes rendu, vous aurez donc un retour sur la qualité de votre programme. C'est un des meilleurs moyen de progresser
  • Cela pourra vous rapporter quelques points bonus (comptabilisé dans le contrôle continu).
  • C'est un moyen de me montrer votre intérêt pour l'informatique, et surtout le travail que vous effectuez. Si vous ne réalisez pas ces travaux, je n'aurai pas d'éléments tangible pour vous "défendre" en conseil de classe, si le besoin se présente...
Je vous proposerai des challenges de ce type tout au long de l'année.

Jeu de pendu
Le jeu de pendu est décrit ici. Je vous demande d'en implémenter une version simplifié suivant très exactement ce déroulement :
  1. Le programme demande la saisie d'un mot qu'on appellera "secret". (un simplescanfpour la saisie, fera l'affaire.). Bien entendu on suppose qu'il y a deux joueurs et que ce n'est pas la même personne qui saisi le mot secret et qui joue...
  2. Le programme crée (et affiche) alors un mot "masque" c'est à dire une chaîne de caractère qui ne contient que des "-" et autant qu'il y a de lettres dans le mot secret. Exemple, si le mot secret est "toto", le mot masque est "----".
  3. Le programme demande la saisie d'une lettre...
  4. ... va vérifier si cette lettre est présente dans le mot secret et modifie en conséquence le mot masque, et l'affiche. Exemple (suite), si l'utilisateur saisie la lettre "t" le mot masque doit devenir "t-t-".
  5. Le programme regarde si toutes les lettres ont été devinées, dans ce cas il arrête le jeux par victoire et affiche le mot "secret".
  6. Le programme regarde le nombre de tentative ratées et arrête le jeu s'il atteint 10.
  7. Le programme reprend à l'étape 2 si le nombre de tentatives ratées est inférieur à 10.
Modalités de rendu du travail
Pensez que je vais recevoir beaucoup de programmes donc veillez bien à suivre très scrupuleusement les modalité de rendu de ce travail. Si vous ne les suivez pas, je me réserve le droit ne pas traiter votre code. De plus votre programme sera évalué pas un script (un autre programme), donc si vous décidez de changer ne pas suivre les recommandation, votre travail sera compté comme faux.
  • Votre programme doit tenir dans un seul fichier, dont le nom est la concaténation du nom du binôme qui l'a crée. Vous pouvez rendre un travail seul, mais pas de trinôme.
  • Vous me l'envoyez par mail (mon nom, suivit de @esiea.fr ) avec le fichier de code en attachement, en utilisant votre adresse mail ESIEA. Attention à bien m'envoyer votre dernière version, bien testée...
  • Pour vous assurer que vous suivez bien les modalités , vous pouvez tester votre programme grâce au fichier "testPendu1.txt" attaché à cet article. Pour cela, il vous faut lancer votre programme comme ceci :

  • ./monProgramme < testPendu1.txt
    Cette manière de faire exécute le programme "monProgramme", en faisant comme si ce qui est dans le fichier "testPendu1.txt" était tapé au clavier. Dans ce cas précis, cela veux dire que le mot secret est "toto", et que le joueur propose les lettres "t,x,y,z,o",... et donc gagne la partie. La sortie du programme doit ressembler à ça :

  • toto
    ----
    t
    t-t-
    x
    t-t-
    y
    t-t-
    z
    t-t-
    o
    toto
    
  • Votre programme devra impérativement faire toute les allocations mémoire de tableau via la fonction malloc. Aucune allocation via l'opérateur [ ] n'est autorisée. Vous devrez aussi pensez à faire les désallocations (fonction free) des zones mémoires allouées.
  • Date limite de rendu lundi 24 septembre.
Annexe(s) :

testPendu1.txt :: 16 B