IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Fonction setinterval et variable


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2016
    Messages : 40
    Points : 54
    Points
    54
    Par défaut Fonction setinterval et variable
    Bonjour,

    J'ai un souci en essayant de faire un exercice de type cookie-clicker. J'ai l'impression de ne pas comprendre comment fonctionnent mes variables et ma fonction setinterval.

    Tout fonctionne mais en voulant ajouter un auto-clic en utilisant la fonction setinterval avec un "if", je me rends compte que celle ci ne fonctionne que si la condition est "true" par rapport ma variable "score" initiale (avant qu'elle ne s’incrémente).

    Si je mets une condition qui declenche l'auto-clic pour la variable "score" et que celle ci est supérieur au score initial, celui ci aura beau atteindre le seuil requis, l'auto-clic ne fonctionnera pas...
    Ma variable "score" est pourtant une variable globale...

    Je vous copie le code ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    _bouton = document.getElementById("bouton");
    _multiplicateur = document.getElementById("multiplicateur");
    _score = document.getElementById("score");
     
    var score = 198;
    var nbmulti = 1;
     
    function affichage() {
     
        _score.innerHTML = "score=" + score;
     
    }
     
    function clic() {
     
        score = score + nbmulti;
        affichage();
     
    }
     
    function achatmulti() {
     
        if (score >= 20 * nbmulti * nbmulti) {
     
            nbmulti += 1;
        } else {
            alert("vous n'avez pas assez d'argent")
        }
     
        affmulti();
    }
     
    function affmulti() {
     
        _multiplicateur.innerHTML = "multiplicateur X" + nbmulti;
     
    }
     
    function auto() {
     
        if (score >= 200) {
            setInterval(clic, 1000);
     
        } else {
            affichage();
        }
    }
     
    _bouton.onclick = clic;
    _multiplicateur.onclick = achatmulti;
    auto();

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    C'est logique. Votre fonction auto() n'est appelée qu'une seule fois

    Remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function auto() {
     
        if (score >= 200) {
            setInterval(clic, 1000);
     
        } else {
            affichage();
        }
    }
     
     
    auto();
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    _bouton.onclick = clic;
    _multiplicateur.onclick = achatmulti;
     
    setInterval(function(){
     
        if (score >= 200) {
            clic();
     
        } else {
            affichage();
        }
    }, 1000);

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2016
    Messages : 40
    Points : 54
    Points
    54
    Par défaut
    Merci

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2016
    Messages : 40
    Points : 54
    Points
    54
    Par défaut
    J'ai encore une question, je souhaiterai maintenant pouvoir activer/desactiver cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setInterval("auto()",1000)
    a chaque fois que je cliquerai sur un bouton.
    En cliquant sur ce bouton une variable (achatauto) pourrait passer de true a false.

    Et je conditionnerai ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(achatauto= true) {setInterval("auto()",1000);}
    Mais je me demande si mettre un if sans avoir declaré de fonction c'est vraiment conseillé? Comment pourrais je appeler une fonction qui s’exécute tout le temps ? En l'incluant dans une fonction ?

    Ensuite je n'arrive pas a changer ma variable: quant le bouton est cliqué... Il y a quelque chose que je n'ai pas du comprendre dans l'utilisation des booelens...

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2016
    Messages : 40
    Points : 54
    Points
    54
    Par défaut
    Oui j'ai vu, mais je me demandai si on ne pouvait pas donner des conditions pour que setinterval s'execute dans une fonction.

    Et donc que si une de ces conditions n'est plus valides, que setinterval s'arrete (Ou la fonction qui la contiendrait, si c'est possible d'imbriquer setinterval dans une fonction.. ?).

    De maniere generale sans parler de setinterval, je me demande toujours comment modifier une variable booleene avec un bouton, c'est a dire qu'en cliquant la variable passerait de true a false et inversement.

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 069
    Points : 44 685
    Points
    44 685
    Par défaut
    Bonjour,
    ...je me demande toujours comment modifier une variable booleene avec un bouton, c'est a dire qu'en cliquant la variable passerait de true a false et inversement
    il te suffit d'utiliser l' opérateur logique NON (!) pour inverser sa valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var bFlag = true;
    for( var i=0; i < 10; i +=1){
       console.log( bFlag = !bFlag);  // inversion de la valeur à chaque itération
    }

Discussions similaires

  1. appel de fonction sans récupération variable
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2006, 11h10
  2. [VB6] Image en fonction d'une variable?
    Par TomIG dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/03/2006, 01h22
  3. Fonctions constantes et variables constantes
    Par TabrisLeFol dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 13/03/2006, 07h37
  4. Utilisation de 2 fonctions setInterval successives
    Par mouste79 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 02/12/2005, 15h56
  5. Réponses: 1
    Dernier message: 20/07/2005, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo