Nombre aléatoire (stocker la valeur)

Signaler
Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Bonjour à tous ,
je vous donne une petite idée sur ce que je voudrais faire ou plutôt reproduire à ma manière ; il s'agit d'un petit jeux (juste prix,pr certains)
où la machine sélectionne un nombre aléatoire, et puis c'est à l'utilisateur de proposer à chaque fois un nombre (deviner) en lui donnant un indice à chaque fois en fonction de sa proposition ;

function choix() {

valeur = Math.round(Math.random() * 1000);
document.formulaire.nombre.value = valeur;
document.formulaire.proposition.value = "";
alert(valeur);

}
;
<form name="formulaire">
        
        
        

         
        
        </form>


ceci étant dit , moi j'aimerai retourne juste le nombre générée par la fonction , mais le souci c'est que à chaque fois qu'on fait appel à la fonction le nombre change , ce qui est logique .
donc j'aimerai pouvoir stocker ce nombre généré, pour ensuite le comparer .
Merci de me donner juste des pistes &&/|| idées et je m'en chargerai du reste ,parceque je veux pas faire du copier coller , donc je cherche juste quelques idées afin de m'en sortir avant de passer à d'autres quiz js .

et Merci d'avoir pris le temps de lire mon msg .

21 réponses

Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
1
et oui , enfin j'ai la valeur qui change pas ,reste plus qu'à faire mes comparaisons en fonction de ce que je voudrais faire apparaitre ,
voici mon code :
function choix() {

if (document.formulaire.proposition.value == "" ) {
valeur = Math.round(Math.random() * 1000);

alert('Veuillez saisir un nombre')
}
else {
alert(valeur)
}

}


<form name="formulaire">

       
        

        
        
        </form>


si vous avez des remarques ou des conseils entre pour bien avancer en javascript , je suis preneur , et Merci pour votre suivi et réponses tout au long du sujet .
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
if (document.formulaire.proposition.value == "" ) {
je ne pense pas que cela soit la bonne piste !

vous avez 2 boutons, non ?
l'un qui <choisir un nombre>
ben... justement, choisissez y votre nombre
l'autre qui
ben... justement, testez y la proposition du
joueur par rapport au nombre choisi
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
Bonjour,
je ne comprend pas votre souci....
faites le calcul lorsque c'est nécessaire et
pas à chaque appel
donc, pour l'instant :

<script type="text/javascript">
var valeur = Math.round(Math.random() * 1000);
function choix()
{ document.formulaire.proposition.value = "";
alert(valeur);
}
</script>
<form name="formulaire">





</form>



Cordialement
Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
1
merci , de votre réponse mais le souci c'est que à chaque fois que je clique (appel à la fonction) , le numéro change , donc j'aimerai avoir une astuce pour pouvoir le stocker,aussi longtemps que possible(tant que l'utilisateur n'a pas trouvé le bon nombre!!)
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
quel numéro ?

dans ce que je vous montre, en ayant un ch'tiot
poil modifé votre exemple,

un nombre aléatoire est choisi au
chargement de la page et mémorisé dans valeur
cliquez tant que vous voulez sur ">proposez<"
il ne change pas
encore moins si vous cliquez sur ">choisir un nombre<"
puisque là on ne fait rien

vous n'avez même pas essayé ? si ?
Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
1
je l'ai essayé à la validation du formulaire, mais ca avait le même effet ,donc le problème persistait ,j'essaye le chargement de la page , ca devrait marcher à première vue , je vous tiendrai au courant .
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
>>je l'ai essayé à la validation du formulaire,
quelle validation du formulaire ????
mais si le formulaire est soumis,
comme il n'y pas de action= dans le form,
la même page est rechargée, et donc tout
est réinitalisé ( html, javascript... tout )
ajoutez un return false; pour éviter ce rechargement
Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
1
Edit :j'ai avancé un petit peu ,et mon code a changer mais malheureusement n'est pas fonctionnel ,pas d'erreur déclarée donc je suis un peu désemparé .
function choix() {

valeur = Math.round(Math.random() * 1000);
document.formulaire.nombre.value = valeur;
document.formulaire.proposition.value = ""

return false;
}

function verification() {
var prop = document.formulaire.proposition;

if ( prop == valeur ) {
alert('Gagne')
}

if ( prop < valeur) {
alert('Trop petit')
}

if ( prop > valeur) {
alert('Trop grand')
}

 
} 


mais mon petit doigt me dit que se serait en rapport avec la déclaration de variables ;

Ps : si vous avez un e-book ,ou un lien qui proposent un apprentissage par la pratique (exo et test) , je serai vraiment ravi de le savoir .
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
comment ça pas d'erreur ????

vous ne donnez pas votre formulaire
j'ai donc modifier peut-être pas comme vous ?

<form name="formulaire">





</form> 

et si on clique sur "<Choisir un nombre>" :
Erreur : document.formulaire.nombre is undefined
Fichier Source : file:///.....htm
Ligne : 5
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
puis si on rectifie et qu'on va un poil plus loin :
Erreur : valeur is not defined
Fichier Source : file://...1.htm
Ligne : 10
si on rectifie, en allant plus loin :
var prop = document.formulaire.proposition;
faites donc un alert de prop.
ça contient quoi ???
si on rectifie, en continuant,
vous faites une comparaison en caractères ?
faites attention ! "3" est supérieur à "298"
par exemple
et ??? 3 if ? les else existent, ça simplifie
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
pour l'erreur sur valeur, vous déclarer
cette variable dans une fonction, elle
est donc locale, accessible uniquement
dans cette fonction.
si vous voulez l'utiliser partout, il faut la
déclarer hors de toute fonction, globale

<script type="text/javascript">
var valeur;
function choix()
{ valeur = Math.round(Math.random() * 1000);
....
Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
1
var prop;
var valeur;
function choix() {

valeur = Math.round(Math.random() * 1000);
prop = document.formulaire.proposition;
alert (prop)
}










donc comme vous constatez,j'ai essayé d'épuré le code,objectif :
* dans un premier ,afficher le nombre généré par la fonction Math.random (problème éternel)
* essayer d'afficher ce que j'ai saisi, jusqu'au moment où ou j'écris ces lignes , ça donne un alert d'erreur (msg) [objet HTLMInputElement];
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
>>alert d'erreur (msg) [objet HTLMInputElement];
pas d'erreur (??) mais un message
et c'est "juste" d'ailleurs
prop = document.formulaire.proposition;
alert (prop)
prop c'est bien un objet html.

si vous en voulez le contenu : .value
( et entre nous une variable intermédiaire semble inutile )

alert (document.formulaire.proposition.value);

faut continuer donc.

remarque :
....onClick="javascript:choix();" >
javascript est un pléonasme
...onClick="choix();" >
suffit
Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
1
Edit: j'arrive à récupérer ma saisie après avoir ajouter une propriété .value;
prop = document.formulaire.proposition.value;
Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
1
var prop;
var r1;
function choix() {

valeur = Math.round(Math.random() * 1000);
prop = document.formulaire.proposition.value;
valeur = r1
alert (r1)
return false
}


<form name="formulaire">

        
        

         
        
        </form>


ca donne undefined, je commence à sécher mais je continue quand même,mais si vous voulez je reviens à la case départ, le germe ,la source du problème : générer un nombre aléatoire ,puis pouvoir l'afficher sans que ca change sauf en cas de chargement de la page ,si vous voyez ce que je veux dire .
et Merci de votre investissement et du temps accordé .
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
>>ca donne undefined,
ben oui...

var prop;
var r1;
function choix() {
valeur = Math.round(Math.random() * 1000);
prop = document.formulaire.proposition.value;
valeur = r1
// et alors ????? r1 c'est quoi ????
// c'est undefined, c'est à dire indéfini
// par qui ? où ? r1 est-il initialisé ? nulle part

ça ne correspond pas du tout d'ailleurs
à ce que je vous disais
vous rajoutez des variables (r1 par exemple ),
venues d'où ?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
ne vous affolez pas, et prenez
le temps de réfléchir , posément
tranquillement...
programmer n'est pas si simple,
il m'a fallu 57 ans pour commencer
à apercevoir quelques lueurs.

1. valeur = Math.round(Math.random() * 1000);
2. prop = document.formulaire.proposition.value;
3. valeur = r1

pourquoi en 3. changer "valeur" ?
il est calculé en 1.
et en plus vous tentez d'y mettre r1 ?
c'est quoi r1 ?
Messages postés
23
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
27 septembre 2010
1
function choix() {
var nombre;
valeur = Math.round(Math.random() * 1000);
/*prop = document.formulaire.proposition.value;*/
document.formulaire.nombre.value = valeur;
nombre = valeur;
alert(nombre)

}


<form name="formulaire">

        
        

         
        
        </form>


donc ici ,l'idée est de créer un champ caché destiné à stocker le nombre saisi puis de l'afficher ensuite à l'appel de choix() mais ca change à chaque fois , comment faire pour que le nombre généré ne changerai pas ,serait-il judicieux de passer par une deuxième fonction ?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
si vous tenez absolument à mettre ça dans
un input hidden... au fond, pourquoi pas
ça ne sert pas à grand chose mais bon...
>>ca change à chaque fois ,
ben oui ! puisque vous le recalculez !!!!
à chaque fois que vous appelez la fonction choix
faites ce calcul uniquement quand c'est nécessaire !
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
et dans la fonction :
function choix() {
...
valeur = Math.round(Math.random() * 1000);
..
donc, bien entendu, valeur change
à chaque fois que vous cliquez sur
le bouton