Langage perl - pb jeu du pendu
Fermé
Papillempy
-
Papillempy -
Papillempy -
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 *.
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:
- Langage perl - pb jeu du pendu
- Jeu du pendu - Télécharger - Vie quotidienne
- Langage ascii - Guide
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
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";
}
}
#!/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";
}
}
Bon courage pour la suite et merci bcp.
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!!!