Le but du projet est d'écrire plusieurs programmes permettant de jouer avec des

chaines de caractères.  La progression est incrémentale.

 

Programme 1 - le typo-speed-o-meter

 
Le programme va prendre en paramètre un nom de fichier. Ce fichier va contenir des chaines de caractères séparées par les séparateurs habituels (espaces, tabulation ou retour à la ligne).
 
La première version du programme affichera la première chaine du fichier sur la sortie standard et va se mettre en attente sur l'entrée standard.  Le joueur (c'est un jeu!) va alors saisir une chaine. Si c'est bien celle qui est
affichée, le programme affiche la chaine suivante etc.  Si le joueur fait une faute de frappe, il doit recommancer.
 
Lorsque toutes les chaînes du fichier ont été saisies, le programme affiche quelques données comme : le temps écoulé, le nombre de mots total, le nombre de fautes faites par le joueur.
 
Une fois ce prototype fonctionnel, vous allez l'améliorer : 
  • Un argument optionel sur la ligne de commande devra permettre de spécifier le nombre de mots. Si le fichier en contient moins, on revient au premier, si il en contient plus, on s'arrete.
  • Au lieu de lire dans le fichier au fur et à mesure, le programme va charger en mémoire tous les mots dans un tableau. Attention, si l'argument optionel est présent, on connait la taille du tableau avant de lire le fichier, sinon ce n'est pas le cas... À vous de répondre à ce problème.
  • Au lieu de proposer les mots dans l'ordre, le programme va tirer  aléatoirement un indice du tableau à chaque étape. Si l'indice n'a pas déjà été tiré au sort, le mot associé est proposé, sinon le tirage aléatoire recommence.
 

Programme 2 - le pendu matriciel inversé

 
Le fichier d'entrée contient maintenant une grille de lettres qui va être affichée à l'utilisateur. 
 
Par exemple :
 
coucou
eratum
laitié
alteré
 
Celui-ci devra taper des mots, si ils apparaissent dans la grille verticalement ou horizontalement, les lettres correspondantes sont remplacées par des '*'. Les mots d'une lettre valent 1pt, ceux de deux lettres, 2*2pt, trois lettres 3*3pts etc. Les erreurs valent toutes un malus égal au nombre de lettres saisies.
 
Lorsque la grille ne contient plus que des '*', le programme s'arrete et propose les mêmes statistiques que le programme précédant.
 
Une fois le prototype fonctionnel, vous allez l'améliorer :
  • le fichier d'entrée doit maintenant ressembler à celui du typo-speed-meter.  C'est à vous de construire la grille. Vous êtes libres sur la facon de disposer les mots (horyzontalement seulement, verticalement seulement, un mélange des deux). Vous pouvez insérer des caractères tirés aléatoirement dans l'alphabet mais tous les mots du fichiers doivent etre présents.
  • comme pour le programme précédant, ajouter une option pour limiter le nombre de mots, faites en sorte que les mots choisis ne soit pas les premiers du fichier mais tiré aléatoirement etc.
 

Programme 3 - le pendu matriciel

 
Variante du programme précédant, mais cette fois l'utilisateur ne voit qu'une grille avec des '*' et doit trouver les mots qui se cachent derrière.
 
Amélioration optionelle : si le paramètre est une url au lieu d'un nom de fichier, le programme va charger la page web correspondante, la nettoyer (enlever toutes les balises html), et l'utiliser comme fichier d'entrée.