Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de boucle QtCreator

Sujet résolu
    18 octobre 2019 à 17:42:20

    Bonjour, je suis en train de coder un jeu de carte la "bataille" sur QtCreator, pour le moment avec mon programme complet je peut distribuer alternativement les cartes au joueurs 1 et 2 et leur faire mettre les carte en jeu mais, je voudrais que lorsque j'appuie sur mon boutton distribuer cela donne d'un coup 26 cartes à chacun des deux joueurs. J'ai déja essayé de faire des for ou des while mais rien à y faire je ne trouve pas... Quelqu'un aurait une solution ? 

    void MainWindow::on_Distribuer_clicked()
    {
        carte c = jeuDeCartes.donner();
        qDebug("%s", c.image.toStdString().c_str());
        qDebug("%c %d",c.nom,c.couleur);
        if(tourJoueur && nbsCarteJ1 <= 27){
            nbsCarteJ1++;
            joueur.setMainDuJoueur(c);
            jeuDeCartes.cacher(c);
            table.append(joueur.getMainDuJoueur().last());
            ui->CartesJoueur->addWidget(table.first().label);
            tourJoueur = false;
        }
        else if (tourJoueur == false && nbsCarteJ2 <= 27){
            nbsCarteJ2++;
            adversaire.setMainDuJoueur(c);
            jeuDeCartes.cacher(c);
            table2.append(adversaire.getMainDuJoueur().last());
            ui->CartesAdversaire->addWidget(table2.first().label);
            tourJoueur = true;
        }
    }



    • Partager sur Facebook
    • Partager sur Twitter
      18 octobre 2019 à 18:27:43

      Bonjour,

      StephenFarnault1 a écrit:

      J'ai déjà essayé de faire des for ou des while mais rien à y faire je ne trouve pas... Quelqu'un aurait une solution ? 

      Montre ce que tu as essayé et précise le comportement attendu et celui que tu obtiens.

      • Partager sur Facebook
      • Partager sur Twitter
        18 octobre 2019 à 18:35:03

        Bah le comportement attendu c'est que quand je clic sur le bouton "Distribuer" donc la fonction "on_Distribuer_clicked()" cela donne 26 cartes au joueur et 26 cartes a l'adversaire tandis qu'actuellement je clic sa donne une carte au joueur et quand je re-clic sa donne une carte à l'adversaire et ainsi de suite. j'ai essayé de faire un "for (var i = 0; i < 52; i++)" avant le premier if ainsi qu'un while au même endroit. j'ai aussi essayer le même for avant le "carte c".
        • Partager sur Facebook
        • Partager sur Twitter
          18 octobre 2019 à 19:00:22

          Oui, mais justement, que se passe-t-il quand tu mets une boucle for autour de l'ensemble du corps actuel de la fonction (de la ligne 1 à la ligne 19) ? Ca ne compile pas, ça plante ? 

          • Partager sur Facebook
          • Partager sur Twitter
            18 octobre 2019 à 19:02:13

            Si le programme se lance mais du coup même problème avec toute mes solutions quand je clic sur "Distribuer" cela n'envoie de carte que dans la partie adversaire et pas tout à la fois je dois quand même re-cliquer pour renvoyer des cartes dans l'adversaire
            • Partager sur Facebook
            • Partager sur Twitter
              18 octobre 2019 à 22:38:54

              C'est un peu bizarre que ça marche en appelant plusieurs fois la fonction, mais pas en mettant tout le contenu de la fonction dans une boucle...

              Est-ce que tu as initialisé les 2 variables nbsCarteJ1 et nbsCarteJ2 à 0 dans le constructeur de MainWindow ou ailleurs ? 

              Peux-tu également montrer le code de la classe carte et de la fonction donner() ? Parce que théoriquement, comme les cartes sont uniques, tu devrais les manipuler sous forme de pointeurs (de préférence intelligents, par ex: QSharedPointer) pour éviter de les copier dans pleins de variables différentes, et par exemple d'avoir plusieurs instance de carte actives avec le même QLabel.

              PS: Comme tu n'utilises pas de formatage de texte trop avancé avec qDebug(), tu peux simplement l'utiliser sous cette forme:

              qDebug() << c.image;
              qDebug() << c.nom << c.couleur;
              • Partager sur Facebook
              • Partager sur Twitter

              Problème de boucle QtCreator

              × 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