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

C++ Discussion :

Fonctionnement incorrect de mon programme


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut Fonctionnement incorrect de mon programme
    Bonjour!

    J'ai écrit un programme qui tourne en boucle en utilisant la structure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while (z != 100)
    {   // Emplacement 1
        switch (z)
        {    case 0:
                 // Emplacement 2
             break;
        }
    }
    Dans cet extrait, j'ai relevé deux emplacements. Au premier, j'instancie une classe, et au deuxième j'utilise cette instance de ma classe.

    Le problème, c'est que je programme ne fonctionne pas correctement.

    Dans la version précédente, l'instanciation de ma classe se trouvait en-dehors de la boucle "while", et ça marchait. Avez-vous une analyse plus précise pour moi, s'il-vous-plaît?

    Merci d'avance!

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut

    C'est normal, si tu instancies ta classe en créant un objet (comment l'instancies-tu ? sur la pile je pense ?) dans Emplacement 1, cet instance sera détruite à la fin de l'itération du while, puis recréée au début de la suivante. Si tu n'as besoin de ton objet que pour ce while et qu'il doit rester le même pour toutes les itérations, tu peux utiliser un simple scope de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Rien ici, ce n'est pas une boucle, c'est un simple scope
    {
      ClasseA objeta;
      while (z != 100){   
        ClasseB objetb; // Emplacement 1
        switch (z)
        {    case 0:
                 // Emplacement 2
             break;
        }
      } // objetb est détruit ici à chaque itération
    } // objeta est détruit ici
    Find me on github

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    Oui, je comprends... mais je ne peux pas instancier mes classes en-dehors de la boucle "while", parce que ça ferait une liste de plusieurs milliers en fin de compte.
    Qu'est-ce que je peux faire?

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    que signifie "pas correctement"?

    montre nous ce que tu as fait concretement, et quel est le symptome de camarchepashitude?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    Le compilateur passe dessus sans râler, ce qui signifie que le code est au-moins cohérent.
    En gros, il y a un "RenderWindow" (SFML) qui est déclaré dans le programme principal, puis passé par adresse dans la classe que je dois instancier. Une des fonctions-membres réalise l'affichage en utilisant la méthode "draw" de "RenderWindow".
    Le problème, c'est qu'à l'exécution, j'ai seulement un écran noir.

    Mais la classe est faite correctement, puisqu'elle fonctionnait avant. Le dernier changement en date, c'est une restructuration du programme principal, et depuis je suis obligé de déclarer ma "RenderWindow" en-dehors de la classe. Du coup, ça n'affiche plus rien.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    J'ai de nouvelles informations!

    Ce code-ci fonctionne parfaitement:
    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
    #include <SFML/Graphics.hpp>
    #include <iostream>
    #include <windows.h>
    #include <string.h>
    #include <math.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctime>
     
    #include "MenuPrincipal.h"
    #include "Texte1.h"
     
    using namespace std;
    using namespace sf;
     
    void MenuPrincipal()
    {   int width(GetSystemMetrics(SM_CXSCREEN)); // Récupérer résolution horizontale de l'écran
        int height(GetSystemMetrics(SM_CYSCREEN)); // Récupérer résolution verticale de l'écran
     
        int z(0);
     
        Font fonte; // Fonte pour le texte des menus
        fonte.loadFromFile("Fontes/SuperMario256.ttf"); // Chargement d'un fichier font
     
        Color couleur; // Couleur pour le texte des menus
        couleur.r=255; couleur.g=100; couleur.b=0; couleur.a=255; // Création d'une couleur (rouge-orangé opaque)
     
        // Déclarer la fenêtre
        RenderWindow window;
     
        // Afficher la fenêtre
        window.create(VideoMode(width, height), "Fenetre", Style::Fullscreen);
     
        window.clear(); // Effacer l'écran
     
        Texte1 A(width, height, fonte, couleur, window); // Constructeur
     
        A.Set("Bonjour Monsieur"); // Constructeur
     
        A.Anim(); // Animer Texte1
     
        window.display(); // Afficher l'écran
     
        Sleep(5000); // Ca c'est juste pour qu'on ait le temps de voir quelque chose =D
    }
    Et celui-ci ne fonctionne pas (écran noir):
    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
    53
    54
    55
    #include <SFML/Graphics.hpp>
    #include <iostream>
    #include <windows.h>
    #include <string.h>
    #include <math.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctime>
     
    #include "MenuPrincipal.h"
    #include "Texte1.h"
     
    using namespace std;
    using namespace sf;
     
    void MenuPrincipal()
    {   int width(GetSystemMetrics(SM_CXSCREEN)); // Récupérer résolution horizontale de l'écran
        int height(GetSystemMetrics(SM_CYSCREEN)); // Récupérer résolution verticale de l'écran
     
        int z(0), y(0);
     
        Font fonte; // Fonte pour le texte des menus
        fonte.loadFromFile("Fontes/SuperMario256.ttf"); // Chargement d'un fichier font
     
        Color couleur; // Couleur pour le texte des menus
        couleur.r=255; couleur.g=100; couleur.b=0; couleur.a=255; // Création d'une couleur (rouge-orangé opaque)
     
        // Déclarer la fenêtre
        RenderWindow window;
     
        // Afficher la fenêtre
        window.create(VideoMode(width, height), "Fenetre", Style::Fullscreen);
     
        while (z < 1000)
        {   window.clear(); // Effacer l'écran
     
            switch (z)
            {   case 0:
                    Texte1 A(width, height, fonte, couleur, window); // Constructeur
     
                    switch (y)
                    {   case 0:
                            A.Set("Bonjour Monsieur"); // Constructeur
                            y=1;
                        break;
                        case 1:
                            A.Anim(); // Animer Texte1
                        break;
                    }
                break;
            }
     
            window.display(); // Afficher l'écran
        }
    }
    Une idée?

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Rien que le switch est un contexte si je ne m'abuse, l'objet A est détruit dès qu'on en sort, et jamais reconstruit, non? A mon sens tous les objets persistants devraient être instanciés hors de la boucle et utilisés ensuite dedans. Sinon, y'a t'il une quelconque synchro pour le clear ne suive pas immédiatement le display ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    En fait, chronologiquement on appelle "clear" et "display" alternativement et en boucle. Mais il y a une attente de 1/30 secondes après display (c'est de l'animation image par image).

    Je peux instancier mes classes hors de la boucle, mais ça me fera une liste de plusieurs centaines d'objets (et c'est pas très utile de préparer le niveau 100 alors que le deuxième n'est même pas encore débloqué, non? =)

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Tout dépend de ton modèle de transition entre niveaux...
    Si c'est discontinu, à mon avis tu devrais avoir deux niveaux de boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(jeuEnCours){
         //initialisation des objets du niveau (idéalement avec groupement sous la houlette d'une instance représentant le niveau et gérant donc sa durée de vie)
        while(niveau en cours){
            //animation utilisant les objets du niveau
        }
    }
    Par contre, si tu as une transition progressive sans frontière de niveaux définie, tu vas devoir avoir un objet (instancié hors de la boucle) qui gère la durée de vie de tes objets (lesquels devront être référencés par des (smart)pointers puisque leur durée de vie est définie par quelque chose de plus compliqué (et imprévisible) qu'un scope.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Monde m;
    while(jeuEnCours){
       if(elementAdoitNaitre){
         w.creeElement("elementA",new elementA);
       }
       if(elementAdoitMourir){
         w.detruireElement("elementA");
       }
       if(elementAEvenementA){
         w.retrouverObjet("elementA").evenementA();
       }
    }
    Edit: ces deux modèles ne sont pas mutuellement exclusifs, si certains objets suivent le premier, d'autres le deuxième tu peux les combiner. Par ailleurs, le second système étant plus complexe autant recourir au maximum au premier. Ceci dit, je dirais qu'il te faudra bien un objet

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    Ah! J'avais pas pensé à mettre ce qui fait l'affichage à 30 images par seconde dans la boucle while. Mais c'est un peu con de la mettre à chaque "case" du "switch (z)", non?

  11. #11
    Membre actif
    Inscrit en
    Mai 2012
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 65
    Points : 282
    Points
    282
    Par défaut
    Citation Envoyé par Armulis Voir le message
    En fait, chronologiquement on appelle "clear" et "display" alternativement et en boucle. Mais il y a une attente de 1/30 secondes après display (c'est de l'animation image par image).

    Je peux instancier mes classes hors de la boucle, mais ça me fera une liste de plusieurs centaines d'objets (et c'est pas très utile de préparer le niveau 100 alors que le deuxième n'est même pas encore débloqué, non? =)
    En fait ce que leternel et therwald est de faire quelque chose dans ce genre :

    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
     Texte1 A(width, height, fonte, couleur, window);
        while (z < 1000)
        {   window.clear(); // Effacer l'écran
     
            switch (z)
            {   
               case 0:
                    //1ere solution
                    A = Text1(width, height, fonte, couleur, window);
     
                    //ou mieux encore afin d'éviter un appel au constructeur et une affectation, définir un setter sur window puisque c'est le seul paramètre a changer
                    //2e solution
                    A.setWindow(window)
     
                    switch (y)
                    {   
                       case 0:
                            A.Set("Bonjour Monsieur"); // Constructeur
                            y=1;
                        break;
                        case 1:
                            A.Anim(); // Animer Texte1
                        break;
                    }
                break;
            }
     
            window.display(); // Afficher l'écran
        }
    }
    Les objets sont mis à jour a chaque tour de boucle (pas d'instanciation de 1000 objets), par contre autre point que j'ai remarqué dans ta boucle c'est que tu n'incrémentes pas ton z du coup tu fais une boucle infinie là.

  12. #12
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par Armulis Voir le message
    Ah! J'avais pas pensé à mettre ce qui fait l'affichage à 30 images par seconde dans la boucle while. Mais c'est un peu con de la mettre à chaque "case" du "switch (z)", non?
    Pourquoi à chaque case? La synchro survient à priori tout le temps (tu veux un FPS stabilisé, non?), donc autant synchroniser juste avant display, hors du switch (mais dans le while).

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    Ben je synchronise déjà comme ça. Je peux pas faire autrement, si?

  14. #14
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par Armulis Voir le message
    Ben je synchronise déjà comme ça. Je peux pas faire autrement, si?
    Je posais juste la question pour m'assurer que ce n'était pas le problème (on ne sait jamais, les oublis les plus gros sont parfois les plus difficiles à repérer...justement parce que c'est si gros qu'on ne pense pas qu'on a pu faire l'erreur...)

    Ton problème c'est la durée de vie des objets. Réfléchis à ce qu'on vient de te dire sur les scopes et les durées de vie, et tu devrais trouver la solution à ton problème.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    Oui, merci Ehonn, mais j'ai l'impression que c'est un peu trop haut-niveau pour mon programme. En fait, je fais déjà ça avec un bloc d'instructions qui est parfaitement défini, tandis que je ne sais pas comment fonctionnent les méthodes qui tournent en arrière-plan... mais je sais pas, tu peux peut-être me fournir plus d'informations? C'est que je comprends pas ce que ça va m'apporter?

  17. #17
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    La SFML fournit ce qu'il faut pour limiter les FPS. Utiliser ces fonctions permet d'alléger le code, augmenter sa lisibilité et sa fiabilité
    Si tu veux savoir comment elles fonctionnent, regarde le code source de la SFML (il est libre)

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    OK, merci.
    Sinon, par-rapport au problème que j'ai montré tout au début, vous avez quelque chose? =)

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en génie mécanique
    Inscrit en
    Mars 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant en génie mécanique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Danny-k Voir le message
    En fait ce que leternel et therwald est de faire quelque chose dans ce genre :

    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
     Texte1 A(width, height, fonte, couleur, window);
        while (z < 1000)
        {   window.clear(); // Effacer l'écran
     
            switch (z)
            {   
               case 0:
                    //1ere solution
                    A = Text1(width, height, fonte, couleur, window);
     
                    //ou mieux encore afin d'éviter un appel au constructeur et une affectation, définir un setter sur window puisque c'est le seul paramètre a changer
                    //2e solution
                    A.setWindow(window)
     
                    switch (y)
                    {   
                       case 0:
                            A.Set("Bonjour Monsieur"); // Constructeur
                            y=1;
                        break;
                        case 1:
                            A.Anim(); // Animer Texte1
                        break;
                    }
                break;
            }
     
            window.display(); // Afficher l'écran
        }
    }
    Les objets sont mis à jour a chaque tour de boucle (pas d'instanciation de 1000 objets), par contre autre point que j'ai remarqué dans ta boucle c'est que tu n'incrémentes pas ton z du coup tu fais une boucle infinie là.
    Oooh! Je viens de voir un truc!
    Tu veux dire quoi par "le seul paramètre a changer"??? Je dois changer window? Pourquoi?

  20. #20
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Ton "problème" initial me parait assez "simple" : relis ton cours sur les structure de controle, switch et while, et la notion de portée d'une variable

    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
     while (z < 1000)
        {   window.clear(); // Effacer l'écran
     
            switch (z)
            {   case 0:
                    Texte1 A(width, height, fonte, couleur, window); // Constructeur
     
                    switch (y)
                    {   case 0:
                            A.Set("Bonjour Monsieur"); // Constructeur
                            y=1;
                        break;
                        case 1:
                            A.Anim(); // Animer Texte1
                        break;
                    }
                break;
            }
     
            window.display(); // Afficher l'écran
        }
    Je suppose que c'est la méthode Anim qui affiche le texte ?

    Prenons 30s (pas besoin de plus et les connaissances basiques suffisent) pour analyser ce que fait le code
    tant que z est < 1000, et z ne semble pas évoluer, donc boucle infinie
    tour 1
    je crée un texte vide
    si y vaut 0, je mets "Bonjour Monsieur" dans mon texte, puis je passe y à 1
    je dessine mon buffer sur l'écran
    là le texte est supprimé

    tour 2
    je crée un texte vide
    je dessine mon texte dans le buffer
    je dessine mon buffer sur l'écran
    là le texte est supprimé


    ha ouais... il manquerait pas un truc ?
    ton texte, soit il est vide et affiché, soit il contient quelque chose, mais n'est pas affiché
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [patterns] conseil sur le fonctionnement de mon programme
    Par lichman dans le forum Design Patterns
    Réponses: 4
    Dernier message: 13/09/2007, 09h32
  2. Mon programme ne fonctionne plus après mise à jour de linux
    Par dybmans dans le forum GTK+ avec C & C++
    Réponses: 22
    Dernier message: 06/05/2007, 18h08
  3. Réponses: 18
    Dernier message: 19/04/2007, 17h42
  4. Mon programme ne fonctionne pas
    Par phil23 dans le forum C
    Réponses: 4
    Dernier message: 22/03/2007, 16h31
  5. Réponses: 2
    Dernier message: 30/10/2005, 14h38

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