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

Auteur Sujet: Crash lors de l’exécution de mon programme  (Lu 4436 fois)

0 Membres et 1 Invité sur ce sujet

0100100001100001

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
    • E-mail
Crash lors de l’exécution de mon programme
« le: Octobre 15, 2017, 09:24:32 pm »
Bonsoir,

J'ai un problème avec mon programme : il crashe lors de l'exécution. Ou plutôt lorsque je lance la partie graphique. Le problème vient de ma manette Xbox 360 branchée sur l'ordinateur. J'ai mis un bout de code pour pouvoir y interagir mais en la branchant, la partie graphique plante et mon programme avec. J'enlève donc TOUS les bouts de codes interagissant avec la manette
(click to show/hide)
  La raison : la manette était toujours branchée sur mon ordinateur.

Savez-vous comment régler le problème ? Merci de vos réponses

Djesteur

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re: Crash lors de l’exécution de mon programme
« Réponse #1 le: Octobre 16, 2017, 01:05:26 pm »
Sans ton code, on ne pourra rien faire pour toi   8)

0100100001100001

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
    • E-mail
Re: Crash lors de l’exécution de mon programme
« Réponse #2 le: Octobre 16, 2017, 07:00:46 pm »
Je ne pense pas que le code entre en jeu puisque même en supprimant, ça ne marche pas. Si tu veux, voici mon code :


#include "C:\Users\NIKO\Downloads\SFML-2.4.2-windows-gcc-4.9.2-tdm-32-bit(2)\SFML-2.4.2\include\SFML\Graphics.hpp"
#include "C:\Users\NIKO\Downloads\SFML-2.4.2-windows-gcc-4.9.2-tdm-32-bit(2)\SFML-2.4.2\include\SFML\audio.hpp"
#include "C:\Users\NIKO\Downloads\SFML-2.4.2-windows-gcc-4.9.2-tdm-32-bit(2)\SFML-2.4.2\include\SFML\OpenGL.hpp"
#include "C:\Users\NIKO\Downloads\SFML-2.4.2-windows-gcc-4.9.2-tdm-32-bit(2)\SFML-2.4.2\include\SFML\Graphics\Font.hpp"
#include "C:\Users\NIKO\Downloads\SFML-2.4.2-windows-gcc-4.9.2-tdm-32-bit(2)\SFML-2.4.2\include\SFML\Window\joystick.hpp"
#include "Collision.h"
#include "Personnage.h"
#include "pause_programme.h"
#include "menu.h"
#include "maisonSimple.h"
//#include <box2D.h>
#include <fstream>

using namespace sf;
using namespace std;
namespace touche = Kollision;





sf::RenderWindow app;
sf::RenderWindow ast;

CircleShape triangle(80, 3);
ConvexShape convex;
ConvexShape convex2;
CircleShape forme(100.f);
RectangleShape rect;
Texture perso;
Texture ennemieSimple;
Texture ennemieSimpleMort;
Texture barDEndurance;
Texture maison1;
Sprite sprite_perso;
Sprite sprite_ennemiesimple;
Sprite sprite_barDEndurance;
Sprite sprite_maison1;
Music musique1;
Font policeEcriture;
Text afficheS("dddd", policeEcriture);
struct AABB {
    int x;
    int y;
    int h;
    int l;
    };
enum direction{Down, Left, Right, Up};
enum directionEnnemie{eDown, eLeft, eRight, eUp};
enum directionEnnemieMort{eDownM, eLeftM, eRightM, eUpM};
/*enum joystik{Count = 8, ButtonCount = 32, AxisCount = 8};
enum Axis {X, Y, Z, R, U, V, PovX, PovY};*/

Vector2i animation(1, Down);
Vector2i animationEnnemieSimple(1, Down);
Vector2i animationEnnemieSimpleMort(1, Down);
int m_i = 100;
bool updateFPS = true;
int speed = 3;
void gestionClavier();
void gestionSourie();
int mainTestGraphismeDEUXPOINTAsteroide();
int blocksize = 32;
int bl0cksiz3 = 48;
Vector2i position;
View camera;
int screenwiz = 1000;
int screenheigt = 800;
bool continueStopMusique1 = false;
bool fullscreen = true;
double durationMusique1;
bool collision(AABB box1, AABB box2){

   if((box2.x >= box1.x + box1.l)      // trop à droite

    || (box2.x + box2.l <= box1.x) // trop à gauche

    || (box2.y >= box1.y + box1.h) // trop en bas

    || (box2.y + box2.h <= box1.y)) // trop en haut


          return false;



   else{
          return true;
        }
}

Personnage hero, ennemie;

double height2, width2;;

int dfgdfgh()
{
    app.create(VideoMode(1000, 800), "Ça Fonctionne !", Style::None);
    app.setPosition(Vector2i(500, 200));
    app.setFramerateLimit(25);


    Menu menu(app.getPosition().x, app.getPosition().y);

    forme.setFillColor(sf::Color(22,152,200));
    forme.setPosition(100, 10);
    forme.setRadius(50);
    forme.setOutlineColor(Color::Red);
    forme.setOutlineThickness(2);



    triangle.setFillColor(Color::Blue);
    triangle.setPosition(500, 40);
    triangle.setOutlineColor(Color::Green);
    triangle.setOutlineThickness(2);


    convex.setPointCount(5);
    convex.setPoint(0, Vector2f(0, 0));
    convex.setPoint(1, Vector2f(200, 10));
    convex.setPoint(2, Vector2f(400, 40));
    convex.setPoint(3, Vector2f(200, 100));
    convex.setPoint(4, Vector2f(0, 0));
    convex.setPosition(320, 400);
    convex.setFillColor(Color(80, 20, 81));
    convex.setOutlineColor(Color(200, 200, 200));
    convex.setOutlineThickness(3);
    convex.setPosition(700, 300);

    convex2.setPointCount(6);
    convex2.setPoint(0, Vector2f(0,0));
    convex2.setPoint(1, Vector2f(200,0));
    convex2.setPoint(2, Vector2f(200,300));
    convex2.setPoint(3, Vector2f(100,300));
    convex2.setPoint(4, Vector2f(100,100));
    convex2.setPoint(5, Vector2f(0,0));
    convex2.setPosition(600,600);
    convex2.setFillColor(Color(10,10,80));
    convex2.setOutlineColor(Color(30,30, 100));
    convex2.setOutlineThickness(5);

    rect.setFillColor(Color::Blue);
    rect.setPosition(48, 20);
    rect.setOutlineColor(Color(123, 0, 55));
    rect.setOutlineThickness(8);
    rect.setSize(Vector2f(18, 25));


    app.setMouseCursorVisible(false);




   touche::CreateTextureAndBitmask(ennemieSimple, "vEnnemie.png");
   touche::CreateTextureAndBitmask(perso, "basePerso.png");
   touche::CreateTextureAndBitmask(ennemieSimpleMort, "eeennemieMort.png");
   touche::CreateTextureAndBitmask(maison1, "frhfghfghfghfgh.png");


    if(!perso.loadFromFile("basePerso.png")){
        cout<<"Erreur !\n";
        pause_programme();
        return EXIT_FAILURE;
    }

    /*if(!ennemieSimple.loadFromFile("vEnnemie.png")){
        cout<<"Erreur2";
        pause_programme();
        return EXIT_FAILURE;
    }*/


    if(!ennemieSimpleMort.loadFromFile("eeennemieMort.png")){
        cout<<"Erreur 3\n";
        pause_programme();
        return EXIT_FAILURE;
    }


    ennemieSimple.setSmooth(true);
    perso.setSmooth(true);
    maison1.setSmooth(true);
    sprite_perso.setTexture(perso);
    sprite_maison1.setTexture(maison1);
    sprite_ennemiesimple.setTexture(ennemieSimple);
    sprite_ennemiesimple.setPosition(100, 50);

    sprite_maison1.setPosition(500, 500);

    if(!musique1.openFromFile("Antonin_Dvorak_-_New_World_Symphony_Allegro_con_fu.ogg")){
        cout<<"Erreur 4\n";
        pause_programme();
        return EXIT_FAILURE;
    }

    musique1.play();
    sprite_perso.setPosition(0,0);

    if(!policeEcriture.loadFromFile("font.ttf")){
        cout<<"Erreur 5\n";
        pause_programme();
        return EXIT_FAILURE;
    }



    while (app.isOpen())
    {


        sf::Event event;
        while (app.pollEvent(event))
        {






                                switch (event.type)
                        {


                           /*if (Keyboard::isKeyPressed(Keyboard::Escape)){
                        case sf::Event::KeyReleased:
                                switch (event.key.code == Keyboard::Escape)
                                {
                                case sf::Keyboard::W:
                                        menu.MoveUp();
                                        break;

                                case sf::Keyboard::X:
                                        menu.MoveDown();
                                        break;

                                case sf::Keyboard::Return:
                                        switch (menu.GetPressedItem())
                                        {
                                        case 0:
                                                std::cout << "Play button has been pressed" << std::endl;
                                                break;
                                        case 1:
                                                std::cout << "Option button has been pressed" << std::endl;
                                                break;
                                        case 2:
                                                app.close();
                                                musique1.stop();
                                                break;
                                        }

                                        break;
                                }

                                break;

                        }*/




                    case sf::Event::JoystickConnected:
                        afficheS.setString("yudgvhjsduivfkjvhuisdgvuyiougfybv");
                        afficheS.setCharacterSize(50);
                        break;

                        case sf::Event::Closed:
                    app.close();
                    musique1.stop();

                                break;



                        }






//            switch (event.type){
//
//        case sf::Event::KeyReleased:
//                switch (event.key.code){
//
//                case sf::Keyboard::Return:
//
//                    if (true == fullscreen){
//
//                        app.create(sf::VideoMode(600, 600), "sfml", sf::Style::None);
//                        fullscreen = false;
//
//                    }
//
//                    else {
//
//                        app.create(sf::VideoMode(600, 600, 32),"sfml", sf::Style::Fullscreen);
//                        fullscreen = true;
//
//                    }
//
//
//                    break;
//                }
//
//            }


            if (event.type == sf::Event::Closed){

                musique1.stop();
                app.close();
                break;
            }








            if(Joystick::isConnected(0)){
cout<<"vdfbgbggfcool";
            }


    if (sf::Joystick::isButtonPressed(0, 1))
        {
                        std::cout << "Button 1 is being pressed" << std::endl;
        }





        if (Keyboard::isKeyPressed(Keyboard::L)){
        mainTestGraphismeDEUXPOINTAsteroide();
        }







        gestionClavier();
        gestionSourie();

        animation.x++;
        animationEnnemieSimple.x++;

                if (touche::PixelPerfectTest(sprite_perso, sprite_ennemiesimple)){
            afficheS.setString("pppppp");
            afficheS.setCharacterSize(100);
            afficheS.setFillColor(Color::Red);
            afficheS.setPosition(50, 50);
        }


        if (touche::PixelPerfectTest(sprite_perso, sprite_maison1)){
            afficheS.setString("ghggigy");
            afficheS.setCharacterSize(100);
            afficheS.setFillColor(Color::Red);
            afficheS.setPosition(50, 50);
            app.draw(afficheS);
        }



        if (animation.x * blocksize >= perso.getSize().x){
            animation.x = 0;
        }

        if(animationEnnemieSimple.x * blocksize >= ennemieSimple.getSize().x){
            animationEnnemieSimple.x = 0;
        }

        if(animationEnnemieSimpleMort.x * bl0cksiz3 >= ennemieSimpleMort.getSize().x){
            animationEnnemieSimpleMort.x = 0;
        }

        sprite_perso.setTextureRect(IntRect(animation.x * blocksize, animation.y * blocksize, blocksize, blocksize));
        sprite_ennemiesimple.setTextureRect(IntRect(animationEnnemieSimple.x * blocksize, animationEnnemieSimple.y * blocksize, blocksize, blocksize));








//caméra

camera.reset(FloatRect(0, 0,screenwiz, screenheigt));
Vector2f position(screenwiz / 2, screenheigt / 2);
position.x = sprite_perso.getPosition().x + (blocksize / 2) - (screenwiz / 2) ;
position.y = sprite_perso.getPosition().y + (blocksize / 2) - (screenheigt / 2) ;

if (position.x < 0){
    position.x = 0;
}

if (position.y < 0){
    position.y = 0;
}

camera.reset(FloatRect(position.x, position.y, screenwiz, screenheigt));




        app.setView(camera);




//collision





    /*if (sprite_perso.getGlobalBounds().intersects(rect.getGlobalBounds())){
        cout<<"collision\n";


    }

    if (sprite_perso.getGlobalBounds().intersects(convex.getGlobalBounds())){
        cout<<"collision 2\n";
    }

    if (sprite_perso.getGlobalBounds().intersects(forme.getGlobalBounds())){
        cout<<"collision 3\n";
    }*/


    /*if (sprite_perso.getGlobalBounds().intersects(sprite_ennemiesimple.getGlobalBounds())){
        cout<<"Collision 4\n";
        hero.recevoirDegats(1);
        hero.afficherEtat();
    }*/


    if (hero.estVivant() == false){
        cout<<"Game over\n";
        cout<<"Vous etes mort :(\n";
        afficheS.setString("Game Over");
        afficheS.setColor(Color::Red);
        afficheS.setFont(policeEcriture);
        afficheS.setCharacterSize(100);
        afficheS.setPosition(50, 50);


    }

    if(ennemie.estVivant() == false){
        cout<<"GG\n";
        //sprite_ennemiesimple.move(1000000, 1000000);
        sprite_ennemiesimple.setTexture(ennemieSimpleMort);
        sprite_ennemiesimple.setTextureRect(IntRect(animationEnnemieSimple.x * blocksize, animationEnnemieSimple.y * blocksize, blocksize, blocksize));
        afficheS.setString("Bien joué");
        afficheS.setCharacterSize(100);
        afficheS.setPosition(50, 50);
        afficheS.setColor(Color::Green);

    }







   /* if (sprite_perso.getGlobalBounds().intersects(sprite_ennemiesimple.getGlobalBounds())){
        cout<<"Collision 4\n";
        hero.recevoirDegats(0.5);
        hero.afficherEtat();
    }*/













        cout<<"Position perosonnage X : "<<sprite_perso.getPosition().x<<"\nPosition personnage Y : "<<sprite_perso.getPosition().y<<"\n";
        }

        app.clear();
        ast.clear();

        app.draw(forme);
        app.draw(triangle);
        app.draw(convex);
        app.draw(rect);
        app.draw(convex2);
        app.draw(sprite_maison1);
        app.draw(sprite_ennemiesimple);
        app.draw(sprite_perso);
        app.draw(afficheS);



        app.display();

    }




return 0;
}



void gestionClavier(){



/*10 872px par minute*/

 if (Keyboard::isKeyPressed(Keyboard::LAlt) && Keyboard::isKeyPressed(Keyboard::Up)){
    animation.y = Up;
    sprite_perso.move(0, -(speed + 3));
}

else if (Keyboard::isKeyPressed(Keyboard::LAlt) && Keyboard::isKeyPressed(Keyboard::Down)){
    animation.y = Down;
    sprite_perso.move(0, (speed + 3));
}

else if (Keyboard::isKeyPressed(Keyboard::LAlt) && Keyboard::isKeyPressed(Keyboard::Right)){
    animation.y = Right;
    sprite_perso.move((speed + 3), 0);
}

else if (Keyboard::isKeyPressed(Keyboard::LAlt) && Keyboard::isKeyPressed(Keyboard::Left)){
    animation.y = Left;
    sprite_perso.move(-(speed + 10), 0);
}


/*5 778px par minute*/

else if (Keyboard::isKeyPressed(Keyboard::Up))
{
    animation.y = Up;
    sprite_perso.move(0, -speed);

}



else if (Keyboard::isKeyPressed(Keyboard::Down))
{
    animation.y = Down;
    sprite_perso.move(0, speed);

}


else if (Keyboard::isKeyPressed(Keyboard::Right))
{


    animation.y = Right;
    sprite_perso.move(speed, 0);

}


else if (Keyboard::isKeyPressed(Keyboard::Left))
{


    animation.y = Left;
    sprite_perso.move(-speed, 0);

}




else if (Keyboard::isKeyPressed(Keyboard::E)){
    animationEnnemieSimple.y = eUp;
        sprite_ennemiesimple.move(0, -speed);
}


else if (Keyboard::isKeyPressed(Keyboard::D)){
    animationEnnemieSimple.y = eDown;
        sprite_ennemiesimple.move(0, speed);
}


else if (Keyboard::isKeyPressed(Keyboard::F)){
    animationEnnemieSimple.x = eLeft;
        sprite_ennemiesimple.move(speed, 0 );
}


else if (Keyboard::isKeyPressed(Keyboard::S)){
    animationEnnemieSimple.x = eRight;
        sprite_ennemiesimple.move(-speed, 0);
}

else if(Keyboard::isKeyPressed(Keyboard::K)){
musique1.pause();
        }

else if(Keyboard::isKeyPressed(Keyboard::M)){
    musique1.play();
}


else if(Keyboard::isKeyPressed(Keyboard::B)){
    hero.changerArme("Baton de la destruction", 9);
    cout<<"1kkkkk\n\n";
    for(int i = 0; i < 50; i++){
    ennemie.recevoirDegats(1);
    seconds(1);

    }
}


if (sprite_perso.getPosition().x <= 0){
    sprite_perso.setPosition(Vector2f(0, sprite_perso.getPosition().y));
}

if (sprite_perso.getPosition().y <= 0){
    sprite_perso.setPosition(Vector2f(sprite_perso.getPosition().x, 0));
}

if (Keyboard::isKeyPressed(Keyboard::Home)){
    cout<<"ll";
    afficheS.setString("LLLLLLLLL");
    afficheS.setCharacterSize(100);

}



}

void gestionSourie(){



if(Mouse::isButtonPressed(Mouse::Left)){
    position = Mouse::getPosition(app);
    cout<<"position x :"<<position.x<<"\nposition y : "<<position.y<<"\n";
    int mouseGx = position.x;
    int mouseGy = position.y;
    sprite_maison1.setPosition(mouseGx, mouseGy);
}

if(Mouse::isButtonPressed(Mouse::Middle)){
    position = Mouse::getPosition(app);
    int mouseMx = position.x;
    int mouseMy = position.y;
    sprite_perso.setPosition(mouseMx, mouseMy);
}

if (Mouse::isButtonPressed(Mouse::Right)){
    cout<<"Vie du hero : ";
    hero.afficherEtat();
    cout<<"\n\n\nVie de l'ennemi : ";
    ennemie.afficherEtat();
    position = Mouse::getPosition(app);
    int mouseGx = position.x;
    int mouseGy = position.y;
    sprite_ennemiesimple.setPosition(mouseGx, mouseGy);
}





}
 




Donc le problème est que le joystick fait complètement planter le programme quand je le branche même lorsque dans le code il n'y a aucune interaction avec le joystick

Pour rappel, je débute dans la SFML.


Merci de vos réponses


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: Crash lors de l’exécution de mon programme
« Réponse #3 le: Octobre 16, 2017, 08:09:42 pm »
Citer
Je ne pense pas que le code entre en jeu
Donc ça vaut le coup de tester ce problème avec un code minimal, par exemple celui du tutoriel de démarrage. Ca permettra de se concentrer sur le fond du problème si effectivement ton code n'est pas en cause.
Laurent Gomila - SFML developer

0100100001100001

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
    • E-mail
Re: Crash lors de l’exécution de mon programme
« Réponse #4 le: Octobre 16, 2017, 08:27:54 pm »
Citer
Donc ça vaut le coup de tester ce problème avec un code minimal, par exemple celui du tutoriel de démarrage. Ca permettra de se concentrer sur le fond du problème si effectivement ton code n'est pas en cause.

Ça ne marche pas même avec un code "minimal" comme celui-ci :



#include "C:\Users\NIKO\Downloads\SFML-2.4.2-windows-gcc-4.9.2-tdm-32-bit(2)\SFML-2.4.2\include\SFML\Graphics.hpp"


using namespace sf;


int dfgdfgh(){

  // Create the main window
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    // Load a sprite to display
    sf::Texture texture;
    if (!texture.loadFromFile("cute_image.jpg"))
        return EXIT_FAILURE;
    sf::Sprite sprite(texture);
    // Create a graphical text to display
    sf::Font font;
    if (!font.loadFromFile("font.ttf"))
        return EXIT_FAILURE;
    sf::Text text("Hello SFML", font, 50);
    while (window.isOpen())
    {
        // Process events
        sf::Event event;
        while (window.pollEvent(event))
        {
            // Close window: exit
            if (event.type == sf::Event::Closed)
                window.close();
        }
        // Clear screen
        window.clear();
        // Draw the sprite
        window.draw(sprite);
        // Draw the string
        window.draw(text);
        // Update the window
        window.display();
    }
    return 0;
}


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: Crash lors de l’exécution de mon programme
« Réponse #5 le: Octobre 16, 2017, 08:34:10 pm »
Donc dès que tu branches la manette, ça plante ? On a un bug en cours qui pourrait être lié, ici : https://github.com/SFML/SFML/issues/1251
Laurent Gomila - SFML developer

0100100001100001

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
    • E-mail
Re: Crash lors de l’exécution de mon programme
« Réponse #6 le: Octobre 16, 2017, 09:36:48 pm »
Je tiens quand même à dire que lorsque j'utilise le debugger ça fonctionne.