PRoblème en javascript, jeu de pendu

Messages postés
5
Date d'inscription
mardi 20 mai 2003
Dernière intervention
4 juin 2003
- 3 juin 2003 à 15:23 - Dernière réponse :
Messages postés
39
Date d'inscription
samedi 3 juin 2006
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>
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
5
Date d'inscription
mardi 20 mai 2003
Dernière intervention
4 juin 2003
- 4 juin 2003 à 11:49
1
Merci
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 !

Merci cs_Chihiro 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_Chihiro
Messages postés
890
Date d'inscription
lundi 8 avril 2002
Dernière intervention
29 juillet 2004
- 3 juin 2003 à 16:14
0
Merci
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
Commenter la réponse de cs_Duss
Messages postés
47
Date d'inscription
jeudi 6 février 2003
Dernière intervention
22 mars 2006
- 3 juin 2003 à 16:19
0
Merci
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
Commenter la réponse de mrshardax
Messages postés
5
Date d'inscription
mardi 20 mai 2003
Dernière intervention
4 juin 2003
- 3 juin 2003 à 18:18
0
Merci
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>
Commenter la réponse de cs_Chihiro
Messages postés
47
Date d'inscription
jeudi 6 février 2003
Dernière intervention
22 mars 2006
- 3 juin 2003 à 23:40
0
Merci
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 ....
Commenter la réponse de mrshardax
Messages postés
5
Date d'inscription
mardi 20 mai 2003
Dernière intervention
4 juin 2003
- 4 juin 2003 à 11:50
0
Merci
Je tenais à vous remercier pour vos lumières et l'aide précieuse que vous m'avez apportée !!!
Merci beaucoup !
Cordialement, Chihiro !
Commenter la réponse de cs_Chihiro
Messages postés
47
Date d'inscription
jeudi 6 février 2003
Dernière intervention
22 mars 2006
- 4 juin 2003 à 12:08
0
Merci
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.
Commenter la réponse de mrshardax
Messages postés
5
Date d'inscription
mardi 20 mai 2003
Dernière intervention
4 juin 2003
- 4 juin 2003 à 20:50
0
Merci
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 !
Commenter la réponse de cs_Chihiro
Messages postés
39
Date d'inscription
samedi 3 juin 2006
Dernière intervention
28 octobre 2008
- 9 mars 2008 à 17:53
0
Merci
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+
Commenter la réponse de Mal_au_DOS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.