Partage
  • Partager sur Facebook
  • Partager sur Twitter

Toggle un bouton (GetAsyncKeyState)

    28 juillet 2021 à 2:32:40

    Salut ! En gros je créer un autoclick complexe et je voudrais créer un bouton de toggle, merci de m'aider parce que j'ai vraiment l'impression de faire N'IMPORTE quoi



    if (GetAsyncKeyState(0x58)) {

    while (loopd) {

    bool toggle = true;

    if (GetAsyncKeyState(0x58)) {

    while (loopd); {

    bool toggle = true;

        bool toggle = false;
                                return(0)

             }

           }

    }

    }


    Le problème étant que mon compileur me donne une erreur "'bool toggle' previously declared here" le problème étant que déjà le script ne marche pas mais si EN PLUS le compileur me met des bâtons dans les roues je suis vraiment perdu à l'aide :'(

    -
    Edité par NikowMC 28 juillet 2021 à 2:35:58

    • Partager sur Facebook
    • Partager sur Twitter
      28 juillet 2021 à 7:38:33

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        28 juillet 2021 à 8:49:55

        Le compilateur te dis si on traduit : "bool toggle a déjà été déclaré"

        Bah oui, tu déclares toggle plusieurs fois. Si je recopie ton code avec l'indentation on a :

        if (GetAsyncKeyState(0x58)) {
            while (loopd) {
        
            bool toggle = true;   // Première déclaration de toggle
        
            if (GetAsyncKeyState(0x58)) {
                while (loopd); {
                    bool toggle = true; // Deuxième déclaration
                    bool toggle = false; // Troisième déclaration
                    return(0)
        
                 }
               }
            }
        }

        Je vais pas trop m'attarder sur le fait que ce morceau de code n'a aucun sens, erreur de copié collé ? Tu n'as pas mis tout le code ?

        Il y a un return 0 alors qu'on est pas dans une fonction, tu retestes la même condition dans tes deux if imbriqués ... Et le code ne fait rien à part déclarer encore et encore le même bool donc je pense que tu ne montres pas tout

        Pour ce qui est de l'erreur du compilateur, il faut faire la différence entre la déclaration d'une variable et son assignation

        int var1;  // déclaration de la variable entière var1
        
        var1 = 10;  // Assignation de la valeur 10 à ma variable entière var1
        
        int var2 = 0;  // Déclaration ET assignation de la variable entière var2
        
        int var1 = 0;  // ERREUR : Ceci est une redéclaration de var1, il n'est pas autorisé de déclarer plusieurs variables du même nom

        Comme tu le vois, on déclare une variable en indiquant son type (int, bool, double, std::string, ect ....) puis son nom. Quand tu veux changer la valeur contenue dans ta variable, lui assigner une nouvelle valeur, il ne faut pas réécrire le type de ta variable sinon c'est une redéclaration

        Note qu'il est grandement conseillé de toujours assigner une valeur à sa variable en même temps qu'on la déclare (comme var2 dans mon exemple au dessus), ça évite d'oublier de l'assigner et d'essayer de l'utiliser après alors qu'elle n'a qu'une valeur par défaut donnée par le compilateur à sa création

        EDIT : Je viens de voir qu'il y avait un ; après ton deuxième while ... sérieusement ?

        -
        Edité par ThibaultVnt 28 juillet 2021 à 16:56:32

        • Partager sur Facebook
        • Partager sur Twitter
          28 juillet 2021 à 10:21:00

          Aussi emploi les bon mots, tu parles de touches du clavier pas de boutons. (un bouton c'est sur l'écran, une touche c'est sur le clavier).

          Je ne sais pas si j'ai compris ce que tu souhaites faire, mais il me semble que tu souhaites changer l'état d'une touche à chaque appuis ? (verrouiller, déverrouiller une touche). 

          Ce comportement existe en natif, mais pour cela il faut utiliser la fonction GetKeyState.

          • Partager sur Facebook
          • Partager sur Twitter
            31 juillet 2021 à 9:53:56

            Pour savoir si une touche est enfoncée il faut regarder seulement le bit de poids fort de la valeur de retour de GetAsyncKeyState 

            • Partager sur Facebook
            • Partager sur Twitter

            Toggle un bouton (GetAsyncKeyState)

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown