PRoblème en javascript, jeu de pendu

cs_Chihiro Messages postés 5 Date d'inscription mardi 20 mai 2003 Statut Membre Dernière intervention 4 juin 2003 - 3 juin 2003 à 15:23
Mal_au_DOS Messages postés 39 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 28 octobre 2008 - 9 mars 2008 à 17:53
Voilà, j'ai un gros problème dans mon script qui ne marche pas, parce que je suis vraiment nulle en programmation... Est ce que quelqu'un pourrait y jeter un petit coup d'oeil et éventuellement le corriger... Merci d'avance aux webmasters qui se pencheront sur mon problème...

Voici mon programme, c'est sensé être un Jeu de Pendu:
Le début marche, mais la vérification des lettres c'est pas trop ça...

<html> <!-- Projet de programmation année 2003 -->
<head> <!-- Le Jeu Du Pendu -->
<script language="JavaScript">

var selection;
sports = new Array('cyclisme', 'athletisme', 'rugby', 'escalade');
prenoms = new Array('juliette', 'david', 'stephanie', 'laurent');
metiers = new Array('jardinier', 'ingenieur', 'acteur', 'professeur');

function fctDebut(){
alert("Pour commencer à jouer, choisis une rubrique et clique sur OK.");
}

function fctRegle(){
alert("Règle du jeu: Il te faut trouver le mot caché en proposant différentes lettres. Attention, tu n'as droit qu'à 6 propositions fausses avant d'être pendu... Bon jeu !");
}

function fctSelectRubrik(){
for(i = 1 ; i <= 3; i++){
if(document.jeupendu.rubrique.options[i].selected == true)
{selection = i}
}
}

function fctSelectMot(){
j = Math.round((3-0)*Math.random() +0);
switch(selection){
case 1 : mothaz = sports[j]; break;
case 2 : mothaz = prenoms[j]; break;
case 3 : mothaz = metiers[j]; break;
};


nblettre = mothaz.length; //nblettre est le nombre de lettre du mot à trouver
underscore = new Array();
l = mothaz.length;
for(i = 0; i < l ; i++){
underscore[i]="_ ";}
cpteur = 0;

window.alert("Le mot à trouver contient "+ mothaz.length +" lettres.");
document.jeupendu.motdev.value = underscore //underscore est la variable contenant les caractères de soulignement
}

function seek(lettre){
l= mothaz.length;
lettreprop= 0; // marque si la lettre proposée est bonne
trouve= 0; // trouve est le nombre de lettres trouvées
erreurs= 0; // erreurs est le nombre de proposotions fausses
for(i=0; i<l; i++){
if(lettre== mothaz.substring(i, i+1));
lettreprop =1;
underscore= mothaz.replace(i, "_ ");
trouve++;
}

// Si toutes les lettres ont été trouvées:
if(trouve== l){
alert("Bravo, tu as gagné");}

//Si la lettre proposée ne se trouve pas dans le mot
if(lettre!= mothaz.substring(i, i+1)){
erreurs++;}
document.jeupendu.erreurs.value = erreurs;


//Si le pendu est complet:
if(erreurs == 6)
{alert("Désolée tu as perdu ! Le mot à trouver était "+ mothaz);
}
}



</script>
</head>

<form name="jeupendu">




Rubriques:
<select name="rubrique" onChange="fctSelectRubrik()">
<option > ... Choisis une rubrique ...
<option value="sports"> Sports
<option value="prenoms"> Prénoms
<option value="metiers"> Métiers
</select>

Mot à deviner:

Erreurs (6):

,
,
,
,
,
,
,
,
,
,
,
,
,

----

,
,
,
,
,
,
,
,
,
,
,
,



</form>

</html>

9 réponses

cs_Chihiro Messages postés 5 Date d'inscription mardi 20 mai 2003 Statut Membre Dernière intervention 4 juin 2003 1
4 juin 2003 à 11:49
Excuse moi, de t'embêter encore un peu... mais je ne comprends pas très bien comment mettre a jour underscore dans la partie html du formulaire...
En ce qui concerne la fonction qui remettrait à zéro les variables erreurs et trouve, est ce qu'un bouton reset ne suffit pas?
Et puis encore un énorme merci !
1
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
3 juin 2003 à 16:14
salut,
deja ici ,
function fctSelectMot(){
j = Math.round((3-0)*Math.random() +0);
switch(selection){
case 1 : mothaz = sports[j]; break;
case 2 : mothaz = prenoms[j]; break;
case 3 : mothaz = metiers[j]; break;
};

enleve le dernier ;

ensuite :

function seek(lettre){
l= mothaz.length;
lettreprop= 0; // marque si la lettre proposée est bonne
trouve= 0; // trouve est le nombre de lettres trouvées
erreurs= 0; // erreurs est le nombre de proposotions fausses
for(i=0; i<l; i++){
if(lettre== mothaz.charAt(i)){ // pas de ; mais {
lettreprop =1;
underscore= mothaz.replace(i, "_ ");
// Si toutes les lettres ont été trouvées:
if(++trouve== l){
alert("Bravo, tu as gagné");}
}
else
{

//Si la lettre proposée ne se trouve pas dans le mot
//Si le pendu est complet:
if(++erreurs == 6)
alert("Désolée tu as perdu ! Le mot à trouver était "+ mothaz);

document.jeupendu.erreurs.value = erreurs;

}

Voila
Duss
0
mrshardax Messages postés 47 Date d'inscription jeudi 6 février 2003 Statut Membre Dernière intervention 22 mars 2006 2
3 juin 2003 à 16:19
Bon, j ai juste regarder la fonction de verif des lettres ke j ai retouché un peu ..... le reste m avait l air correct (ce ki ne signifie pas ke ca l etais)

--------------------------------------------------------------------

function seek(lettre){

l= mothaz.length;
lettreprop= 0; // marque si la lettre proposée est bonne
trouve= 0; // trouve est le nombre de lettres trouvées
erreurs= 0; // erreurs est le nombre de proposotions fausses

for(i=0; i<l; i++){
if(lettre == mothaz.charAt(i)) {
lettreprop = 1;
underscore[i] = lettre ;
trouve++;
}
}

// Si toutes les lettres ont été trouvées:
if(trouve== l){
alert("Bravo, tu as gagné");
}

//Si la lettre proposée ne se trouve pas dans le mot
if(lettreprop == 0 ){
erreurs++;
}
document.jeupendu.erreurs.value = erreurs;

//Si le pendu est complet:
if(erreurs == 6) {
alert("Désolée tu as perdu ! Le mot à trouver était "+ mothaz);
}
}

---------------------------------------------------------------------

Un petit conseil, n oublie pas de mettre en page ton code, c est beaucoup plus lisibles et on peut reperer pas mal d erreurs .....

Si tu as encore des problemes, reply
0
cs_Chihiro Messages postés 5 Date d'inscription mardi 20 mai 2003 Statut Membre Dernière intervention 4 juin 2003 1
3 juin 2003 à 18:18
Tout d'abord je tenais à te dire un grand merci pour ton aide. J'ai opéré les modifications que tu m'as conseillées et il demeure encore quelques petits problèmes... En effet, les lettres une fois proposées ne s'affichent pas à la place des tirets et le comtpeur d'erreurs ne fonctionne pas lui non plus... N'aurais-tu pas une petite idée?
D'avance merci !

PS: qu'est ce que tu appelles "mettre en page le code"? Je suis une néophyte dans la programmation (ça fait un mois que j'ai commencé) et en plus je ne sais pas trop comment fonctionne ce site...

<code>
<html> <!-- Del-Grande Marjorie ; Projet de programmation année 2003 -->
<head> <!-- Le Jeu Du Pendu -->
<script language="JavaScript">

var selection;
sports = new Array('cyclisme', 'athletisme', 'rugby', 'escalade');
prenoms = new Array('juliette', 'david', 'stephanie', 'laurent');
metiers = new Array('jardinier', 'ingenieur', 'acteur', 'professeur');

function fctDebut(){
alert("Pour commencer à jouer, choisis une rubrique et clique sur OK.");
}

function fctRegle(){
alert("Règle du jeu: Il te faut trouver le mot caché en proposant différentes lettres. Attention, tu n'as droit qu'à 6 propositions fausses avant d'être pendu... Bon jeu !");
}

function fctSelectRubrik(){
for(i = 1 ; i <= 3; i++){
if(document.jeupendu.rubrique.options[i].selected == true)
{selection = i}
}
}

function fctSelectMot(){
j = Math.round((3-0)*Math.random() +0);
switch(selection){
case 1 : mothaz = sports[j]; break;
case 2 : mothaz = prenoms[j]; break;
case 3 : mothaz = metiers[j]; break;
}


nblettre = mothaz.length; //nblettre est le nombre de lettre du mot à trouver
underscore = new Array();
l = mothaz.length;
for(i = 0; i < l ; i++){
underscore[i]="_ ";}
cpteur = 0;

window.alert("Le mot à trouver contient "+ mothaz.length +" lettres.");
document.jeupendu.motdev.value = underscore //underscore est la variable contenant les caractères de soulignement
}

function seek(lettre){
l= mothaz.length;
lettreprop= 0; // marque si la lettre proposée est bonne
trouve= 0; // trouve est le nombre de lettres trouvées
erreurs= 0; // erreurs est le nombre de proposotions fausses
for(i=0; i<l; i++){
if(lettre== mothaz.charAt(i)){
lettreprop=1;
underscore[i]=lettre;
trouve++;
}
}

// Si toutes les lettres ont été trouvées:
if(trouve== l){
alert("Bravo, tu as gagné");}

//Si la lettre proposée ne se trouve pas dans le mot
if(lettreprop== 0){
erreurs++;}
document.jeupendu.erreurs.value = erreurs;


//Si le pendu est complet:
if(erreurs == 6){
alert("Désolée tu as perdu ! Le mot à trouver était "+ mothaz);
}
}

</script>
</head>

<form name="jeupendu">




Rubriques:
<select name="rubrique" onChange="fctSelectRubrik()">
<option > ... Choisis une rubrique ...
<option value="sports"> Sports
<option value="prenoms"> Prénoms
<option value="metiers"> Métiers
</select>

Mot à deviner:

Erreurs (6):

</form>

</html>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mrshardax Messages postés 47 Date d'inscription jeudi 6 février 2003 Statut Membre Dernière intervention 22 mars 2006 2
3 juin 2003 à 23:40
Ok, je me suis pencher un peu plus longtemps sur ton probleme, et j ai trouver deux erreurs :

Premiere : les variables trouve et erreur doivent etre en portee globale, cad au debut, pres de ta variable selection je crois, car, dans l etat actuel, ces variables sont remises a zero a cahque fois ke tu seek une lettre, donc, tu ne trouve jamais et tu n as jamais d erreur.

La contrepartie et ke tu dois faire une fonction ki remet a zero ses deux variables et ke tu dois appeler a chaque nouveau jeu.

Deuxieme point, tu met bien a jour ta variable underscore, mais tu dois aussi la mettre a jour a l interieur de ton formulaire HTML grace a cette ligne

(si je me souviens bien des variables, j ai plus le code en tete, mais tu vas retrouver)

-------------------------------------------------------------------

document.jeupendu.motdev.value = underscore ;

--------------------------------------------------------------------

Et voila, chez moi, tout fonctionnais bien.

Si il y a encore des problemes ....
0
cs_Chihiro Messages postés 5 Date d'inscription mardi 20 mai 2003 Statut Membre Dernière intervention 4 juin 2003 1
4 juin 2003 à 11:50
Je tenais à vous remercier pour vos lumières et l'aide précieuse que vous m'avez apportée !!!
Merci beaucoup !
Cordialement, Chihiro !
0
mrshardax Messages postés 47 Date d'inscription jeudi 6 février 2003 Statut Membre Dernière intervention 22 mars 2006 2
4 juin 2003 à 12:08
Pour mettre a jour l underscore

-------------------------------------------------------------------

for(i=0; i<l; i++){
if(lettre== mothaz.charAt(i)){
lettreprop=1 ;

// met a jour la variable javascript
underscore[i]=lettre ;
// met a jour la valeur du formulaire HTML
document.jeupendu.motdev.value = underscore ;
trouve++ ;
}
}

-------------------------------------------------------------------

En effet ta variable javascripte n est pas liee a ton champs HTML et inversement : mettre a jour l un ne signifie pas mettre a jour l autre.

C est exactement le meme probleme pour tes variables trouve et erreur. Un bouton reset met a blanc tout les champs de saisie HTML et n intervient en rien dans ton javascript. Tu dois faire une fonction :

------------------------------------------------------------------

function Reset() {
trouve = 0 ;
erreurs = 0 ;
}

-------------------------------------------------------------------

et inclure un :
-------------------------------------------------------------------

-------------------------------------------------------------------

dans ton formulaire pour mettre a jour ET le HTML ET le JAVASCRIPT.

Voila, j espere avoir ete suffisamment claire.

Bonne continuation.
0
cs_Chihiro Messages postés 5 Date d'inscription mardi 20 mai 2003 Statut Membre Dernière intervention 4 juin 2003 1
4 juin 2003 à 20:50
Bonsoir,

Ceci sera le dernier message, avec pour but de te remercier pour tes explications (très très claires) et tes conseils avisés !
Merci vraiment beaucoup, sans toi je ramerai encore...

Chihiro !
0
Mal_au_DOS Messages postés 39 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 28 octobre 2008
9 mars 2008 à 17:53
Sinon tu peux aller voir ma source qui est justement un jeu de pendu à http://www.javascriptfr.com/infomsg_PROBLEME-JAVASCRIPT-JEU-PENDU_143811.aspx

A+
0
Rejoignez-nous