Rechercher : dans
Par :

Langage perl - pb jeu du pendu

Dernière réponse le 15 nov 2008 à 12:39:20 Papillempy, le 12 nov 2008 à 12:59:46 
 Signaler ce message aux modérateurs

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 *.

Configuration: Windows Vista
Firefox 3.0.1

Meilleures réponses pour « Langage perl pb jeu du pendu » dans :
[Programmation] Comment débuter, quel langage? VoirComment débuter, quel langage? Introduction Ceux que l'on peut utiliser Delphi/Pascal Java Python .Net Smalltalk Ceux que l'on peut utiliser à la rigueur C/C++ PHP Ada Lisp/Caml/... Ceux que l'on peut ne pas utiliser
Perl - Introduction VoirHistoire de Perl Perl (Practical Extraction and Report Language) est un langage de programmation dérivé des scripts shell, créé en 1986 par Larry Wall afin de mettre au point un système de News entre deux réseaux. Il s'agit d'un langage interprété...
Les variables avec Perl VoirConcept de variable avec Perl Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Perl peuvent être de trois...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

dodie, le 14 nov 2008 à 14:26:34

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";

}
}

Répondre à dodie

2

Papillempy, le 14 nov 2008 à 16:14:46

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.

Répondre à Papillempy

3

dodie, le 14 nov 2008 à 16:19:30

ça fait deux heures que je suis sur l'étape 4 j'arrive pas à compter le nombre de lettres justes !!!!

Répondre à dodie

4

Papillempy, le 14 nov 2008 à 16:24:10

Je te donne une réponse dès que j'ai un peu plus avancé...

Répondre à Papillempy

5

dodie, le 15 nov 2008 à 02:27:22

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

Répondre à dodie

6

 Papillempy, le 15 nov 2008 à 12:39:20

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!!!
empy31@hotmail.fr

Répondre à Papillempy
Collection CommentÇaMarche.net