AIDE le jeu du pendu en script shell

Camlel -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, je voudrais réaliser un script shell du célébre jeu du pendu.
Voici mon script:
#!/bin/sh

nbtent=9
nbligne=$(($$%10+1))
var=`head -$nbligne testexo | tail -1`
pendu=$(echo $var | tr "[a-z]" "-" )
nblettre=$(echo -n "$mot" | wc -c)
nbtent2=0
echo $var
echo "le mot est $pendu avec 10 tentatives."
echo "Pour commencer la partie de Pendu, il faut une lettre :"
read lettre
while test $nbtent -ne 0
do 
 pres=$(echo $var | grep -c "$lettre") 
 if [ $pres -eq 1 ]
 then 
 echo "lettre là"
 pendu1=$(echo "$var" | sed 's/'$lettre'/£/g' )
 pendu2=$(echo "$var" | sed 's/[a-z]/-/g' )
 pendu3=$(echo "$pendu1" | sed 's/[a-z]/-/g')
 pendu4=$(echo "$pendu3" | sed 's/£/'$lettre'/g')
 else
 echo "lettre pas la" 
fi
pendu=$pendu4

nbtent=$(($nbtent-1))
nbtent2=$(($nbtent+1))
 echo $nbtent2

echo "saisir lettre"
read lettre
done


Mon probleme est que j'aimerais prendre la valeur de pendu4 et le mettre dans pendu et continuer de jouer en affichant les lettres que j'ai déja trouvé, mais quand je fais ce que je fais il affiche seulement la lettre lu juste et non celle avant déja decouverte.
(J'espere vous arrivez à me suivre car j'ai l'impression que je m'explique tres mal).
Enfin, si quelqu'un peut m'aider ça me ferait vraiment plaisir !!

3 réponses

  1. Utilisateur anonyme
     
    salut,

    tu devrais revoir les règles du pendu :
    ce n'est pas n tentatives, mais n tentatives infructueuses.
    ce n'est pas pareil !

    comment se fait-il que ton script ne comporte pas de commentaires ?
    tu n'as pas écrit d'algorithme avant d'écrire le code ?

    il me semble, si j'ai bien compris, que tous tes sed sont inutiles.
    tu doit réunir les lettres qui ont été précédemment trouvées dans une variable, et construire une regex :
    motCherchE=monmotàmoi
    lettresOK=o
    lettresOK=${lettresOK}t
    #affichage
    echo "$motCherchE" | sed 's/[^'$lettresOK']/_/g'

    et pense à soigner le nommage de tes variables.
    var, par exemple, ça n'indique pas ce dont il s'agit.
    3
    1. Camlel
       
      Je ne suis que un debutant désolé, mais merci beaucoup !
      0
      1. Utilisateur anonyme > Camlel
         
        débutant ? au jeu du pendu ? mdr !

        ok, ok, je sors.
        0
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,



    Rhaaaaaa, il manque une image dans le gif généré ;-(



    Je me suis servi en parti de ton script, en y appliquant les bons conseils de qqchquicommenceparQ ;-)

    J'y ai rajouté un poil de tput pour la mise en page et la présentation.

    J'ai remplacé ton random par la commande shuf.

    Quelques autres petites modifs :
    nbligne=$(($$%10+1))
    var=$(head -$nbligne testexo | tail -1)

    Modifié en :
    mothasard="$(shuf -n 1 testexo)"


    pendu=$(echo $var | tr "[a-z]" "-" )
    nblettre=$(echo -n "$mot" | wc -c)

    Modifiés en :
    pendu="${var//[a-z]/-}"
    nblettre="${#var}"


    _______________________________ ☯ Zen my nuggets ☮ ______________________________
    Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot… 🐧
    3
  3. Camlel
     
    testexo est mon fichier avec dans chaque ligne un mot (il y a 10 lignes)
    0