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

Auteur Sujet: Instabilité du programme (Crash random)  (Lu 1296 fois)

0 Membres et 1 Invité sur ce sujet

Platon

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Instabilité du programme (Crash random)
« le: Février 07, 2015, 10:38:08 pm »
Amis du soir, bonsoir !

Tout est dans le titre, je ne comprends pas pourquoi mon programme crash de façon aléatoire...

J'ai simplifié à l’extrême maximum pour trouver la faille mais le problème persiste.

Les symptômes : Tout peut bien marcher sans aucun soucis pendant 1/2 heure ou bien alors crash au bout de 2 minutes ou bien même au lancement.

Le code ( Méga simplifié, il est quasiment vide ) :

#include <SFML/Graphics.hpp>
#include <SFML\Network.hpp>
#include <iostream>
#include <sstream>
#include <string>
#include "TileMap.h"
#include "Connection.h"

sf::RectangleShape rect1, rect2;

sf::Vector2f prevPosition, p2Position;

bool update = false;

int main()
{

        rect1.setSize(sf::Vector2f(20, 20));
        rect2.setSize(sf::Vector2f(20, 20));

        rect1.setFillColor(sf::Color::Red);
        rect2.setFillColor(sf::Color::Blue);

        connection();

/*      sf::IpAddress ip = sf::IpAddress::getLocalAddress();
        sf::TcpSocket socket;
        char mode;

        std::cout << "Serveur : s | client : c" << std::endl;
        cin >> mode;

        if (mode == 's'){
                sf::TcpListener listener;
                listener.listen(2000);
                listener.accept(socket);
        }
        else{
                socket.connect(ip, 2000);
                mode = 'r';
        }*/


        sf::RenderWindow windows(sf::VideoMode(800, 600, 32), "Packets");

        std::cin.ignore();

        decoBdd(ligne);

        socket.setBlocking(false);

        windows.setVerticalSyncEnabled(true);

       

        while (windows.isOpen()){

                sf::Event event;

                sf::Packet packet;

                while (windows.pollEvent(event)){
                        if (event.type == sf::Event::Closed || event.key.code == sf::Keyboard::Escape)
                                windows.close();
                        else if (event.type == sf::Event::GainedFocus)
                                update = true;
                        else if (event.type == sf::Event::LostFocus)
                                update = false;

                }


                if (update){

                        prevPosition = rect1.getPosition();

                        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
                                rect1.move(1, 0.0f);
                        else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
                                rect1.move(-1, 0.0f);
                        else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
                                rect1.move(0.0f, -1);
                        else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
                                rect1.move(0.0f, 1);

                        if (prevPosition != rect1.getPosition()){
                                if (packet << rect1.getPosition().x << rect1.getPosition().y){
                                        std::cout << "Envoyé :" << rect1.getPosition().x << "  |  " << rect1.getPosition().y << std::endl;
                                        socket.send(packet);
                                }
                               
                        }
                }

                socket.receive(packet);
                if (packet >> p2Position.x >> p2Position.y){
                        rect2.setPosition(p2Position);
                        std::cout << "Reçu :" << p2Position.x << "  |  " << p2Position.y << std::endl;
                }
       

        windows.draw(rect1);
        windows.draw(rect2);

        windows.display();
        windows.clear();

}

return 0;

}


Merci de votre attention !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Instabilité du programme (Crash random)
« Réponse #1 le: Février 08, 2015, 09:39:23 am »
Premièrement, utilise ton debugger, il est bien plus utile pour trouver un bug qu'un forum ;)

Deuxièmement, ton code n'est pas complet, on ne peux pas en faire grand chose de toute façon.
Laurent Gomila - SFML developer

 

anything