Langage perl - pb jeu du pendu

Fermé
Papillempy - 12 nov. 2008 à 12:59
 Papillempy - 15 nov. 2008 à 12:39
Bonjour,

je dois réaliser le jeu du pendu avec le langage perl mais je rencontre quelques soucis lorsqu'il faut indiquer au deuxieme joueur, quand il rentre sa lettre, en quelle position elle se situe. le programme se bloque sur la position1 pour tte lettre rentrée...

Les conditions de l'énoncé: le mot entré par le premier joueur doit etre de 7lettres, le deuxieme joueur entre n'importe quelle lettre, le programme donne la position si lettre apparait dans le mot sinon il sarrete. par la suite, le deuxieme joueur doit pouvoir jouer 7coups càd le nombre de lettres du mot initial + 3coups de bonus.

Voici mon programme:

#!/usr/bin/perl
use strict;
use warnings;

my $mot;
my $longueur;
my $lettre;
my $lettre1;
my $lettre2;
my $lettre3;
my $lettre4;
my $lettre5;
my $lettre6;
my $lettre7;

print"Saisir un mot ";
$mot=<STDIN>;
chomp $mot;

$longueur=length($mot);

$lettre1=substr($mot,0,1);
$lettre2=substr($mot,1,1);
$lettre3=substr($mot,2,1);
$lettre4=substr($mot,3,1);
$lettre5=substr($mot,4,1);
$lettre6=substr($mot,5,1);
$lettre7=substr($mot,6,1);

if($longueur<7){
print"Votre mot doit avoir 7 caracteres\n";
}
else{
if($longueur>7){
print"Votre mot doit avoir 7 caracteres\n";
}
else{
print"Saisir une lettre ";
$lettre=<STDIN>;
chomp $lettre;
}
if($lettre = $lettre1){
print"La lettre est en position 1\n";
}
if($lettre = $lettre2){
print"La lettre est en position 2\n";
}
if($lettre = $lettre3){
print"La lettre est en position 3\n";
}
if($lettre = $lettre4){
print"La lettre est en position 4\n";
}
if($lettre = $lettre5){
print"La lettre est en position 5\n";
}
if($lettre = $lettre6){
print"La lettre est en position 6\n";
}
if($lettre = $lettre7){
print"La lettre est en position 7\n";
}}

Merci de me répondre et m'indiquer quel serait selon vous le problème. je pense qu'il faut rajouter quelque chose entre la lettre rentrée et faire un lien avec la position de la lettre composant le mot, mais quoi?

Merci d'avance
Empy *.
A voir également:

1 réponse

j'ai le même travail à faire que toi (INLF15 Mme Zaoui)et j'en suis à la quatrième étape pour l'instant ça fonctionne !donc je te donne mon algorithme ça te fera gagner du temps:
#!/usr/bin/perl
use strict;
use warnings;

my $mot;
my $longueur;
my $lettre;
my $lettre1;
my $lettre2;
my $lettre3;
my $lettre4;
my $lettre5;
my $lettre6;
my $lettre7;
my $i;

while($longueur!=7){
print"Saisir un mot ";
$mot=<STDIN>;
chomp $mot;
system('cls');
$longueur=length($mot);

print"Votre mot doit avoir 7 caracteres\n";
}
for($i=1;$i<=10;$i=$i+1){
print"Saisir une lettre ";
$lettre=<STDIN>;
chomp $lettre;


$lettre1=substr($mot,0,1);
$lettre2=substr($mot,1,1);
$lettre3=substr($mot,2,1);
$lettre4=substr($mot,3,1);
$lettre5=substr($mot,4,1);
$lettre6=substr($mot,5,1);
$lettre7=substr($mot,6,1);



if($lettre eq $lettre1){
print"La lettre est presente en position 1\n";
}
if($lettre eq $lettre2){
print"La lettre est presente en position 2\n";
}
if($lettre eq $lettre3){
print"La lettre est presente en position 3\n";
}
if($lettre eq $lettre4){
print"La lettre est presente en position 4\n";
}
if($lettre eq $lettre5){
print"La lettre est presente en position 5\n";
}
if($lettre eq $lettre6){
print"La lettre est presente en position 6\n";
}
if($lettre eq $lettre7){
print"La lettre est presente en position 7\n";

}
}
0
Je te remercie bcp de m'avoir envoyé ton algo, à force de perseverance et de multiples recherches j'ai fini par avancer...je commence l'étape 4!!!
Bon courage pour la suite et merci bcp.
0
dodie > Papillempy
14 nov. 2008 à 16:19
ça fait deux heures que je suis sur l'étape 4 j'arrive pas à compter le nombre de lettres justes !!!!
0
Papillempy > dodie
14 nov. 2008 à 16:24
je te donne une réponse dès que j'ai un peu plus avancé...
0
dodie > Papillempy
15 nov. 2008 à 02:27
en tout cas c'est vraimment cool je pensais pas que j'allais butter sur ça je pensais même finir mon devoir assez vite mais j'ai de gros probleme j'ai besoin d'aide!!!!!, mais si jamais on s'enverra nos trucs comme ça je pense qu'on pourrait aller plus vite
0
Coucou,

je n'ai pas tout compris à ton dernier msg... lol. J'ai un peu réfléchi et je pense que pour qu'il y ait marqué "bravo, tu as gagné" ou "tu es pendu" il faut poser un compteur sur chaque lettre du mot.Ainsi, à chaque fois que tu rentreras une lettre, si elle correspond a une de celles composant le mot, alors le compteur monte de 1. L'arret, c'est quand ton compteur est =7...Voila, pour le moment, c juste ma pensé, je ne l'ai pas vérifié, ni tapé sur crimston...j'y travail cet aprem. Je te donne mon adresse, je pense que ca ira plus vite pour que l'on communique!!!
0