Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: problème de conteur de point  (Lu 3155 fois)

0 Membres et 1 Invité sur ce sujet

Snitteur

  • Jr. Member
  • **
  • Messages: 63
    • Voir le profil
problème de conteur de point
« le: Février 24, 2014, 11:03:16 am »
Bonjour, depuuis plus de 2h je bloque sur mon conteur de point. Voici mon code qui permet de transformer un int en string =>
Citer
std::ostringstream out;
                       out << y;
                       cout << y << endl;
                       std::string test = out.str();
                       sf::Font font;
                       font.loadFromFile("of.ttf");
                       sf::Text pts;
                       pts.setFont(font);
                       pts.setString(test);
                       pts.setColor(sf::Color::Yellow);
                       pts.setCharacterSize(20);
                       pts.setPosition(340,572);

et le code pour l’incrémenter :
Citer
///VIE DU VSO 2 /////////////////////////////
if ( vie2 == 0 )
{
int randX2 = rand() % 750;
int randY2 = rand() % 350;

vso2.setPosition(randX2, randY2);
vie2 = 100;
y = y + 1;
cout << y << endl;
}


Donc mon problème est le suivant : Sur la console les points s'affiche mais pas sur le jeux, et je ne sais pas d'out sa viens.
Merci de m'aider 

Develog

  • Full Member
  • ***
  • Messages: 100
    • Voir le profil
    • E-mail
Re : problème de conteur de point
« Réponse #1 le: Février 24, 2014, 11:28:05 am »
Tu devrais peut être changer pts.setString(y);

Car là il affiche une variable qui n'existe pas ;)

Snitteur

  • Jr. Member
  • **
  • Messages: 63
    • Voir le profil
Re : problème de conteur de point
« Réponse #2 le: Février 24, 2014, 11:55:29 am »
sa ne marche pas non plus, sa me sort un carrer jaune

clavos

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
    • E-mail
Re : problème de conteur de point
« Réponse #3 le: Février 25, 2014, 01:56:30 am »
Pour transformer un entier en String il y a aussi :

string chaine = std::to_string(50);

Ici, on déclare une chaîne de caractère "chaîne" qui contiendra l'entier 50.
Je trouve cette méthode beaucoup plus pratique et plus simple.
Peut être que tu n'auras plus ton bug avec elle ? :)

Snitteur

  • Jr. Member
  • **
  • Messages: 63
    • Voir le profil
Re : problème de conteur de point
« Réponse #4 le: Février 25, 2014, 12:31:37 pm »
ok merci, peut ton mettre une variable integer du style point

=> Je vien de la test et il m'affiche cette erreur 
Citer
error : 'to_string is not a member of std'
or j'ai bien fait une variable et tout
« Modifié: Février 25, 2014, 12:35:44 pm par Snitteur »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : problème de conteur de point
« Réponse #5 le: Février 25, 2014, 06:47:07 pm »
C'est une fonction apparue en C++11.
Ton compilateur supporte peut-être ces fonctionnalités mais il faut probablement l'activer.

Sinon, t'as toujours ton probleme ?

Snitteur

  • Jr. Member
  • **
  • Messages: 63
    • Voir le profil
Re : problème de conteur de point
« Réponse #6 le: Février 25, 2014, 08:04:41 pm »
Alors oui j'ai toujours mon problème et après moult-moult essais je décide donc de poster mon code entier ( je prévient il est long

#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <sstream>
#include <stdlib.h>
#include <time.h>


using namespace std;
unsigned int a = 100;
unsigned int blasteur = 0;
unsigned int missi = 0;
unsigned int blas = 0;
unsigned int col = 1 ;
unsigned int yo = 0;
unsigned int vie1 = 100;
unsigned int vie2 = 100;
unsigned int vie3 = 100;
unsigned int vie4 = 100;
unsigned int move1 = 0;
unsigned int move2 = 0;
unsigned int move3 = 0;
int movez = 0;
unsigned int point;
string poin;



int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "[1.0] SPACE");
sf::RectangleShape Rect_health;


            ///Image de fond.///////////////////////////////////////////////
            sf::Sprite backg;
            sf::Texture background;
            background.loadFromFile("back.png");
            backg.setTexture(background);

            ///Image du ship/////////////////////////////////////////
            sf::Sprite ship;
            sf::Texture shi;
            shi.loadFromFile("sh.png");
            ship.setTexture(shi);
            ship.setPosition(380, 440);

            ///barre de vie///////////////////////////////////////
            sf::Sprite vie;
            sf::Texture viee;
            viee.loadFromFile("barre.png");
            vie.setTexture(viee);
            vie.setPosition(0, 576);

            ///barre du minigun///////////////////////////////////
            sf::Sprite minigun;
            sf::Texture minigu;
            minigu.loadFromFile("minigun.png");
            minigun.setTexture(minigu);
            minigun.setPosition(600, 540);

                    ///Barre du missile////////////////////////////////
                    sf::Sprite missile;
                    sf::Texture miss;
                    miss.loadFromFile("missile.png");
                    missile.setTexture(miss);
                    missile.setPosition(670, 540);

                        ///image du vso enemie 1 ////////////////////////////////////
                        sf::Sprite obs;
                        sf::Texture obst;
                        obst.loadFromFile("en1.png");
                        obs.setTexture(obst);
                        obs.setPosition(130, 330);

                        ///image du vso enemie 2 /////////////////////////////////////
                        sf::Sprite vso2;
                        sf::Texture vso;
                        vso.loadFromFile("en2.png");
                        vso2.setTexture(vso);
                        vso2.setPosition(230, 330);
                            ///image du vso enemie 3 /////////////////////////////////////
                            sf::Sprite vso3;
                            sf::Texture v;
                            v.loadFromFile("en3.png");
                            vso3.setTexture(v);
                            vso3.setPosition(530, 330);

                        ///image de la limite (bas)
                        sf::Sprite limite;
                        sf::Texture lim;
                        lim.loadFromFile("limite.png");
                        limite.setTexture(lim);
                        limite.setPosition(0, 530);
                        ///image de la limite (gauche)
                        sf::Sprite limite2;
                        sf::Texture lim2;
                        lim2.loadFromFile("limite2.png");
                        limite2.setTexture(lim2);
                        limite2.setPosition(0, 0);
                            ///image de la limite (droite)
                            sf::Sprite limite3;
                            sf::Texture lim3;
                            lim3.loadFromFile("limite3.png");
                            limite3.setTexture(lim3);
                            limite3.setPosition(799, 0);
                                ///image de la limite (haut)
                                sf::Sprite limite4;
                                sf::Texture lim4;
                                lim4.loadFromFile("limite4.png");
                                limite4.setTexture(lim4);
                                limite4.setPosition(0,1);

                                        ///initialisation des blasteur Allier/////////
                                        sf::Sprite blat;
                                        sf::Texture blas;

                                        ///initialisation du missile//////////
                                        sf::Sprite mis;
                                        sf::Texture ms;

                                        ///initialisation du blasteur enemie 1 /////////////
                                        sf::Sprite be;
                                        sf::Texture bes;
                                        bes.loadFromFile("balle.png");
                                        be.setTexture(bes);
                                        be.setPosition(obs.getPosition().x, obs.getPosition().y);
                                            ///initialisation du blasteur enemie 2 ///////
                                                sf::Sprite be2;
                                                sf::Texture bes2;
                                                bes2.loadFromFile("balle2.png");
                                                be2.setTexture(bes2);
                                                be2.setPosition(vso2.getPosition().x, vso2.getPosition().y);
                                                ///initialisation du blasteur enemie 2 //////////////
                                                sf::Sprite be3;
                                                sf::Texture bes3;
                                                bes3.loadFromFile("balle3.png");
                                                be3.setTexture(bes3);
                                                be3.setPosition(vso3.getPosition().x, vso3.getPosition().y);



                                                ///initialisation du game over/////////////////////
                                                sf::Sprite Game;
                                                sf::Texture Over;
                                                Over.loadFromFile("game.png");

                                                ///initialisation du cercle///////////////////////
                                                sf::Sprite cercle;
                                                sf::Texture cercl;
                                                cercl.loadFromFile("cercle.png");
                                               
                                               
                       std::ostringstream out;
                       out << yo;
                       std::string test = yo.str();
                       sf::Font font;
                       font.loadFromFile("of.ttf");
                       sf::Text pts;
                       pts.setFont(font);
                       pts.setString(yo);
                       pts.setColor(sf::Color::Yellow);
                       pts.setCharacterSize(20);
                       pts.setPosition(340,572);





///.///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///.////////////////////////////////////////////////////////////////////////////////////////////////////////

    ///Boucle ...//////////////////////////////
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }





sf::FloatRect o = obs.getGlobalBounds();
sf::FloatRect s = ship.getGlobalBounds();
sf::FloatRect blaste = blat.getGlobalBounds();
sf::FloatRect mini = minigun.getGlobalBounds();
sf::FloatRect rocket = missile.getGlobalBounds();
sf::FloatRect Crc = cercle.getGlobalBounds();
sf::FloatRect misss = mis.getGlobalBounds();
sf::FloatRect bal = be.getGlobalBounds();
sf::FloatRect bal2 = be2.getGlobalBounds();
sf::FloatRect bal3 = be3.getGlobalBounds();
sf::FloatRect lim = limite.getGlobalBounds();
sf::FloatRect lim2 = limite2.getGlobalBounds();
sf::FloatRect lim3 = limite3.getGlobalBounds();
sf::FloatRect lim4 = limite4.getGlobalBounds();
sf::FloatRect vs2 = vso2.getGlobalBounds();
sf::FloatRect vs3 = vso3.getGlobalBounds();


   ///Choie des armes//////////////////////////
   if ((sf::Keyboard::isKeyPressed(sf::Keyboard::A)) )
   {
      cercle.setPosition(598, 540);
      cercle.setTexture(cercl);

   }

   if ((sf::Keyboard::isKeyPressed(sf::Keyboard::Z)) )
   {
       cercle.setPosition(668, 540);
       cercle.setTexture(cercl);
   }
   ///.//////////////////////////////////////////////





        ///Deplacement du vaisseau vers la Gauche//////////////////////////
   if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
     {
     ship.move(sf::Vector2f(-0.04,0)) ;
     }
        ///Deplacement du vaisseau vers la Droite//////////////////////////
   if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
     {
     ship.move(sf::Vector2f(0.04,0)) ;
     }
///./////////////////////////////////////////////////////////////////////////////////////////////////

                                        ///Vaisseau intersect obstacle////////////////////////
                                        if ((s.intersects(bal)) | (s.intersects(bal2)))
                                          {
                                        ship.move(sf::Vector2f(0,0.9)) ;
                                        a = a - 5;
                                          }

                                                       ///La vie du vaisseau//////////////////////////
                                                       double size_health = a/100.0 * 200.0;
                                                       Rect_health.setSize(sf::Vector2f(-size_health, 9));
                                                       Rect_health.setPosition(210, 581);
                                                       Rect_health.setFillColor(sf::Color(0, 255, 0, 100));
                                                       if ( a == 0 )
                                                        {
                                                       Game.setTexture(Over);
                                                       Game.setPosition(200, 200);
                                                        movez = 1;
                                                        }
                ///Affichage du blasteur///////////////////////////////////////////
             if ((sf::Mouse::isButtonPressed(sf::Mouse::Left)) &&((Crc.intersects(mini))))
              {
                blat.setPosition(ship.getPosition().x, ship.getPosition().y);
                blas.loadFromFile("bullet.png");
                blat.setTexture(blas);

                blasteur = 1;
              }
                ///affichage du missile////////////////////////////////////////////
                if ((sf::Mouse::isButtonPressed(sf::Mouse::Left)) &&((Crc.intersects(rocket))))
                 {
                mis.setPosition(ship.getPosition().x, ship.getPosition().y);
                ms.loadFromFile("rock.png");
                mis.setTexture(ms);
                 missi = 1;
                  }


                                  ///deplacement du tir blasteur//////////////////////////////
                                  if ((blasteur == 1) | (sf::Mouse::isButtonPressed(sf::Mouse::Left)))
                                  {
                                      blat.move(sf::Vector2f(0,-0.035));


                                  }
                                   if (sf::Mouse::isButtonPressed(sf::Mouse::Right))
                                   {
                                       blat.move(sf::Vector2f(0,0));
                                        blasteur = 0;
                                   }
                                    ///deplacement de tir missile///////////////////////////////
                                    if ((missi == 1) | (sf::Mouse::isButtonPressed(sf::Mouse::Left)))
                                  {
                                      mis.move(sf::Vector2f(0,-0.02));
                                  }


                                      ///Deplacement du blast enemie/////////////////////////////
                                      if ( col == 1)
                                      {
                                          be.move(sf::Vector2f(0,0.04));
                                          be2.move(sf::Vector2f(0,0.04));
                                          be3.move(sf::Vector2f(0,0.04));
                                      }





                                       ///colistion vso 1 blasteur////////////////////////////////
                                       if (blaste.intersects(o))
                                          {
                                          vie1 = vie1 - 50;
                                          //cout << vie1 << endl;
                                          blat.setPosition(ship.getPosition().x, ship.getPosition().y);
                                          }
                                        ///colistion vso 2 blasteur////////////////////////////////
                                         if (blaste.intersects(vs2))
                                          {
                                          vie2 = vie2 - 50;
                                          //cout << vie2 << endl;
                                          blat.setPosition(ship.getPosition().x, ship.getPosition().y);
                                          }
                                          ///colistion vso 3 blasteur////////////////////////////////
                                         if (blaste.intersects(vs3))
                                          {
                                          vie3 = vie3 - 50;
                                          //cout << vie3 << endl;
                                          blat.setPosition(ship.getPosition().x, ship.getPosition().y);
                                          }


                                          ///colistion vso 1 missile////////////////////////////////
                                       if (misss.intersects(o))
                                          {
                                          vie1 = vie1 - 100;
                                          //cout << vie1 << endl;
                                          mis.setPosition(ship.getPosition().x, ship.getPosition().y);
                                          }
                                        ///colistion vso 2 missile////////////////////////////////
                                         if (misss.intersects(vs2))
                                          {
                                          vie2 = vie2 - 100;
                                         // cout << vie2 << endl;
                                          mis.setPosition(ship.getPosition().x, ship.getPosition().y);
                                          }
                                          ///colistion vso 3 missile////////////////////////////////
                                         if (misss.intersects(vs3))
                                          {
                                          vie3 = vie3 - 100;
                                          //cout << vie3 << endl;
                                          mis.setPosition(ship.getPosition().x, ship.getPosition().y);
                                          }




                                        ///colision limite 1////////////////////////
                                        if ((bal.intersects(lim)) | (bal.intersects(s)))
                                        {
                                        be.setPosition(obs.getPosition().x, obs.getPosition().y);

                                        }
                                        if (((bal2.intersects(lim))) | (bal2.intersects(s)))
                                        {
                                        be2.setPosition(vso2.getPosition().x, vso2.getPosition().y);
                                        }

                                        if (((bal3.intersects(lim))) | (bal3.intersects(s)))
                                        {
                                        be3.setPosition(vso3.getPosition().x, vso3.getPosition().y);
                                        }

                                        ///./////////////////////////////////////////////
                                        ///colision limite 2/////////////////////////////
                                        if (o.intersects(lim2))
                                        {
                                        move1 = 0;

                                        }
                                        if (vs2.intersects(lim2))
                                        {
                                        move2 = 0;

                                        }
                                        if (vs3.intersects(lim2))
                                        {
                                        move3 = 0;

                                        }
                                        ///colision limite droite/////////////////////////
                                        if (o.intersects(lim3))
                                        {
                                        move1 = 1;

                                        }
                                        if (vs2.intersects(lim3))
                                        {
                                        move2 = 1;

                                        }
                                        if (vs3.intersects(lim3))
                                        {
                                        move3 = 1;

                                        }
                                        ///deplacement des vso enemie vers la droite
                                        if ( move1 == 0 )
                                        {
                                          obs.move(sf::Vector2f(0.03,0));
                                        }
                                        if ( move2 == 0 )
                                        {
                                          vso2.move(sf::Vector2f(0.03,0));
                                        }
                                        if ( move3 == 0 )
                                        {
                                          vso3.move(sf::Vector2f(0.03,0));
                                        }
                                        ///deplacement des vso enemie vers la gauche
                                        if ( move1 == 1)
                                        {
                                          obs.move(sf::Vector2f(-0.03,0));
                                        }
                                        if ( move2 == 1)
                                        {
                                          vso2.move(sf::Vector2f(-0.03,0));
                                        }
                                        if ( move3 == 1)
                                        {
                                          vso3.move(sf::Vector2f(-0.03,0));
                                        }

                                        if (movez == 1)
                                        {
                                            col =5;
                                            move1 = 3;
                                            move2 = 3;
                                            move3 = 3;
                                            blasteur = 3;
                                            missi = 3;
                                         obs.move(sf::Vector2f(0,0));
                                         vso2.move(sf::Vector2f(0,0));
                                         vso3.move(sf::Vector2f(0,0));
                                        }
                                        ///./////////////////////////////////
                                        if (s.intersects(lim))
                                        {
                                        ship.setPosition(ship.getPosition().x, 440);
                                    }
  ///limite droite pour ship
  if (s.intersects(lim3))
    {
  ship.setPosition(745,440);
    }
    ///Limite gauche pour ship
    if (s.intersects(lim2))
    {
  ship.setPosition(5,440);
    }

///.///////////////////////////////////////////////////////////////////////////////////
///vie des vso///////////////////////////////////////////////////////////////////
///.///////////////////////////////////////////////////////////////////////////////////

///VIE DU VSO1 ////////////////////////////
if ( vie1 == 0 )
{
int randX = rand() % 750;
int randY = rand() % 350;

obs.setPosition(randX, randY);
vie1 = 100;
yo = yo + 1;
cout << yo << endl;
std::ostringstream out;
}
///VIE DU VSO 2 /////////////////////////////
if ( vie2 == 0 )
{
int randX2 = rand() % 750;
int randY2 = rand() % 350;

vso2.setPosition(randX2, randY2);
vie2 = 100;
yo = yo + 1;
cout << yo << endl;
std::ostringstream out;

}
///VIE DU VSO 3 ///////////////////////////
if ( vie3 == 0 )
{
int randX3 = rand() % 750;
int randY3 = rand() % 350;

vso3.setPosition(randX3, randY3);
vie3 = 100;
yo = yo + 1;
cout << yo << endl;
std::ostringstream out;

}


        window.clear();
        window.draw(backg);
        window.draw(ship);
        window.draw(vie);
        window.draw(obs);
        window.draw(minigun);
        window.draw(missile);
        window.draw(mis);
        window.draw(limite);
        window.draw(limite2);
        window.draw(limite3);
        window.draw(limite4);
        window.draw(be);
        window.draw(be2);
        window.draw(be3);
        window.draw(vso2);
        window.draw(vso3);
        window.draw(blat);
        window.draw(pts);
        window.draw(cercle);
        window.draw(Game);
        window.draw(Rect_health);
        window.display();
    }
}


Vue la longueur de code je pense que peut de monde vont si attarder, si quelque personne le fond je leurs dit un grand merci d'avance.

    Pour les courageux, je suis sous code-block 13.12 avec le compilateur de défaut

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : problème de conteur de point
« Réponse #7 le: Février 25, 2014, 11:01:25 pm »
                       std::ostringstream out;
                       out << yo;
                       std::string test = yo.str();
                       sf::Font font;
                       font.loadFromFile("of.ttf");
                       sf::Text pts;
                       pts.setFont(font);
                       pts.setString(yo);
                       pts.setColor(sf::Color::Yellow);
                       pts.setCharacterSize(20);
                       pts.setPosition(340,572);
:o :o :o
C'est n'importe quoi et ça ressemble pas au code posté dans ton premier post.

yo.str() ça n'existe même pas, yo est un entier.
Si tu veux récupérer la chaine de caractères générée par ton ostringstream c'est out.str()
Ensuite pts.setString(yo), setString attend une chaine de caractère, pas un int. Donc donne lui ta std::string, pas ton yo.


if ( vie1 == 0 )
{
int randX = rand() % 750;
int randY = rand() % 350;

obs.setPosition(randX, randY);
vie1 = 100;
yo = yo + 1;
cout << yo << endl;
std::ostringstream out;
}
Ben ouai, t'incrémentes l'entier yo qui représente ton score, tu l'affiches dans la console, mais tu fais quoi pour changer le texte ? Ton std::ostringstream out; ne sert à rien et ne fait absolument rien.

Il faut que quand ton score changes tu changes aussi la string que tu mets dans ton sf::Text.
Donc en gros tu augmentes ton score yo, tu crées une chaine de caractères qui contient yo (tu fais ça avec ton ostringstream comme au début), et tu files cette chaine à ton sf::Text (avec setString). En bref c'est ce que tu fais déjà dans ton premier post.  ???


Quand tu postes un code C++ sur le forum, choisis C++ pour la balise code, ça le colore.
Mais surtout ne poste pas de code de 500 lignes remplis de trucs inutiles. Il faut que tu vires tout ce qui est superflu sinon personne ne va y jeter un oeil et ça sera chiant pour ceux qui le feront. Ton problème c'est d'afficher un score, que tu incrémentes quand il se passe un truc. Donc dégages tout ce qui ne sert à rien. Si quand tu dégages quelque chose le probleme disparait, c'est que le probleme se trouvait surement là. ;)
Et aussi, tu te rends compte que ton indentation est dégueulasse ? Ça n'aide pas ceux qui te lisent, et ça ne t'aide pas non plus. Fais un petit effort quand même.
Là avec ton code (qui ne compile pas) si on a envie de tester on va pas aller loin, on n'a pas ta font, ou n'a pas tes textures. Pis si on arrive à lancer tout ça bah on sait pas quoi faire une fois en jeu. On trouve vite qu'on peut bouger à droite et à gauche, mais pour tirer c'est une autre histoire. Et le temps qu'on trouve comment faire les vaisseaux ennemis ont quitté l'écran. Enfin bref, on sait pas quoi faire pour voir le probleme en jeu.
Et aussi il faut que tu décrives bien le problème. Tu dis que "ça" s'affiche dans la console mais pas dans le jeu. C'est vague, est-ce que c'est le texte qui ne s'affiche pas du tout ? Ou est-ce que ça affiche 0 mais quand le score s'incrémente ça affiche toujours 0 ? Suivant ce qui se passe on va pas chercher l'erreur au même endroit.

Si tu prends 5 minutes pour sortir un code qui reproduit le problème en moins de 100 lignes, tu gagneras du temps sur le forum et tu en feras gagner à ceux qui te répondent. Par exemple voilà ton code en virant presque tout l'inutile et en mettant l'évènement que tu veux déclencher (l'incrémentation du score) dans un event de pressement de bouton de souris histoire de pouvoir le déclencher à volonté :
#include <SFML/Graphics.hpp>
#include <iostream>
#include <sstream>

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "[1.0] SPACE");

    unsigned int yo = 0;

    std::ostringstream out;
    out << yo;
    std::string test = out.str();
    sf::Font font;
    font.loadFromFile("of.ttf");
    sf::Text pts;
    pts.setFont(font);
    pts.setString(test);
    pts.setColor(sf::Color::Yellow);
    pts.setCharacterSize(20);
    pts.setPosition(340,572);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
            if (event.type == sf::Event::MouseButtonPressed)
            {
                yo = yo + 1;
                std::ostringstream out;
                out << yo;
                std::string test = out.str();
                pts.setString(test);
            }
        }

        window.clear();
        window.draw(pts);
        window.display();
    }
}

Snitteur

  • Jr. Member
  • **
  • Messages: 63
    • Voir le profil
Re : problème de conteur de point
« Réponse #8 le: Février 26, 2014, 08:50:27 am »
 Effectivement mon code est archi moche, car je ne savais pas forcement faire de classe, maintenant je commence a mieux comprendre le principe de classe. Donc par la suite il serons donc plus lisible

Je te dit un grand merci, tant pour tait connaissance que pour ta capacité a aider les personnes dans le besoin