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

Auteur Sujet: [Résolu]Problème d'affichage d'un quadrillage  (Lu 3200 fois)

0 Membres et 2 Invités sur ce sujet

toto012

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
[Résolu]Problème d'affichage d'un quadrillage
« le: Avril 27, 2013, 06:08:53 pm »
Bonjour a tous,

Je suis en train de réaliser un RPG basé sur le tile mapping.
Pour cela je fais un éditeur de map, je tente d'afficher un quadrillage, pour l'instant de 4x4 carreaux.
Voila le code(j'ai volontairement retiré le code de la boucle et des initialisations) :
   
        app.Clear();
        // Affichage de quadrillage
        for(int cptQuad1 = 1; cptQuad1 == 3; cptQuad1 ++){
            quad.AddPoint(posQuad.x, posQuad.y, Color::Red);
            quad.AddPoint(posQuad.x, posQuad.x * 4, Color::Red);
            posQuad.x += 49;
            app.Draw(quad);  }
        for(int cptQuad2 = 1; cptQuad2 == 3; cptQuad2 ++) {
            quad.AddPoint(posQuad.x, posQuad.y, Color::Red);
            quad.AddPoint(posQuad.x * 4, posQuad.x, Color::Red);
            posQuad.y += 49;
            app.Draw(quad); }

    app.Display();
« Modifié: Avril 28, 2013, 01:18:24 pm par toto012 »

toto012

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Problème d'affichage d'un quadrillage
« Réponse #1 le: Avril 28, 2013, 11:18:38 am »
Personne ?

gostron

  • Jr. Member
  • **
  • Messages: 53
    • Voir le profil
Re : Problème d'affichage d'un quadrillage
« Réponse #2 le: Avril 28, 2013, 12:08:14 pm »
D'après ton post, j'en déduis que "quad" est une sf::Shape ?

J'ai personnellement un peu de mal avec ton code parce qu'il me donne l'impression que tu pars d'une Shape sans point, puis que tu boucles sur l'ajout de deux points dans ta forme puis affiches ta shape. J'en conclue que tu vas d'abord affiche une Shape de 2 points, puis 4, puis 6, puis sur la seconde boucle 8 points, 10 points, 12 points ? Sans la suite du code de plus, tu ne semble jamais clear ta forme, donc à chaque image on a de plus en plus de points.

Je t'aurais conseillé un code comme ceci

        int width = 1280;
        int height = 720;
        int outlineWidth = 2;
        for ( int x(0) ; x < width ; x += 49 )
            for ( int y(0) ; y < height ; y += 49 ) {
                app.Draw(sf::Shape::Line(x, 0, x, height, 0, sf::Color::White, outlineWidth));
                app.Draw(sf::Shape::Line(0, y, width, 0, 0, sf::Color::White, outlineWidth));
            }

Après n'oublie pas qu'il faut réglé la taille de l'outline de ta sf::Shape.

Je t'aurais tout de même conseillé l'utilisation des constructeurs prédéfinis qui facilitent la vie.

toto012

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Problème d'affichage d'un quadrillage
« Réponse #3 le: Avril 28, 2013, 12:30:59 pm »
Tout d'abord merci pour ta réponse, ensuite j'ai oublié de préciser que je suis en 1.6.
Or en 1.6 Shape::Line n'existe pas.
Et oui quad est un Shape.

Sachant que je ne peut pas utiliser Shape::Line, voila une modification de mon code qui(que j'ai faite en fonction de tes remarques), surement, sera plus comprehensible
(ce code est dans la boucle génerale de l'app) :
    Vector2f posQuad;
    posQuad.x = 49;
    posQuad.y = 0;

    Shape quadV;
    quadV.AddPoint(posQuad.x, posQuad.y, Color::Red, Color::Red);
    quadV.AddPoint(posQuad.x, 49 * 4, Color::Red, Color::Red);
    quadV.SetOutlineWidth(2);

    Shape quadH;
    quadH.AddPoint(0, posQuad.y, Color::Red, Color::Red);
    quadH.AddPoint(49 * 4, 0, Color::Red, Color::Red);
    quadH.SetOutlineWidth(2);

     DANS LA BOUCLE GENERALE:
    // Affichage de quadrillage
    // Axe Vertical
    app.Draw(quadV);

    for(int cptQuad1 = 1; cptQuad1 <= 3; cptQuad1 ++){
            quadV.SetPointPosition(0, posQuad.x, posQuad.y);
            quadV.SetPointPosition(1, posQuad.x, 49 * 4);
            posQuad.x += 49;
            app.Draw(quadV);  }

        // Axe Horizontal
        app.Draw(quadH);

        for(int cptQuad2 = 1; cptQuad2 <= 3; cptQuad2 ++) {
            quadH.SetPointPosition(0, posQuad.x, posQuad.y);
            quadH.SetPointPosition(1, 49 * 4, posQuad.y);
            posQuad.y += 49;
            app.Draw(quadH); }

    app.Display();

    posQuad.x = 49;
    posQuad.y = 0;

Mais comme avant, rien ne s'affiche . :'(

Voila, merci d'avance a ceux qui me réponderont ; )
« Modifié: Avril 28, 2013, 12:35:00 pm par toto012 »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Problème d'affichage d'un quadrillage
« Réponse #4 le: Avril 28, 2013, 12:40:26 pm »
Et c'est quoi le problème ? Parce que là tu dis juste "j'ai un problème, voilà le code" mais on sait ni ce qui se passe ni ce que tu voudrais qu'il se passe. :-\
Tout d'abord merci pour ta réponse, ensuite j'ai oublié de préciser que je suis en 1.6.
Or en 1.6 Shape::Line n'existe pas.
Ben si justement sf::Shape::Line existe en 1.6, c'est en 2.0 qu'elle n'existe plus. (malheureusement ?)

toto012

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Problème d'affichage d'un quadrillage
« Réponse #5 le: Avril 28, 2013, 01:18:03 pm »
Whao, je suis vraiment désolé.
J'avais mal cherché. Mon problème était que la quadrillage ne s'affichait pas .
Mais comme Line existe je vais laisser de coté mes lignes de code inutiles et utiliser ce qui existe.

Mon ancien code restera comme même un mystère. :-\

Merci pour ta réponse.
« Modifié: Avril 28, 2013, 02:27:40 pm par toto012 »

 

anything