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 - MyPix

Pages: « Précédente 1 [2]
16
Général / SFML, Threads C++11, et LLVM
« le: Février 13, 2014, 09:39:27 pm »
Bonjour,
CE SUJET FAIT SUITE A MON SUJET SUR LES THREADS DE SFML, J'AI DECIDE D'UTILISER CEUX DE C++11

Bref, voici mon problème :
http://prntscr.com/2s71js

Je ne sais pas d'ou vient cette erreur... :/

//
//  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"
#include <thread>
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;
    std::thread *loadRsc;

 
};



#endif /* defined(__SFML_Gamestates__CGameStart__) */
 


.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"
#include <thread>

 /*
 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;
    }

}

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);
    loadRsc = new std::thread(&loadFiles,rtr_val);

    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)
    {
        first=true;
        if(loadRsc->joinable())
            loadRsc->join();
        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;
        // 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();
}



Celui qui résous mon problème, je lui fait des bisous partout <3
**Le code source complet est en piece jointe**

Bref, j'ai essayé tout ces derniers jour, j'ai bossé au moins 10H pour tenter de résoudre ces bugs...
Si quelqu'un à une autre solution pour un chargement des ressources multi-threadé, je suis preneur !

Merci.

17
Système / 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 :'(

18
Général / Spritesheet animation & Fonctions
« le: Février 05, 2014, 05:08:32 pm »
Bonjour,

je souhaiterais utiliser des fonctions et des objets afin de 'centraliser' les affichages graphiques de mon programme, imaginons :
Game game;
game.pause; -> Affiche le menu de pause avec une animation de chargement, etc...

Mais le problème, comment gérer cela dans la fenêtre actuelle.
Je dois mettre quoi ? L'entré de game.pause serait quoi un game.pause(sf::RenderWindow) ou un Window ?

Merci

19
Général / Génération procédurale
« le: Janvier 31, 2014, 09:55:51 pm »
Bonjour,

je projette de commencer à créer des jeux C++ via SFML 2.1
Mais je me demandais, n'ayant trouvé aucun tuto sur le Net, comment procéder à une génération procédurale du contenu. Je fait comment ?

Comment appliquer un Algorithme à SFML ? Comment l'utiliser via SFML et Box 2D ?

Et petit point important, j'ai 14 ans et connais le C++ (C et Java occasionnellement)
Ceci présente un avantage et un inconvénient :
+> J'ai une facilitée à comprendre l'informatique ce qui m'ouvre la voie vers des métiers poussé dans ce domaine
-> Je ne connais pas l'Algèbre, ne voyant pas cela à l'école

Donc si vous me fournissez un algorithme EN ALGEBRE (Car je comprend bien un algorithme appliqué en C++ sauf si il n'est pas du tout documenté et que les noms de variable sont manquants)
, expliquez ou passer un tuto pour savoir comment le comprendre :)

Voila, Merci d'avance de vos réponses ! :)

Pages: « Précédente 1 [2]