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.


Messages - Archimed78

Pages: [1] 2 3 Suivante »
1
Réseau / Re : Connect TcpSocket
« le: Septembre 15, 2016, 09:32:54 pm »
Personne n'as d'idée ou la communauté SFML est parti sur d'autre horizon ? :(

2
Réseau / Connect TcpSocket
« le: Septembre 10, 2016, 07:22:32 pm »
Bonjour,
merci par avance de votre aide.
J'ai un petit projet de jeu en réseau mais j'ai quelque difficulté pour dans la communication client/serveur.
J'aimerai réussir a faire le code le plus propre possible mais je n'arrive pas a me connecter proprement : c'est à dire que quand je fais mon connect sur le TcpSocket vers mon serveur, sur le serveur je vois bien que je suis connecté mais par contre coté client mon socket garde toujours le status "NotReady".
Il y a surement un concept que j'ai mal compris...

Je vous fournis les codes simplifié :

ManagerNetwork.cpp (coté client)
#include "ManagerNetwork.h"

#define SERVER_IP "127.0.0.1"
#define SERVER_PORT 7777

ManagerNetwork::ManagerNetwork() : Manager()
{
        std::cout << "Initialisation du ManagerNetwork" << std::endl;
        m_socket = new sf::TcpSocket();
        m_socket->setBlocking(false);
        tryConnect();
}


ManagerNetwork::~ManagerNetwork()
{
        std::cout << "Destruction du ManagerNetwork" << std::endl;
}

void ManagerNetwork::tryConnect()
{
        m_socket->disconnect();
        std::cout << "Tentative de connexion :" << SERVER_IP << ":" << SERVER_PORT << std::endl;
        sf::Socket::Status status_connect = m_socket->connect(sf::IpAddress(SERVER_IP), SERVER_PORT);

        bool quit = false;
        while (quit == false)
        {
                switch (status_connect)
                {
                case sf::Socket::Done:
                {
                        std::cout << "Connexion OK" << std::endl;
                        quit = true;
                }
                break;

                case sf::Socket::NotReady:
                        std::cout << "Not ready" << std::endl;
                        break;

                default:
                        std::cout << "Echec connect" << std::endl;
                        break;
                }
        }
}
 

main.cpp (coté serveur)
#include <iostream>
#include <SFML\Network.hpp>
#include <stdlib.h>

#define NETWORK_PORT 7777

int main()
{
        sf::TcpListener listener;
        listener.listen(NETWORK_PORT);

        sf::SocketSelector selector;
        selector.add(listener);

        std::vector<sf::Socket*> sockets;

        sockets.push_back(&listener);

        std::cout << "Lancement de l'ecoute serveur sur le port " << listener.getLocalPort() << std::endl;

        bool exit = false;
        while (exit == false)
        {
                if (selector.wait(sf::seconds(1)))
                {
                        for (unsigned int i = 0; i < sockets.size(); i++)
                        {
                                if (selector.isReady(*sockets.at(i)))
                                {
                                        if (sockets.at(i) == &listener)
                                        {
                                                sf::TcpSocket *client = new sf::TcpSocket();
                                                if (listener.accept(*client) == sf::Socket::Done)
                                                {
                                                        std::cout << "Nouvelle connexion client (" << client->getRemoteAddress().toString() << ")" << std::endl;
                                                        sockets.push_back(client);
                                                        selector.add(*client);
                                                }
                                                else
                                                {
                                                        std::cout << "Problème de connexion d'un client (" << client->getRemoteAddress().toString() << ")" << std::endl;
                                                }

                                        }
                                        else
                                        {
                                                sf::Packet packet;
                                                sf::TcpSocket* socket = static_cast<sf::TcpSocket*>(sockets.at(i));
                                                switch (socket->receive(packet))
                                                {
                                                        case sf::Socket::Done:
                                                                std::cout << "Recu packet : " << packet.getDataSize() << std::endl;
                                                                break;

                                                        case sf::Socket::Error:
                                                                std::cout << "Error" << std::endl;
                                                                break;

                                                        case sf::Socket::Disconnected:
                                                                std::cout << "Disconnected" << std::endl;
                                                                selector.remove(*socket);
                                                                delete socket;
                                                                break;
                                                }
                                        }
                                }
                        }
                }
        }
}

j'espère que vous pourrez m'aider.
Merci

3
Graphique / Re : [SFML2] Problème chargement de texture
« le: Février 14, 2013, 09:28:02 am »
Après plusieurs test, c'est au niveau de la méthode loadFromImage() que sa se passe.

Si met :
texture->loadFromImage(*img, sf::IntRect(0, 0, 200, 200));
sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");
Sa fonctionne a merveille.

Sinon :
sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");
texture->loadFromImage(*img, sf::IntRect(0, 0, 200, 200));
Sa ne fonctionne plus (je voit bien la taille de l'image mais la texture est toute blanche).

Et non pas au chargement de l'image comme je l’avais dit précédemment.

Voila pour la petite histoire, en tout cas c'est résolu, merci beaucoup.

4
Graphique / Re : [SFML2] Problème chargement de texture
« le: Février 13, 2013, 08:28:20 pm »
Sa n'as pas de rapport avec les drivers par ce que j'ai testé sur 3 PC différents (AMD Radeon HD 7800 series, une N560GTX, et un chipset intégré intel), je pense que sa viens de la version SFML que j'avais utilisé comme pour compilé, je me souviens pas exactement laquelle j'avais prise, vue que je navigue régulièrement entre ces 3 PC justement) :P

5
Graphique / Re : [SFML2] Problème chargement de texture
« le: Février 13, 2013, 07:12:27 pm »
La RC, oui. Je suis sous Windows7  ;D (j'ai compilée les sources pour la nouvelle version de mingw fournit avec le nouveau c::b)

6
Graphique / Re : [SFML2] Problème chargement de texture
« le: Février 13, 2013, 12:35:07 pm »
Je viens de solutionné mon problème...

Le problème viens du fait que je déclarais le sf::RenderWindow après avoir chargé le fichier Image, rien a voir avec mon code en faite. Il y a une part d'ironie dans l'histoire  ;D

Merci pour ton aide Laurent, cordialement.

7
Graphique / Re : [SFML2] Problème chargement de texture
« le: Février 13, 2013, 12:30:31 pm »
Non, je ne rentre pas dans le cas.

Par contre je n'arrive vraiment pas a debug, en faite j'ai une texture toute blanche de la bonne taille a la place de ce qui est sensé être affiché.

Et le draw() affiche bien la texture blanche sans bronché... je ne comprend pas.

Cordialement.

8
Graphique / Re : [SFML2] Problème chargement de texture
« le: Février 12, 2013, 04:02:15 pm »
Merci Laurent, effectivement c’était stupide  ;D

Cependant, j'ai toujours le même problème, le sprite ne s'affiche pas.

Voici le code corrigé :
#include <SFML/Graphics.hpp>
#include <iostream>

std::vector<sf::Texture*>* decoupageTilesetEnTexture(sf::Image *img);

int main()
{
    sf::Image img;
    if (img.loadFromFile("tileset.jpg"))
    {
        std::vector<sf::Texture*> *listeTexture = decoupageTilesetEnTexture(&img);
        std::cout << "nbDeTexture = " << listeTexture->size() << std::endl;

        sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");

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

            window.clear();
            sf::Sprite* sprite = new sf::Sprite(*(listeTexture->at(0)));
            window.draw(*sprite);
            window.display();
            delete sprite;
        }
    }

    return 0;
}

std::vector<sf::Texture*>* decoupageTilesetEnTexture(sf::Image *img)
{
    unsigned int nb_tour_x = img->getSize().x/sf::Texture::getMaximumSize();
    unsigned int nb_tour_y = img->getSize().y/sf::Texture::getMaximumSize();
    unsigned int maximum_size_x;
    unsigned int maximum_size_y;
    if (sf::Texture::getMaximumSize() > img->getSize().x)
    {
        maximum_size_x = img->getSize().x;
    }
    else
    {
        maximum_size_x = sf::Texture::getMaximumSize();
    }
    if (sf::Texture::getMaximumSize() > img->getSize().y)
    {
        maximum_size_y = img->getSize().y;
    }
    else
    {
        maximum_size_y = sf::Texture::getMaximumSize();
    }
    std::vector<sf::Texture*> *listeTexture = new std::vector<sf::Texture*>();

    for (unsigned int x = 0; x<=nb_tour_x; x++)
    {
        for (unsigned int y = 0; y<=nb_tour_y; y++)
        {
            unsigned int offset_x = maximum_size_x*x;
            unsigned int offset_y = maximum_size_y*y;
            unsigned int size_x = maximum_size_x;
            unsigned int size_y = maximum_size_y;
            if ((offset_x+maximum_size_x) > img->getSize().x)
            {
                size_x = img->getSize().x-offset_x;
            }
            if ((offset_y+maximum_size_y) > img->getSize().y)
            {
                size_y = img->getSize().y-offset_y;
            }

            sf::Texture *texture = new sf::Texture();
            texture->loadFromImage(*img, sf::IntRect(offset_x, offset_y, size_x, size_y));
            listeTexture->push_back(texture);
        }
    }
    return listeTexture;
}
 

A noter que le size() me retourne un nombre cohérent.

Merci en tout cas,

Cordialement.

9
Graphique / Re : [SFML2] Problème chargement de texture
« le: Février 12, 2013, 02:42:19 pm »
J'ai tenté de faire le découpage précédemment recommandé.

Hors je n'arrive pas affiché la texture découpé... Hors j'ai bien vérifié avec un saveToFile() pour voir que je découpe correctement. Je ne vois pas ou est ma stupide erreur  ???

J'ai fais un projet au code minimal,
Voici le code :
#include <SFML/Graphics.hpp>
#include <iostream>

std::vector<sf::Texture*>* decoupageTilesetEnTexture(sf::Image *img);

int main()
{
    sf::Image img;
    if (img.loadFromFile("tileset.jpg"))
    {
        std::vector<sf::Texture*> *listeTexture = decoupageTilesetEnTexture(&img);
        std::cout << "nbDeTexture = " << listeTexture->size() << std::endl;

        sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");

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

            window.clear();
            sf::Sprite* sprite = new sf::Sprite(*(listeTexture->at(0)));
            window.draw(*sprite);
            window.display();
            delete sprite;
        }
    }

    return 0;
}

std::vector<sf::Texture*>* decoupageTilesetEnTexture(sf::Image *img)
{
    unsigned int nb_tour_x = img->getSize().x/sf::Texture::getMaximumSize();
    unsigned int nb_tour_y = img->getSize().y/sf::Texture::getMaximumSize();
    unsigned int maximum_size_x;
    unsigned int maximum_size_y;
    if (sf::Texture::getMaximumSize() > img->getSize().x)
    {
        maximum_size_x = img->getSize().x;
    }
    else
    {
        maximum_size_x = sf::Texture::getMaximumSize();
    }
    if (sf::Texture::getMaximumSize() > img->getSize().y)
    {
        maximum_size_y = img->getSize().y;
    }
    else
    {
        maximum_size_y = sf::Texture::getMaximumSize();
    }
    std::vector<sf::Texture*> *listeTexture = new std::vector<sf::Texture*>();

    //std::string var;
    for (unsigned int x = 0; x<=nb_tour_x; x++)
    {
        for (unsigned int y = 0; y<=nb_tour_y; y++)
        {
            sf::Image newImg;
            unsigned int offset_x = maximum_size_x*x;
            unsigned int offset_y = maximum_size_y*y;
            unsigned int size_x = maximum_size_x;
            unsigned int size_y = maximum_size_y;
            if ((offset_x+maximum_size_x) > img->getSize().x)
            {
                size_x = img->getSize().x-offset_x;
            }
            if ((offset_y+maximum_size_y) > img->getSize().y)
            {
                size_y = img->getSize().y-offset_y;
            }

            newImg.create(size_x, size_y, sf::Color::Blue);
            //newImg.copy(*img, 0, 0, sf::IntRect(offset_x, offset_y, offset_x+size_x, offset_y+size_y));
            //var+= "+";
            //newImg.saveToFile(var+"test.png");
            sf::Texture *texture = new sf::Texture();
            texture->loadFromImage(newImg, sf::IntRect(0,0,size_x, size_y));
            listeTexture->push_back(texture);
        }
    }
    return listeTexture;
}
 

Merci a ceux qui prendrons la peine de regardé mon code,

Cordialement.

10
Graphique / Re : [SFML2] Problème chargement de texture
« le: Février 01, 2013, 08:24:54 pm »
Merci beaucoup Laurent, et sinon, le sf::Texture::getMaximumSize() sera toujours un multiple de 32 ?

11
Graphique / Re : [SFML2] Problème chargement de texture
« le: Janvier 31, 2013, 12:29:44 pm »
Donc en gros, je doit découper ma texture en plusieurs petits morceaux pour que mon jeu puisse être utilisé sur toutes les machines ?  :-\

Comment savoir quel tailles est prise en charge par toutes les CG ?

Merci de ta réponse,

Cordialement.

12
Graphique / [SFML2] Problème chargement de texture
« le: Janvier 31, 2013, 10:33:11 am »
Bonjour,

J'ai une petit soucis au niveau du chargement d'une texture, lorsque je fais :
loadFromFile("leChemin.png");

Dans tout mon projet tout va bien, mais lorsque ce que j’essaie de charger une texture de 1280x3136 on me renvoi cette erreur dans la console :


A priori je sais lire, je me dit que il n'est pas possible de charger une texture d'une taille aussi grande, mais premièrement ce soucis arrive uniquement sur le PC de mon travail (carte graphique intégré Intel, je suppose que le problème viens de la... alors que sur mon PC de domicile, aucun problème (nVidia)) et deuxièmement en aucun cas, je n’essaie de charger une texture de 2048x4092 comme le message l'indique.

Voila, je vous remercie d'avance pour votre aide.

Cordialement.

13
Graphique / Re : [SFML2] Optimisation déplacement
« le: Novembre 02, 2012, 02:05:49 pm »
Super, je vous remercie pour tout, avec ceci je n'aurais plus de soucis.

Merci beaucoup a tous pour m'avoir aidé et du temps passé sur mon cas  ;D.

Cordialement.

14
Graphique / Re : [SFML2] Optimisation déplacement
« le: Novembre 02, 2012, 03:28:08 am »
J'ai réussi a tout faire comme il faut (merci Laurent), sauf que la classe sf::VertexArray n'est pas composé de la méthode "move".

Dois-je a chaque fois supprimer tout le vertex pour le refaire ensuite avec un offset en x et y pour faire un déplacement ?

Je vous remercie chaleureusement de votre aide,

Cordialement.

15
Graphique / Re : [SFML2] Optimisation déplacement
« le: Octobre 31, 2012, 11:42:00 pm »
Merci, je comprend mieux ! mais dans mon cas aurai-tu un petit code explicatif pour que puisse faire des tests, par ce que je ne trouve rien pour ajouter mes sprites dans le vertex array... ou bien j'ai encore rien compris  ;D Ce qui est fort probable.

Merci pour le temps que tu m'accorde en tout cas,

Cordialement.

Pages: [1] 2 3 Suivante »