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

Auteur Sujet: Les threads me rendent fou !  (Lu 3768 fois)

0 Membres et 1 Invité sur ce sujet

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Les threads me rendent fou !
« le: Février 12, 2014, 08:07:16 pm »
Bonjour,

j'essaie d'implémenter une fonction qui va charger les fichiers en parallèle de l'affichage du gamestate Load mais... ça me donne envie de me suicider tellement ça bug...
Je préfère demander de l'aide en espérant une intervention de laurent :)

loading.cpp
//
//  loading.cpp
//  Game
//
//  Created by Pierre van Houtryve on 9/02/14.
//  Copyright (c) 2014 Pierre van Houtryve. All rights reserved.
//

#include "loading.h"
#include <stdio.h>
#include "ResourcePath.hpp"


 /*
 sf::Texture ld_bar_txt;
 sf::Sprite ld_bar;
 sf::Clock clock;
 sf::Time tm;
 */

CLoad *tmp = new CLoad;
sf::Thread thread1(tmp->loadFiles());
bool first = false;
void CLoad::Init()
{
        ld_bar_txt.setSmooth(1);
        ld_bar.setTextureRect(sf::IntRect(102,102,102,102));
        text.setFont(font);
        text.setCharacterSize(35);
        ld_bar.setTexture(ld_bar_txt);
    clock.restart();;

}
void CLoad::Cleanup()
{
    delete tmp;
}

void CLoad::Pause()
{
   
}
void CLoad::Resume()
{
   
}

void CLoad::HandleEvents(CGameEngine* game)
{
    while(game->screen->pollEvent(Event))
    {
        if(Event.type == sf::Event::Closed)
        {
            game->screen->close();
            this->Cleanup();
            game->Quit();
            exit(0);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
        {
            game->screen->close();
            this->Cleanup();
            game->Quit();
            exit(0);
        }
    }

}
void CLoad::Update(CGameEngine* game)
{
    if(!first)
    {
        thread1.launch();
        first=true;
    }
    if(m_rtr == 404)
    {
        // Je ne fais rien car ma fonction n'as pas encore renvoyée son résultat
    }
    else if(m_rtr!=1)
    {
        // Résultat négatif
        cout << "Cannot load ressources " << endl;
        exit(-1);
    }
    else if (m_rtr==1)
    {
        // ici j'aurais mis mon change gamestate, etc...
    }
    gMutex.lock();
    text.setString(L"Game is loading...");
    text.setColor(sf::Color::White);
    v2u = game->screen->getSize();
    ld_bar.setPosition((v2u.x/2)-75,(v2u.y/2)-75);
    text.setPosition((v2u.x/2)-105,(v2u.y/2)-155);
    if(m<=7)
        m++;
    else if(m>7)
        m=0;

    tm = clock.getElapsedTime();
    if(tm.asMilliseconds()>1)
    {
        ld_bar.setTextureRect(sf::IntRect(m*102,0,102,102));
        clock.restart();
    }
    gMutex.unlock();
}
void CLoad::Draw(CGameEngine* game)
{
    game->screen->draw(ld_bar);
    game->screen->draw(text);
    game->screen->display();
    game->screen->clear();
}

loading.h

//
//  CGameStart.h
//  SFML Gamestates
//
//  Created by Pierre van Houtryve on 6/02/14.
//  Copyright (c) 2014 Pierre van Houtryve. All rights reserved.
//

#ifndef __SFML_Gamestates__CGameStart__
#define __SFML_Gamestates__CGameStart__

#include <iostream>
#include "/Users/pierre/Documents/Mako GUI/Tests/SFML Gamestates/tMap.h"
#include "SFML/Graphics.hpp"
#include "gameengine.h"
#include "gamestate.h"
#include "ResourcePath.hpp"

class CLoad : public CGameState {
   
public:
   
    void Init();
    void Cleanup();
   
    void Pause();
    void Resume();
   
    void HandleEvents(CGameEngine* game);
    void Update(CGameEngine* game);
    void Draw(CGameEngine* game);

private:
    sf::Mutex gMutex;
    sf::Texture ld_bar_txt;
    sf::Sprite ld_bar;
    sf::Clock clock;
    sf::Time tm;
    sf::Event Event;
    sf::Vector2u v2u;
    int m = 0;
    sf::Text text;
    sf::Font font;
   
    int m_rtr =404;
public:
    bool loadFiles()
    {
        if(!(ld_bar_txt.loadFromFile(resourcePath()+"LC_LOAD.png")) || !(font.loadFromFile(resourcePath() + "mini_pixel-7.ttf")))
        {
            gMutex.lock();
            m_rtr=-1;
            return 0;
            cout << " An error occured " << endl;
            gMutex.unlock();

        }
        else
        {
            gMutex.lock();
            m_rtr=1;
            return 1;
            cout << "Game ressources succesfully loaded !" << endl;
            gMutex.unlock();
        }
    }
   

};

#endif /* defined(__SFML_Gamestates__CGameStart__) */
 


J'ai tout essayé pendant 3h et rien ne fonctionne...

ET EN BONUS. ET OUI, CA ALLAIS QUAND MEME PAS MARCHER SI FACILEMENT : Xcode me crache ceci sorti tout droit du code source de SFML

http://prntscr.com/2rvpjg


Help meeeee :'(
« Modifié: Février 12, 2014, 11:07:09 pm par Laurent »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les threads me rendent fou !
« Réponse #1 le: Février 12, 2014, 11:10:14 pm »
Fais simplement ce qui est indiqué dans la doc et les tutos... et ça marchera. Là tu utilises une syntaxe fantaisiste pour construire ton thread. Relis calmement la documentation et essaye de la comprendre.

Indice : là tu appelles ta fonction tmp->loadFiles() et tu passes son résultat au constructeur de sf::Thread. Au lieu de lui passer un pointeur sur la fonction + l'objet.
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Les threads me rendent fou !
« Réponse #2 le: Février 13, 2014, 06:39:30 am »
Donc l'erreur vient du fair qu'il y a un retour ?

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Les threads me rendent fou !
« Réponse #3 le: Février 13, 2014, 07:05:14 am »
BORDEL DE M********************
J'essaie tout et j'y arrive pas, je vais me tirer une balle si ça continue, c'est horrible...
CODE:

//
//  loading.cpp
//  Game
//
//  Created by Pierre van Houtryve on 9/02/14.
//  Copyright (c) 2014 Pierre van Houtryve. All rights reserved.
//

#include "loading.h"
#include <stdio.h>
#include "ResourcePath.hpp"
#include "SFML/System.hpp"


 /*
 sf::Texture ld_bar_txt;
 sf::Sprite ld_bar;
 sf::Clock clock;
 sf::Time tm;
 */


bool first = false;
CLoad f();
void CLoad::Init()
{
        ld_bar_txt.setSmooth(1);
        ld_bar.setTextureRect(sf::IntRect(102,102,102,102));
        text.setFont(font);
        text.setCharacterSize(35);
        ld_bar.setTexture(ld_bar_txt);
    thread = new sf::Thread(CLoad::loadFiles(),&f);
    clock.restart();;

   
}
void CLoad::Cleanup()
{
}

void CLoad::Pause()
{
   
}
void CLoad::Resume()
{
   
}

void CLoad::HandleEvents(CGameEngine* game)
{
    while(game->screen->pollEvent(Event))
    {
        if(Event.type == sf::Event::Closed)
        {
            game->screen->close();
            this->Cleanup();
            game->Quit();
            exit(0);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
        {
            game->screen->close();
            this->Cleanup();
            game->Quit();
            exit(0);
        }
    }

}
void CLoad::Update(CGameEngine* game)
{
    if(!first)
    {
        thread1.launch();
        first=true;
    }
    if(m_rtr == 404)
    {
        // Je ne fais rien car ma fonction n'as pas encore renvoyée son résultat
    }
    else if(m_rtr!=1)
    {
        // Résultat négatif
        cout << "Cannot load ressources " << endl;
        exit(-1);
    }
    else if (m_rtr==1)
    {
        // ici j'aurais mis mon change gamestate, etc...
    }
    gMutex.lock();
    text.setString(L"Game is loading...");
    text.setColor(sf::Color::White);
    v2u = game->screen->getSize();
    ld_bar.setPosition((v2u.x/2)-75,(v2u.y/2)-75);
    text.setPosition((v2u.x/2)-105,(v2u.y/2)-155);
    if(m<=7)
        m++;
    else if(m>7)
        m=0;

    tm = clock.getElapsedTime();
    if(tm.asMilliseconds()>1)
    {
        ld_bar.setTextureRect(sf::IntRect(m*102,0,102,102));
        clock.restart();
    }
    gMutex.unlock();
}
void CLoad::Draw(CGameEngine* game)
{
    game->screen->draw(ld_bar);
    game->screen->draw(text);
    game->screen->display();
    game->screen->clear();
}

//
//  CGameStart.h
//  SFML Gamestates
//
//  Created by Pierre van Houtryve on 6/02/14.
//  Copyright (c) 2014 Pierre van Houtryve. All rights reserved.
//

#ifndef __SFML_Gamestates__CGameStart__
#define __SFML_Gamestates__CGameStart__

#include <iostream>
#include "/Users/pierre/Documents/Mako GUI/Tests/SFML Gamestates/tMap.h"
#include "SFML/Graphics.hpp"
#include "gameengine.h"
#include "gamestate.h"
#include "ResourcePath.hpp"

class CLoad : public CGameState {
   
public:
   
    void Init();
    void Cleanup();
   
    void Pause();
    void Resume();
   
    void HandleEvents(CGameEngine* game);
    void Update(CGameEngine* game);
    void Draw(CGameEngine* game);







private:
   
    int m_rtr =404;
    sf::Mutex gMutex;
    sf::Texture ld_bar_txt;
    sf::Sprite ld_bar;
    sf::Clock clock;
    sf::Time tm;
    sf::Event Event;
    sf::Vector2u v2u;
    int m = 0;
    sf::Text text;
    sf::Font font;
   

   
   
   
public:
   
    void loadFiles ()
    {
        if(!(ld_bar_txt.loadFromFile(resourcePath()+"LC_LOAD.png")) || !(font.loadFromFile(resourcePath() + "mini_pixel-7.ttf")))
        {
            gMutex.lock();
            m_rtr=-1;
            cout << " An error occured " << endl;
            gMutex.unlock();
           
        }
        else
        {
            gMutex.lock();
            m_rtr=1;
            cout << "Game ressources succesfully loaded !" << endl;
            gMutex.unlock();
        }
       
    }
    sf::Thread thread;

};

#endif /* defined(__SFML_Gamestates__CGameStart__) */
 




Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les threads me rendent fou !
« Réponse #4 le: Février 13, 2014, 07:57:50 am »
Voici l'exemple du tutoriel :

class MyClass
{
public:

    void func()
    {
    }
};

MyClass object;
sf::Thread thread(&MyClass::func, &object);

Est-ce vraiment si compliqué de faire un copier-coller et de changer les noms de fonction/variables par les tiens ? ::)

Comme tu le vois, ici le but est de passer l'adresse de la fonction, pas de l'appeler comme toi tu le fais.
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Les threads me rendent fou !
« Réponse #5 le: Février 13, 2014, 04:04:12 pm »
C'est bon, je l'ai fait, voici une autre erreur maintenant :(
http://prntscr.com/2s3o51

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les threads me rendent fou !
« Réponse #6 le: Février 13, 2014, 04:14:48 pm »
Il semblerait que tu aies défini des variables globales dans un en-tête, sans la bonne syntaxe. Je ne peux pas t'en dire plus sans voir ton code.

N'hésite pas à consolider tes bases en C++ avant d'attaquer les trucs compliqués du genre multimédia, threads, etc... ;)
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Les threads me rendent fou !
« Réponse #7 le: Février 13, 2014, 04:37:12 pm »
Cela vient du CLoad Object et du sf::Thread thread1....
Je les mets ou alors ? :(
Et aussi, comment acquérir des bases en C++ comme les tiennes ? Tutos ? :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les threads me rendent fou !
« Réponse #8 le: Février 13, 2014, 04:41:23 pm »
Tu les mets où tu veux, mais avec la bonne syntaxe. Si ce sont des variables globales, il faut les déclarer avec le mot-clé "extern" dans l'en-tête, et les définir dans un .cpp (bref, Google "C++ global variables" pour plus de détails).

Je te conseille fortement un bon livre. Les infos glannées à droite à gauche sur le net c'est bien pour consolider ses acquis et apprendre des techniques plus avancées, mais pour les bases il faut absolument un bon livre.
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Les threads me rendent fou !
« Réponse #9 le: Février 13, 2014, 04:42:08 pm »
J'ai appris avec le site du zéro, Je connais tres bien le 2er partie du tuto et le C un peu moins

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Les threads me rendent fou !
« Réponse #10 le: Février 13, 2014, 04:55:15 pm »
PS: J'ai également utilisé StackOverflow et Cplusplus

BREF. ici j'ai un autre soucis relatif aux thread, ma variable n'est pas modifiée.

loading.h
//
//  CGameStart.h
//  SFML Gamestates
//
//  Created by Pierre van Houtryve on 6/02/14.
//  Copyright (c) 2014 Pierre van Houtryve. All rights reserved.
//

#ifndef __SFML_Gamestates__CGameStart__
#define __SFML_Gamestates__CGameStart__

#include <iostream>
#include "/Users/pierre/Documents/Mako GUI/Tests/SFML Gamestates/tMap.h"
#include "SFML/Graphics.hpp"
#include "gameengine.h"
#include "gamestate.h"
#include "ResourcePath.hpp"

class CLoad : public CGameState {
   
public:
   
    void Init();
    void Cleanup();
   
    void Pause();
    void Resume();
   
    void HandleEvents(CGameEngine* game);
    void Update(CGameEngine* game);
    void Draw(CGameEngine* game);







private:
   
    int m_rtr =404;
    sf::Mutex gMutex;
    sf::Texture ld_bar_txt;
    sf::Sprite ld_bar;
    sf::Clock clock;
    sf::Time tm;
    sf::Event Event;
    sf::Vector2u v2u;
    int m = 0;
    sf::Text text;
    sf::Font font;
    bool first = false;
   

   
   
   
public:
   
    void loadFiles ()
    {
        if(!(ld_bar_txt.loadFromFile(resourcePath()+"LC_LOAD.png")) || !(font.loadFromFile(resourcePath() + "mini_pixel-7.ttf")))
        {
        gMutex.lock();
            m_rtr=-1;
            cout << " An error occured " << endl;
        gMutex.unlock();
           
        }
        else
        {
            gMutex.lock();
            m_rtr=1;
            cout << "Game ressources succesfully loaded !" << endl;
           gMutex.unlock();
        }
       
    }

};



#endif /* defined(__SFML_Gamestates__CGameStart__) */
 

//
//  loading.cpp
//  Game
//
//  Created by Pierre van Houtryve on 9/02/14.
//  Copyright (c) 2014 Pierre van Houtryve. All rights reserved.
//

#include "loading.h"
#include <stdio.h>
#include "ResourcePath.hpp"
#include "SFML/System.hpp"


 /*
 sf::Texture ld_bar_txt;
 sf::Sprite ld_bar;
 sf::Clock clock;
 sf::Time tm;
 */


CLoad object;
sf::Thread thread1(&CLoad::loadFiles,&object);
void CLoad::Init()
{
        ld_bar_txt.setSmooth(1);
        ld_bar.setTextureRect(sf::IntRect(102,102,102,102));
        text.setFont(font);
        text.setCharacterSize(35);
        ld_bar.setTexture(ld_bar_txt);
    clock.restart();;

}
void CLoad::Cleanup()
{
}
void CLoad::Pause()
{
   
}
void CLoad::Resume()
{
   
}

void CLoad::HandleEvents(CGameEngine* game)
{
    while(game->screen->pollEvent(Event))
    {
        if(Event.type == sf::Event::Closed)
        {
            game->screen->close();
            this->Cleanup();
            game->Quit();
            exit(0);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
        {
            game->screen->close();
            this->Cleanup();
            game->Quit();
            exit(0);
        }
    }

}
void CLoad::Update(CGameEngine* game)
{
    if(!first)
    {
        thread1.launch();
        first=true;
        cout << "Thread launch" << endl;
    }
    if(m_rtr == 404)
    {
        cout << "0";
        // Je ne fais rien car ma fonction n'as pas encore renvoyée son résultat
    }
    else if(m_rtr!=1)
    {
        // Résultat négatif
        cout << "Cannot load ressources " << endl;
        exit(-1);
    }
    else if (m_rtr==1)
    {
        cout << "Finished" << endl;
        // ici j'aurais mis mon change gamestate, etc...
    }
    text.setString(L"Game is loading...");
    text.setColor(sf::Color::White);
    v2u = game->screen->getSize();
    ld_bar.setPosition((v2u.x/2)-75,(v2u.y/2)-75);
    text.setPosition((v2u.x/2)-105,(v2u.y/2)-155);
    if(m<=7)
        m++;
    else if(m>7)
        m=0;

    tm = clock.getElapsedTime();
    if(tm.asMilliseconds()>1)
    {
        ld_bar.setTextureRect(sf::IntRect(m*102,0,102,102));
        clock.restart();
    }
}
void CLoad::Draw(CGameEngine* game)
{
    if (m_rtr==1)
{
    ld_bar.setTextureRect(sf::IntRect(1,1,102,816));
    game->screen->draw(ld_bar);
    cout << "2";
}
    else
{
    game->screen->draw(ld_bar);
    game->screen->draw(text);
    cout << "1";
}
    game->screen->display();
    game->screen->clear();
}


Et mon 'output' console

CGameEngine Init
Thread launch
01Game ressources succesfully loaded !
0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101


Merci :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les threads me rendent fou !
« Réponse #11 le: Février 13, 2014, 05:00:31 pm »
Citer
J'ai appris avec le site du zéro, Je connais tres bien le 2er partie du tuto et le C un peu moins
Déclarer une variable globale, c'est ultra-basique. Ca devrait être expliqué au début de n'importe quel tutoriel / livre potable. Et puis il faut aussi apprendre à décoder les erreurs, se dire "tiens là on dirait que c'est mes variables globales qui passent mal, je vais regarder sur internet si je les déclare bien".

Bref, au lieu d'avoir des envies de suicide, prends le temps de chercher et de lire la documentation disponible.

Citer
ici j'ai un autre soucis relatif aux thread, ma variable n'est pas modifiée.
Tu devrais faire mumuse avec les threads dans un code simple à part, et intégrer tout ça à ton jeu quand tu auras bien assimilé le truc. En tout cas après avoir parcouru rapidement ton code je n'ai pas vu d'erreur qui sautait aux yeux ; mais ça sera le cas si tu as un code minimal.
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Les threads me rendent fou !
« Réponse #12 le: Février 13, 2014, 05:54:35 pm »
Maintenant le problème vient du passage par référence qui ne fonctionne pas.

loading.cpp
//
//  loading.cpp
//  Game
//
//  Created by Pierre van Houtryve on 9/02/14.
//  Copyright (c) 2014 Pierre van Houtryve. All rights reserved.
//

#include "loading.h"
#include <stdio.h>
#include "ResourcePath.hpp"
#include "SFML/System.hpp"


 /*
 sf::Texture ld_bar_txt;
 sf::Sprite ld_bar;
 sf::Clock clock;
 sf::Time tm;
 */

int rtr_val=404;
CLoad val;
//CLoad object;
sf::Texture ld_bar_txt;
sf::Font font;
void loadFiles (int &rtr)
{
    if(ld_bar_txt.loadFromFile(resourcePath()+"LC_LOAD.png") || font.loadFromFile(resourcePath() + "mini_pixel-7.ttf"))
    {
        rtr = 1;
        cout << "Game ressources succesfully loaded !" << endl;
       
    }
    else
    {
        rtr = -1;
        cout << " An error occured " << endl;
    }
   
}
sf::Thread thread1(&loadFiles,rtr_val);
void CLoad::Init()
{
        ld_bar_txt.setSmooth(1);
        ld_bar.setTextureRect(sf::IntRect(102,102,102,102));
        text.setFont(font);
        text.setCharacterSize(35);
        ld_bar.setTexture(ld_bar_txt);
    clock.restart();;

}
void CLoad::Cleanup()
{
}
void CLoad::Pause()
{
   
}
void CLoad::Resume()
{
   
}

void CLoad::HandleEvents(CGameEngine* game)
{
    while(game->screen->pollEvent(Event))
    {
        if(Event.type == sf::Event::Closed)
        {
            game->screen->close();
            this->Cleanup();
            game->Quit();
            exit(0);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
        {
            game->screen->close();
            this->Cleanup();
            game->Quit();
            exit(0);
        }
    }

}
void CLoad::Update(CGameEngine* game)
{
    if(!first)
    {
        thread1.launch();
        first=true;
        cout << "Thread launch" << endl;
    }
    if(rtr_val== 404)
    {
        cout << "0";
        // Je ne fais rien car ma fonction n'as pas encore renvoyée son résultat
    }
    else if(rtr_val==-1)
    {
        // Résultat négatif
        cout << "Cannot load ressources " << endl;
        exit(-1);
    }
    else if (rtr_val==1)
    {
        cout << "Finished" << endl;
        thread1.terminate();
       
        // ici j'aurais mis mon change gamestate, etc...
    }
    text.setString(L"Game is loading...");
    text.setColor(sf::Color::White);
    v2u = game->screen->getSize();
    ld_bar.setPosition((v2u.x/2)-75,(v2u.y/2)-75);
    text.setPosition((v2u.x/2)-105,(v2u.y/2)-155);
    if(m<=7)
        m++;
    else if(m>7)
        m=0;

    tm = clock.getElapsedTime();
    if(tm.asMilliseconds()>1)
    {
        ld_bar.setTextureRect(sf::IntRect(m*102,0,102,102));
        clock.restart();
    }
}
void CLoad::Draw(CGameEngine* game)
{
    if (rtr_val==1)
{
    ld_bar.setTextureRect(sf::IntRect(1,1,102,816));
    game->screen->draw(ld_bar);
    cout << "2";
}
    else
{
    game->screen->draw(ld_bar);
    game->screen->draw(text);
    cout << "1";
}
    game->screen->display();
    game->screen->clear();
}


loading.h

//
//  CGameStart.h
//  SFML Gamestates
//
//  Created by Pierre van Houtryve on 6/02/14.
//  Copyright (c) 2014 Pierre van Houtryve. All rights reserved.
//

#ifndef __SFML_Gamestates__CGameStart__
#define __SFML_Gamestates__CGameStart__

#include <iostream>
#include "/Users/pierre/Documents/Mako GUI/Tests/SFML Gamestates/tMap.h"
#include "SFML/Graphics.hpp"
#include "gameengine.h"
#include "gamestate.h"
#include "ResourcePath.hpp"

class CLoad : public CGameState {
   
public:
    void Init();
    void Cleanup();
   
    void Pause();
    void Resume();
   
   
    void HandleEvents(CGameEngine* game);
    void Update(CGameEngine* game);
    void Draw(CGameEngine* game);








private:
   
    sf::Sprite ld_bar;
    sf::Clock clock;
    sf::Time tm;
    sf::Event Event;
    sf::Vector2u v2u;
    int m = 0;
    sf::Text text;
    bool first = false;
   

   
   /*
   
public:
   
    void loadFiles (int rtr=404)
    {
        if(!(ld_bar_txt.loadFromFile(resourcePath()+"LC_LOAD.png")) || !(font.loadFromFile(resourcePath() + "mini_pixel-7.ttf")))
        {
            rtr = -1;
            cout << " An error occured " << endl;
           
        }
        else
        {
            rtr = 1;
            cout << "Game ressources succesfully loaded !" << endl;
        }
       
    }
*/

};



#endif /* defined(__SFML_Gamestates__CGameStart__) */
 



Merci, j'espère y arriver un jour... C'est mon seul obstacle :(

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Les threads me rendent fou !
« Réponse #13 le: Février 13, 2014, 10:57:52 pm »
Ca ne marche pas car sf::Thread va copier le paramètre en interne. Passe plutôt un pointeur.
Laurent Gomila - SFML developer