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

Auteur Sujet: [Résolu]SFML executer projet (maj problème vient du code)  (Lu 1975 fois)

0 Membres et 1 Invité sur ce sujet

Faren

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
[Résolu]SFML executer projet (maj problème vient du code)
« le: Septembre 19, 2013, 02:32:28 pm »
 Bonjour,

En ce moment j'utilise la SFML (et CodeBlocks)pour un projet, tout marchait bien jusqu'à aujourd'hui.

Le projet compile mais ne se lance pas, il me demande "build it now"(normal car le projet est nouveau) je réponds oui. Au bout de 10 secondes il me repose la même question, alors je répons oui encore.

Il me dit alors que mon projet ne peut pas s'ouvrir "cannot open output file invalid argument" .

J'ai recherché dans les processus mon programme n'y est pas.

Que faire ?

Merci d'avance pour vos réponses

--------------------------------------------------------------------------------------------
Après plusieurs tests, il semblerait que le problème vienne du code.
Le voici:
main.cpp
#include "MapManager.h"

using namespace std;

bool condition(sf::Sprite *perso,sf::Texture tPerso,sf::Sprite *bPerso,sf::Texture btPerso);


int main()
{
    sf::RenderWindow window(sf::VideoMode(400, 400), "SFML works!");
    const float speed =100;
    sf::Clock clock;
    sf::Texture *tPerso=new sf::Texture;
    int carte[200][200];

    sf::Sprite *sPerso=new sf::Sprite;
    sf::Image *iPerso=new sf::Image;

    MapManager niveau;
    niveau.lectureNiveau(carte);



    if(!iPerso->loadFromFile("Personnage.png"))
    {
cout<<"erreur chargement image"<<endl;
    }
sf::Color fond=iPerso->getPixel(0,0);
    iPerso->createMaskFromColor(fond);
    tPerso->loadFromImage(*iPerso);
    sPerso->setTexture(*tPerso);
    window.setKeyRepeatEnabled(true);


cout <<"salut"<<endl;

    while (window.isOpen())
    {
        sf::Event event;
        float elapsed = clock.restart().asSeconds();

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



        }


if(sf::Event::KeyPressed)
                {
                    //if(sf::Keyboard::isKeyPressed(sf::Keyboard::Z))
                      //if(condition(sPerso)==true){sPerso->move(0,-speed*elapsed);}

                    //if(sf::Keyboard::isKeyPressed(sf::Keyboard::Q))
                       //if(condition(sPerso)==true){sPerso->move(-speed*elapsed,0);}

                    //if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
                       //if(condition(sPerso)==true){sPerso->move(0,speed*elapsed);}

                   // if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
                       //if(condition(sPerso)==true){sPerso->move(speed*elapsed,0);}



                  }

        window.clear(sf::Color::White);
        niveau.initSprites(carte,window);
        window.draw(*sPerso);
        window.display();


                }

delete  iPerso;
delete  tPerso;
delete  sPerso;


        return 0;
    }

bool condition(sf::Sprite *perso,sf::Texture *tPerso,sf::Sprite *bPerso,sf::Texture btPerso)
{
    // Taille et position du sprite 1
    int x1=0,y1=0,tailleX=0,tailleY=0; //position en haut à gauche de l'"image"
    x1=perso->getPosition().x;
    y1=perso->getPosition().y;
    tailleX=tPerso->getSize().x;
    tailleY=tPerso->getSize().y;

    //taille et position du sprite 2
    int x2=0,y2=0,btailleX=0,btailleY=0; //position en haut à gauche de l'"image"
    x2=perso->getPosition().x;
    y2=perso->getPosition().y;
    btailleX=tPerso->getSize().x;
    btailleY=tPerso->getSize().y;

    if( (x1<=x2+btailleX && x1 >=x2) || (x1+tailleX>=x2 && x2>=x1) || (y1<=y2+btailleY && y1 >=y2) || (y1+tailleY>=y2 && y2>=y1) ) //conditions pour les collisions
        return true;
    else return false;

}




 

MapManger.cpp:
#include "MapManager.h"

MapManager::MapManager()
{

}

void MapManager::lectureNiveau(int carte[][TAILLE])
{
    ifstream monflux("Niveau.txt");
int i=0,j=0;
    if(!monflux)
 {
     cout << "Erreur ouverture fichier niveau.txt"<<endl;

 }
 else
 {
     while(!monflux.eof())
     {
         for(j=0;i<6;j++)
         {
             for(i=0;i<9;i++)
             {
                 monflux >> carte[i][j];

             }

         }


     }
    monflux.close();



 }
}

void MapManager::initSprites(int carte[][TAILLE],sf::RenderWindow &fenetre)
{
int tailleX;
int tailleY;
int i=0;
int j=0;


if(iTiles.loadFromFile("tileSet.jpg")) //Chargement Images
{
   tailleX= iTiles.getSize().x/3;
   tailleY= iTiles.getSize().y/5;

    for(i=0;i<6;i++)
 {
    for(j=0;j<9;j++)
   {

        switch(carte[i][j])
    {
    case 1:tTiles1.loadFromImage(iTiles,sf::IntRect(0,0,tailleX,tailleY));
           sTiles1.setTexture(tTiles1);
           sTiles1.setPosition(j*tailleX,i*tailleY);
           fenetre.draw(sTiles1);

        break;
    case 2:tTiles2.loadFromImage(iTiles,sf::IntRect(tailleX,0,2*tailleX,tailleY));
           sTiles2.setTexture(tTiles2);
           sTiles2.setPosition(j*tailleX,i*tailleY);
           fenetre.draw(sTiles2);

        break;
    case 3:tTiles3.loadFromImage(iTiles,sf::IntRect(2*tailleX,0,3*tailleX,tailleY));
           sTiles3.setTexture(tTiles3);
           sTiles3.setPosition(j*tailleX,i*tailleY);
           fenetre.draw(sTiles3);

        break;
    case 4:tTiles4.loadFromImage(iTiles,sf::IntRect(0,tailleY,tailleX,2*tailleY));
           sTiles4.setTexture(tTiles4);
           sTiles4.setPosition(j*tailleX,i*tailleY);
           fenetre.draw(sTiles4);

        break;
    case 5:tTiles4.loadFromImage(iTiles,sf::IntRect(tailleX,tailleY,2*tailleX,2*tailleY));
           sTiles4.setTexture(tTiles4);
           sTiles4.setPosition(j*tailleX,i*tailleY);
           fenetre.draw(sTiles5);

        break;
    default:
        break;

    }

   }


 }
}
else{cout << "Erreur chargement Image tileSet.png"<<endl;}


}

sf::Sprite MapManager::getSprite1()
{
    return sTiles1;
}

sf::Sprite MapManager::getSprite2()
{
    return sTiles2;
}
sf::Sprite MapManager::getSprite3()
{
    return sTiles3;
}
sf::Sprite MapManager::getSprite4()
{
    return sTiles4;
}
sf::Sprite MapManager::getSprite5()
{
    return sTiles5;
}

 

MapManager.hpp
#ifndef MAPMANAGER_H_INCLUDED
#define MAPMANAGER_H_INCLUDED


#include <iostream>
#include <fstream>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#define TAILLE 200

using namespace std;

class MapManager

{
public:

MapManager();
void lectureNiveau(int carte[][TAILLE]);
void initSprites(int carte[][TAILLE],sf::RenderWindow &fenetre);
sf::Sprite getSprite1();
sf::Sprite getSprite2();
sf::Sprite getSprite3();
sf::Sprite getSprite4();
sf::Sprite getSprite5();


private:

sf::Image iTiles;
sf::Texture tTiles1;
sf::Sprite sTiles1;
sf::Texture tTiles2;
sf::Sprite sTiles2;
sf::Texture tTiles3;
sf::Sprite sTiles3;
sf::Texture tTiles4;
sf::Sprite sTiles4;
sf::Texture tTiles5;
sf::Sprite sTiles5;


};




#endif // MAPMANAGER_H_INCLUDED
 
« Modifié: Septembre 20, 2013, 05:04:41 pm par Faren »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : [Résolu]SFML executer projet (maj problème vient du code)
« Réponse #1 le: Septembre 21, 2013, 01:07:26 pm »
Pense à indiquer que tu as résolu le problème ailleurs (et donne la solution donc), histoire que personne ici ne s'embête à chercher ou à lire tes innombrables lignes de code pour rien.

Faren

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : [Résolu]SFML executer projet (maj problème vient du code)
« Réponse #2 le: Septembre 21, 2013, 02:32:39 pm »
Le problème était qu'il restait un fichier.o dans mon dossier qui m'empechait de compiler, celui-ci n'étant pas visible dans le dossier. Pour régler le problème j'ai dû faire un Ccleaner.

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : [Résolu]SFML executer projet (maj problème vient du code)
« Réponse #3 le: Septembre 21, 2013, 09:02:05 pm »
Ton IDE permet pas de "clean & rebuild" ?

Faren

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : [Résolu]SFML executer projet (maj problème vient du code)
« Réponse #4 le: Septembre 21, 2013, 09:21:04 pm »
Si mais le clean n'a eu aucun effet