Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - S66

Pages: [1]
1
Graphique / La flèche qui s'affiche mal
« le: Octobre 12, 2015, 06:36:13 pm »
Salut !
Encore un problème !
Alors voilà, je fais mon jeu 2d iso tranquillement, j'essaie de mettre dans mon jeu un système pour changer de map, et pour ça, je veux afficher une flèche aux abord de la fenêtre.
Voici mon code:
(click to show/hide)
Arrow.h:
(click to show/hide)
Voici ce que me donne le résultat:
ArrowDrawed True. Pos Mouse: 74, 234
Tile: 1, 13
Mais la flèche est "coupée", je n'en vois qu'une partie (changer les positions des move ne sert à rien).
Merci de m'aider.

PS: Et la flèche est bien dans le Working Directory, de plus, si il y'a un problème pour la charger, Le jeu m'affiche ce problème.

2
Général / Fonction getTileIso() qui a un sérieux problème
« le: Septembre 06, 2015, 05:17:03 pm »
Hello,
J'ai un problème dans ma fonction getTileIso() qui doit m'indique le x et y de la tile
getTileIso():
(click to show/hide)
Je vois pas du tout le problème.
Merci.

3
Général / SIGSEGV
« le: Septembre 02, 2015, 02:16:35 pm »
Hello !
Je teste mon petit programme de jeu en 2d iso, et... vous l'aurez deviné, ça marche pas.
Voici mon erreur:
error: no matching function for call to 'sf::Mouse::getPosition(MainMap*)'
                     sf::Vector2i mousePos = sf::Mouse::getPosition(this);
                                                                        ^
Et mon code:
sf::Event e;
            while (this->pollEvent(e)) {
                if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) {
                    sf::Vector2i mousePos = sf::Mouse::getPosition(this);
                    perso.startMoving(mousePos.x, mousePos.y);
                }
            }
this est un MainMap qui hérite de QSfmlCanvas qui hérite de renderwindow et de qwidget.
Merci de votre aide

4
Général / [Résolu] Tilemap isométrique ? Fail !
« le: Août 13, 2015, 01:26:32 pm »
Salut,
J'essaie de faire une tilemap isométrique à partir du code de tilemapping de la sfml en 2d.
Gros fail.
Voici mon code:
bool loadIso(const std::string& tileset, sf::Vector2u tileSize, const int* tiles, unsigned int width, unsigned int height) {
        if (!m_tileset.loadFromFile(tileset))
            return false;

        m_vertices.setPrimitiveType(sf::Quads);
        m_vertices.resize(width * height * 4);

        for (unsigned int x = 0; x < width; ++x)
            for (unsigned int y = 0; y < height; ++y) {
                sf::Vertex* quad = &m_vertices[(x + y * width) * 4];

                if(x % 2 == 0){ //Nombre Pair
                    //Position des quatre coins
                    quad[0].position = sf::Vector2f(x * tileSize.x,        y * tileSize.y); //tileSize.x = 64, tileSize.y = 32
                    quad[1].position = sf::Vector2f((x + 1) * tileSize.x,  y * tileSize.y);
                    quad[2].position = sf::Vector2f((x + 1) * tileSize.x, (y + 1) * tileSize.y);
                    quad[3].position = sf::Vector2f(x * tileSize.x,       (y + 1) * tileSize.y);
                }else{ //Impair
                    //Position des quatre coins
                    quad[0].position = sf::Vector2f(x * tileSize.x + (tileSize.x/2),        (y * tileSize.y) - (y * (tileSize.y/2)));
                    quad[1].position = sf::Vector2f((x + 1) * tileSize.x + (tileSize.x/2),  (y * tileSize.y) - (y * (tileSize.y/2)));
                    quad[2].position = sf::Vector2f((x + 1) * tileSize.x + (tileSize.x/2), ((y + 1) * tileSize.y) - ((y + 1) * (tileSize.y/2)));
                    quad[3].position = sf::Vector2f(x * tileSize.x + (tileSize.x/2),       ((y + 1) * tileSize.y) - ((y + 1) * (tileSize.y/2)));
                }
                quad[0].texCoords = sf::Vector2f(0, 0);
                quad[1].texCoords = sf::Vector2f(64, 0);
                quad[2].texCoords = sf::Vector2f(64, 32);
                quad[3].texCoords = sf::Vector2f(0, 32);
            }
        return true;
    }
Résultat:

Cool ! Pourquoi mon programme fait ça ?!

5
Général / [RÉSOLU une bonne fois pour toute] Code tilemapping
« le: Août 12, 2015, 03:44:46 pm »
Hello,
Il y'a quelques trucs que j'ai pas compris dans l'exemple du tilemapping
bool load(const std::string& tileset, sf::Vector2u tileSize, const int* tiles, unsigned int width, unsigned int height)
    {
        // on charge la texture du tileset
        if (!m_tileset.loadFromFile(tileset))
            return false;

        // on redimensionne le tableau de vertex pour qu'il puisse contenir tout le niveau
        m_vertices.setPrimitiveType(sf::Quads);
        m_vertices.resize(width * height * 4);

        // on remplit le tableau de vertex, avec un quad par tuile
        for (unsigned int i = 0; i < width; ++i)
            for (unsigned int j = 0; j < height; ++j)
            {
                // on récupère le numéro de tuile courant
                int tileNumber = tiles[i + j * width];

                // on en déduit sa position dans la texture du tileset
                int tu = tileNumber % (m_tileset.getSize().x / tileSize.x);
                int tv = tileNumber / (m_tileset.getSize().x / tileSize.x);

                // on récupère un pointeur vers le quad à définir dans le tableau de vertex
                sf::Vertex* quad = &m_vertices[(i + j * width) * 4];

                // on définit ses quatre coins
                quad[0].position = sf::Vector2f(i * tileSize.x, j * tileSize.y);
                quad[1].position = sf::Vector2f((i + 1) * tileSize.x, j * tileSize.y);
                quad[2].position = sf::Vector2f((i + 1) * tileSize.x, (j + 1) * tileSize.y);
                quad[3].position = sf::Vector2f(i * tileSize.x, (j + 1) * tileSize.y);

                // on définit ses quatre coordonnées de texture
                quad[0].texCoords = sf::Vector2f(tu * tileSize.x, tv * tileSize.y);
                quad[1].texCoords = sf::Vector2f((tu + 1) * tileSize.x, tv * tileSize.y);
                quad[2].texCoords = sf::Vector2f((tu + 1) * tileSize.x, (tv + 1) * tileSize.y);
                quad[3].texCoords = sf::Vector2f(tu * tileSize.x, (tv + 1) * tileSize.y);
            }

        return true;
    }

1) On utilise m_tileset que pour avoir la longueur du tileset. Mais comment le quad a -t- il la bonne image de tuile ? Il n'y a aucun quad->setTexture(m_tileset); par exemple.
2) À quoi sert texCoords du coup ?

Merci de m'éclairer  :D

6
Général / [Résolu]Qt + Sfml classe
« le: Août 09, 2015, 05:51:57 pm »
Hello,
ça fait au moins une heure que je fais des recherches pour intégrer Sfml à Qt (disque dur complètement formaté, tous mes codes partis !) J'ai utilisé le tuto de la 1.6 tout en changeant quelques trucs
-Un reinterpret_cast
-Une clock (cf code)
class MyCanvas : public QSFMLCanvas
{
public :

    MyCanvas(QWidget* Parent, const QPoint& Position, const QSize& Size) :
    QSFMLCanvas(Parent, Position, Size)
    {

    }
    ~MyCanvas() {}

private :

    void OnInit()
    {
        //Initialisation et attributs
    }

    void OnUpdate()
    {
        // On efface l'écran
        clear(sf::Color(0, 128, 0));

        // Une petite rotation du sprite
        //mySprite.Rotate(GetFrameTime() * 100.f);

        // Et on l'affiche
        //Draw(mySprite);
        myClock.restart();
    }

    //sf::Image  myImage;
    //sf::Sprite mySprite;
    sf::Clock myClock;
};
Le main:
#include <QApplication>
#include "mycanvas.h"

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QWidget w;
    w.resize(QSize(200, 200));
    MyCanvas t(&w, QPoint(20, 20), QSize(100, 100));
    w.show();

    int resultat = app.exec();
    return resultat;
}
 
Et... les erreurs:
Quelques unes de ce genre:
C:\Users\...\mycanvas.h:12: error: undefined reference to `QSFMLCanvas::~QSFMLCanvas()'
D'autres comme ça:
moc_qsfmlcanvas.cpp:-1: error: undefined reference to `non-virtual thunk to QSFMLCanvas::~QSFMLCanvas()'
Et le collect:
collect2.exe:-1: error: error: ld returned 1 exit status
Help please.
Merci.

7
Général / [Résolu] Fuite de mémoire ?
« le: Juin 15, 2015, 06:08:19 pm »
Bonjour.
Je cherche à intégrer des QWidgets dans ma fenêtre SFML.
Et je crois qu'il y'a un petit problème ( ici:http://www.sfml-dev.org/tutorials/1.6/graphics-qt-fr.php)

int main(int argc, char **argv)
{
    QApplication App(argc, argv);

    // On crée la fenêtre principale
    QFrame* MainFrame = new QFrame;
    MainFrame->setWindowTitle("Qt SFML");
    MainFrame->resize(400, 400);
    MainFrame->show();

    //On crée une vue SFML dans la fenêtre principale
    MyCanvas* SFMLView = new MyCanvas(MainFrame, QPoint(20, 20), QSize(360, 360));
    SFMLView->show();

    return App.exec();
}
Il y'a des new. On doit donc faire des delete non ?
Ou bien Qt gère ça automatiquement ? oO'
Sinon, si vous avez une meilleure solution pour intégrer un QWidget dans une RenderWindow, je suis preneur !
J'ai SFML 2.2 mais j'utilise des tutos 1.6. oO'

Merci.

8
Général / [RÉSOLU] Mon poids est chelou.
« le: Mai 17, 2015, 12:58:04 pm »
B'jour.
J'vous jure, c'est hyper chelou.
Quand je met mon projet en mode debug, tout va bien, mon poids est normal.
Quand je met mon projet en mode release, tout va mal.
J'ai des warnings:
C:\Users\william\Projets\C++\tilemap\Inventory.h:178: avertissement : 'poid' may be used uninitialized in this function [-Wmaybe-uninitialized]
                 poid += myObjects[g].poids;
                                           ^
Et pourtant...
Bon. Je suppose que vous avez rien compris ?
J'ai un inventaire. il a une variable poids qui a le poids de tous les objets.
J'ai des places d'inventaires. Elles sont chacun leur poids.
class Inventaire {
public:

// ...

private:
   const unsigned int maxTailleX;
   sf::RectangleShape dfault; // carré noir de 32x32
   sf::Text invTextName; // = invName en sf::Text.
   InvSpace myObjects[16]; // place d'objet. il y'a 16 places.
   sf::Font myFont;
   sf::Sprite spr;
   int argent;
   sf::Text textArgent;
   unsigned int maxPoids;
   sf::Text Poids;
};

Et ... les warnings sont dans cette fonction:

int getPoids() {
        int poid; //Warning: 'poid' was declared here
        for( std::size_t i(0) ; i < 16 ; i++) {
            for (std::size_t g = 0; g < myObjects[i].number; g++) {
                poid += myObjects[g].poids; // Warning: [-Wmaybe-uninitialized]
            }
        }
            return poid;
    }

Bizarre tout ça...
Mais quand je me met en mode debug, tout va bien ! Aucun warning, pas de poids chelou...
Ah, et à propos du poids chelou...
En mode release, au début, j'ai une faux dans mon inventaire.
Et j'ai un poids très bizarre... 1722241157/100
Sachant que 100 est le poids maximum de mon inventaire ._.
Puis quand je vais récolter 1 blé, qui prend une place dans mon inventaire, mon poids va à 19.
et il varie n'importe comment quand j'ai quelque chose de plus dans mon inventaire.

En quoi cela concerne -t- il sfml ? Bin je me suis dit: Peut-être un problème sur les Sf::text...
(click to show/hide)
Sinon, je suppose que vous avez besoin de quelques fonctions ?

Dans ma classe Inventaire:

bool add (int nbr, std::string str, const sf::Texture& texture, unsigned int poid = 1) {

         for (std::size_t i(0) ; i < 16 ; i++)
         {
             if (myObjects[i].name == str && (getPoids()+poid) <= maxPoids) // on a trouvé une case qui contient déjà de ces objets ! ET on a assez de place
             {
                 myObjects[i].number += nbr; // donc on en ajoute le nombre qu'il faut.
                 myObjects[i].nbr.setString( std::to_string(myObjects[i].number) );
                 updatePoids();
                 return true; // objets ajoutés à l'inventaire avec succès.
             }
         }

         for(std::size_t i(0) ; i < 16 ; i++) // aucune case contenant déjà de ces objets n'a été trouvée, on va donc en chercher une vide.
         {
             updatePoids();
             if(myObjects[i].number == 0 && (getPoids()+poid) <= maxPoids) // si cette case est vide... ET qu'on a assez de place
             {

                 myObjects[i].number = nbr; // ...on la remplit avec notre nouvel objet.
                 myObjects[i].poids = poid;
                 myObjects[i].name = str;
                 myObjects[i].image.setTexture(texture);
                 myObjects[i].nbr.setString( std::to_string(myObjects[i].number) );
                 myObjects[i].texte.setString( myObjects[i].name );

                 if(i == 0) { // si c'est la première case de l'inventaire...
                     myObjects[i].image.setPosition(2.f, 2.f); // ...on lui donne la position du premier objet à afficher.
                     myObjects[i].texte.setPosition(2.f, 32.f);
                     myObjects[i].nbr.setPosition(18.f, 2.f);

                     myObjects[i].texte.setFont(myFont);
                     myObjects[i].nbr.setFont(myFont);
                 }
                 else
                 {
                     myObjects[i].image.setPosition( myObjects[i-1].image.getPosition() ); // ...sinon on lui donne la position de l'objet d'avant...
                     myObjects[i].image.move(35.f, 0.f); // ...avec x+32 !
                     myObjects[i].nbr.setPosition( myObjects[i-1].nbr.getPosition() ); // ...sinon on lui donne la position de l'objet d'avant...
                     myObjects[i].nbr.move(35.f, 0.f); // ...avec x+32 !
                     myObjects[i].texte.setPosition( myObjects[i-1].texte.getPosition() ); // ...sinon on lui donne la position de l'objet d'avant...
                     myObjects[i].texte.move(35.f, 0.f); // ...avec x+32 !

                     myObjects[i].texte.setFont(myFont);
                     myObjects[i].nbr.setFont(myFont);
                 }
                 updatePoids();
                 return true; // objets ajoutés à l'inventaire avec succès.
             }
         }
         updatePoids();
         return false; // échec, l'inventaire est plein, les objets n'ont pas pu y être ajoutés.
     }

int getPoids() {
        int poid;
        for( std::size_t i(0) ; i < 16 ; i++) {
            for (std::size_t g = 0; g < myObjects[i].number; g++) {
                poid += myObjects[g].poids;
            }
        }
            return poid;
    }

sf::Text updatePoids() {
        std::string tPoids = "Poids: ";
        int poids = getPoids();
        std::string poidsStr = std::to_string(poids);
        std::string poidsMax = std::to_string(maxPoids);
        tPoids += poidsStr;
        tPoids += "/";
        tPoids += poidsMax;
        Poids.setString(tPoids); //Poids = le sf::Text.
        return Poids;
    }

(click to show/hide)

Merci.  :-X

EDIT: ah j'oubliais, voici ma classe InvSpace:

class InvSpace
{
public:
    InvSpace(int poid = 1) : number(0), name(""), image(), texte(), nbr(), poids(poid) {
        texte.setCharacterSize(20);
        texte.setStyle(sf::Text::Bold);
        nbr.setCharacterSize(25);
        texte.setColor(sf::Color::Red);
        nbr.setColor(sf::Color::Magenta);
    }
    ~InvSpace() {}
    unsigned int number;
    std::string name;
    sf::Sprite image;
    sf::Text texte;
    sf::Text nbr;
    int poids;
};

9
Général / SFGUI est il un virus ?
« le: Avril 18, 2015, 04:02:36 pm »
B'jour,
Alors voilà: j'ai téléchargé le zip de SfGui sur http://sfgui.sfml-dev.de/ sans le décompresser, et quelques minutes après, mon antivirus me dit qu'il y'a un virus de browser j'sais pas quoi qui change les paramètres du navigateur...
Alors voilà ma question: sfgui et un virus ou c'est mon antivirus qui déc ?
 ???

10
Général / [ Résolu ] SIGSEGV (inventaire)
« le: Avril 08, 2015, 06:27:21 pm »
Bonjour,
...
Regardez en bas. Enfin, à la page 3.

11
Graphique / [RÉSOLU] Erreur View
« le: Mars 24, 2015, 05:28:35 pm »
'jour

... ... ... (voir en bas)

Merci  :)

12
Graphique / Exe qui trouve pas sfml-graphics
« le: Mars 14, 2015, 03:32:18 pm »
'jour tout le monde
Super... nouveau problème:
Je fais un petit jeu tilemap avec des persos bougés avec le clavier.
Quand je distribue le jeu en mode release, je met dans le zip:
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread1.dll
sfml-graphics-2.dll
sfml-system-2.dll
sfml-window-2.dll

Un ami le teste et heu... il une erreur: l'exécutable trouve pas la dll sfml-graphics-2.dll, ALORS QUE JE L'AI MISE DANS LE MÊME DOSSIER QUE L'EXÉCUTABLE !
What's the problem ?

Merci  :)

PS: Z'avez besoin du code ?

13
'jour
Après j'arrive pas à utiliser SFML, maintenant, c'est: j'arrive pas à open a file.
J'ai repris l'exemple de tile mapping sur SFML 2.2.
J'ai quand même fait quelques modifications car j'aime pas les fuites de mémoire:
bool load(const std::string& tileset, sf::Vector2u tileSize, const int* tiles, unsigned int width, unsigned int height)
    {
        // on charge la texture du tileset
        if (!m_tileset.loadFromFile(tileset))
            return false;

        // on redimensionne le tableau de vertex pour qu'il puisse contenir tout le niveau
        m_vertices.setPrimitiveType(sf::Quads);
        m_vertices.resize(width * height * 4);

        // on remplit le tableau de vertex, avec un quad par tuile
        for (unsigned int i = 0; i < width; ++i)
            for (unsigned int j = 0; j < height; ++j)
            {
                // on récupère le numéro de tuile courant
                int tileNumber = tiles[i + j * width];

                // on en déduit sa position dans la texture du tileset
                int tu = tileNumber % (m_tileset.getSize().x / tileSize.x);
                int tv = tileNumber / (m_tileset.getSize().x / tileSize.x);

                // on récupère un pointeur vers le quad à définir dans le tableau de vertex
                sf::Vertex* quad = &m_vertices[(i + j * width) * 4];

                // on définit ses quatre coins
                quad[0].position = sf::Vector2f(i * tileSize.x, j * tileSize.y);
                quad[1].position = sf::Vector2f((i + 1) * tileSize.x, j * tileSize.y);
                quad[2].position = sf::Vector2f((i + 1) * tileSize.x, (j + 1) * tileSize.y);
                quad[3].position = sf::Vector2f(i * tileSize.x, (j + 1) * tileSize.y);

                // on définit ses quatre coordonnées de texture
                quad[0].texCoords = sf::Vector2f(tu * tileSize.x, tv * tileSize.y);
                quad[1].texCoords = sf::Vector2f((tu + 1) * tileSize.x, tv * tileSize.y);
                quad[2].texCoords = sf::Vector2f((tu + 1) * tileSize.x, (tv + 1) * tileSize.y);
                quad[3].texCoords = sf::Vector2f(tu * tileSize.x, (tv + 1) * tileSize.y);

                delete quad;
                quad = 0;
            }

        delete tiles;
        tiles = 0;
        return true;
    }

Je teste le code... aucune erreur de compilo... il s'exécute...
Failed to load image "tileset.png". Reason: Unable to open file
Err Arr.
Je fais quoi moi ? o_o.
Merci  :)

PS: oui, j'ai vérifié, j'ai bien tileset.png ET dans le dossier debug ET dans le dossier release ET dans le dossier des codes sources.

14
Général / Erreur 0xc0000135
« le: Février 24, 2015, 10:02:10 am »
Bonjour  :)
Alors voilà: je me lance pour faire un (grand) jeu, mais dès le départ, ça plante.
Mon debugger m'a dit un truc du genre "During startup program exited with code 0xc0000135".
Bizarre bizarre o.o'
Alors heu voilà mon .pro:
TEMPLATE = app
QT = sql widgets
TARGET = Teal

SOURCES += \
    main.cpp \
    teal_connex.cpp \
    hl_sha1wrapper.cpp \
    hl_sha1.cpp

HEADERS += \
    teal_connex.h \
    hl_sha1wrapper.h \
    hl_sha1.h \
    hl_hashwrapper.h \
    hl_types.h

INCLUDEPATH += C://Qt/Qt5.2.1/5.2.1/mingw48_32/include/SFML/include
# Je suis avec SFML static, pas de DLL avec moi. J'ai pas manqué un truc à propos de ça ?
win32:CONFIG(debug, debug|release): LIBS += \
-L"C:/Qt/Qt5.2.1/5.2.1/mingw48_32/include/SFML/lib/" -lsfml-graphics-d -lsfml-window-d -lsfml-system-d

else:win32:CONFIG(release, debug|release): LIBS += \    
-L"C:/Qt/Qt5.2.1/5.2.1/mingw48_32/include/SFML/lib/" -lsfml-graphics -lsfml-window -lsfml-system
 
Mon main.cpp:
#include "teal_connex.h"
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/System.hpp>

int main(int argc, char *argv[])
{
    sf::RenderWindow w(sf::VideoMode(400, 400, 32), "Teal");
    Teal teal;
    while (w.isOpen())
        {
            sf::Event event;
            while (w.pollEvent(event))
            {
                if (event.type == sf::Event::Closed)
                    w.close();
            }

            w.clear();
            w.draw(teal);
            w.display();
        }
    return 0;
}
 
Mon teal_connex.h:
#ifndef TEAL_CONNEX_H
#define TEAL_CONNEX_H

#include <QtSql>
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QFormLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QString>
#include <QMessageBox>
#include "hl_sha1wrapper.h"
#include "hl_sha1.h"
#include "hl_hashwrapper.h"
#include <string>
#include <QPixmap>

#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/System.hpp>

class Teal : public QWidget, public sf::Drawable
{
public:
    Teal();
    ~Teal();
public slots:
    void connex();
private:
    Q_OBJECT
    void draw(sf::RenderTarget& target, sf::RenderStates states) const;
    QLabel *titre;
    QLabel *connexion;
    QWidget fen;
    QVBoxLayout *texte;
    QLineEdit *pseudo;
    QLineEdit *pass;
    QFormLayout *formLayout;
    QVBoxLayout *layoutPrincipal;
    QPushButton *boutonConnexion;
    QString s_pseudo;
    QString s_pass;
    QString t_pseudo;
    QString t_pass;
    int s_id;
};
#endif // TEAL_CONNEX_H
 
Et mon teal_connex.cpp:
#include "teal_connex.h"

using namespace sf;

Teal::Teal() : QWidget(), Drawable()
{
    this->setFixedSize(400, 400);
    QWidget fen(this);
        texte = new QVBoxLayout;
            titre = new QLabel("Teal");
            connexion = new QLabel("Connexion");
        texte->addWidget(titre);
        texte->addWidget(connexion);
        pseudo = new QLineEdit;
        pass = new QLineEdit;
        pass->setEchoMode(QLineEdit::Password);

        formLayout = new QFormLayout;
        formLayout->addRow("Pseudo: ", pseudo);
        formLayout->addRow("Pass:", pass);

        layoutPrincipal = new QVBoxLayout;
        layoutPrincipal->addLayout(texte);
        layoutPrincipal->addLayout(formLayout); // Ajout du layout de formulaire

        boutonConnexion = new QPushButton("Se Connecter");

        QObject::connect(boutonConnexion, SIGNAL(clicked()), this, SLOT(connex()));
        layoutPrincipal->addWidget(boutonConnexion); // Ajout du bouton

        fen.setLayout(layoutPrincipal);
        fen.show();

        //End of fen
    QWidget allGame(this);
        /*QWidget servChoice(&allGame);
            //...

            //End of servChoice*/

        QWidget charChoice(&allGame);

            //End of charChoice
        QWidget game(&allGame);
            QWidget normal(&game);

            QWidget cbt(&game);

            QWidget statusBar(&game);

            //End of game

    // End
    this->show();
    allGame.hide();
}
Teal::~Teal() {
    delete layoutPrincipal;
    layoutPrincipal = 0;
}
void Teal::connex() {
    QString t_pseudo = pseudo->text();
    QString t_pass = pass->text();
    std::string std_t_pass = t_pass.toStdString();
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setUserName("un truc");
    db.setPassword("un truc");
    db.setDatabaseName("un truc");
    if (db.open()) {
        QSqlQuery qry("SET autocommit = 0",db);
        if (!qry.exec()) {
            db.close();
            QMessageBox::critical(&fen, "Erreur", "Erreur: Unable to do autocommit. Error executing query qry. Merci de reporter cette erreur.");
            return;
        } else {
            hashwrapper *sha1 = new sha1wrapper();
            std::string std_try_pass = sha1->getHashFromString(std_t_pass);
            QString v_pass(std_try_pass.c_str());
            delete sha1;
            sha1 = 0;
            QSqlQuery query;
            query.prepare("SELECT * FROM membre WHERE pseudo = ? AND pass = ?");
            query.addBindValue(t_pseudo);
            query.addBindValue(v_pass);
            if(!query.exec())
            {
                db.close();
                QMessageBox::warning(&fen, "Erreur", "Erreur: Unable to execute query query. Merci de reporter cette erreur.");
                //qDebug() << query.lastError();
                return;
            }
            if (!query.first()) {
                db.close();
                QMessageBox::warning(&fen, "Erreur", "Erreur: Mauvais pseudo ou mot de passe.");
                return;
            }
            if (query.value(10).toString() == "yes") {
                QMessageBox::warning(&fen, "Erreur", "Erreur: Vous êtes banni.");
                db.close();
                return;
            }
            this->s_id = query.value(0).toInt();
            this->s_pseudo = query.value(2).toString();
            this->s_pass = query.value(3).toString();
            QMessageBox::information(&fen, "Connecté", "Vous êtes connecté, "+s_pseudo); // PrepareToPlay
            // fen.hide();
            // servChoice.show();
        }
        db.commit();
        db.close();
    } else {
        QMessageBox::critical(&fen, "Erreur", "Erreur: Unable to open database.");
        return;
    }
    return;
}



// Truc qui sert à rien.
void Teal::draw(sf::RenderTarget& target, sf::RenderStates states) const
    {
        return;
    }
 
Err... je vois pas le problème... vous pourriez m'aider siouplait ?  :D
M'ci  :)

Pages: [1]