AIDE le jeu du pendu en script shell

Fermé
Camlel - Modifié par jipicy le 20/10/2016 à 15:45
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 22 oct. 2016 à 11:23
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 !!
A voir également:

3 réponses

Utilisateur anonyme
20 oct. 2016 à 16:38
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
Je ne suis que un debutant désolé, mais merci beaucoup !
0
Utilisateur anonyme > Camlel
21 oct. 2016 à 08:47
débutant ? au jeu du pendu ? mdr !

ok, ok, je sors.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié par zipe31 le 22/10/2016 à 11:43
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
testexo est mon fichier avec dans chaque ligne un mot (il y a 10 lignes)
0