Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

1

30.05.2010, 13:30

SFML Sprites

Hallo!

Ich habe hier ein SFML Programm geschrieben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int  main(int argc, char* argv[])
{
sf::RenderWindow  win(sf::VideoMode(800, 600, 32), "SFML-Graphic");
 /****************************************************************************/
 sf::Image image;
if (image.LoadFromFile("playerOne.png")){
 return 1;
}
sf::Sprite sprite(image);

 /****************************************************************************/
 while(win.IsOpened())
{
sf::Event event;
 while(win.GetEvent(event))
{
if (event.Type ==  sf::Event::Closed){
win.Close();
}
}
win.Clear();
 win.Draw(sprite);
win.Display();
}
return 0;
}

Doch wenn ich das Programm debugge, kommt da in der Konsole: Failed to load image "playerOne.png". Reason: Unable to open File.
Habe ich was flasch gemacht?
MfG R3DL10N

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »R3D L10N« (30.05.2010, 15:37)


Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

2

30.05.2010, 15:18

1. Wie heißt deine Datei wirklich?
Nach deinem Code heißt sie PlayerOne.bmp.
Nach deiner Aussage PlayerOne.png.

2.

C-/C++-Quelltext

1
2
3
 if (image.LoadFromFile("playerOne.bmp")){
        return 1;
    }


Bitte in

C-/C++-Quelltext

1
2
3
4
if ( ! image.LoadFromFile ( [DATEINAME] )
{
return 1 ;
]


ändern,da wenn die Datei geladen ist du die main Funktion verlässt und
sich das Programm schliesst.

MfG Stazer

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

3

30.05.2010, 15:35

sorry. die datei heißt: "playerOne.png"...

also wie jetzt? ich soll den Dateiname in eckige klammern setzen? und ich soll statt } ein ] am ende setzen?
MfG R3DL10N

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

4

30.05.2010, 16:01

Zitat

ich soll den Dateiname in eckige klammern setzen?


nein du sollst nur genau darauf achten das du den korrekten Dateinamen (mit Endung) in der Funktion angibst, weil auch Groß-und Kleinschreibung zu Fehler führen können. Dateiname als wie im ersten Post angeben nur genau so wie er in dem Ordner wo das Bild liegt steht..;)

Zitat

und ich soll statt } ein ] am ende setzen


nein einfach eine " } " also geschwungene Klammer zu.

und denke an das " ! " also das "nicht" in der Bedingung! Weil du sonst mit einem Fehlercode beendest wenn das Bild geladen wurde, und das willst du sicher nicht, oder? :D



Lerikson
Errare est humanum. -Windows ist menschlich ;-)

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

5

30.05.2010, 16:15

naja aber jetzt wird das Programm immer beendet...
aber ich versteh nicht ganz, was ich noch ändern soll...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int main(int argc, char* argv[])
{
    sf::RenderWindow win(sf::VideoMode(800, 600, 32), "Jumping like a Frog");

    sf::Image playerOneI;
    if (! playerOneI.LoadFromFile("images\\players\\playerOne.png"))
    {
        return 1;
    }
    sf::Sprite playerOne(playerOneI);

    while (win.IsOpened())
    {
        sf::Event event;
        while(win.GetEvent(event))
        {
            if (event.Type == sf::Event::Closed){
                win.Close();
            }
        }
        win.Clear();
        win.Draw(playerOne);
        win.Display();
    }
    return 0;
}
MfG R3DL10N

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

6

30.05.2010, 16:18

Denke daran, dass das Ausführungsverzeichnis nicht zwingend das Verzeichnis ist, in welchem die .exe liegt.

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

7

30.05.2010, 16:24

aber das ist es ja süätestens beim release... soll ich beim debuggen den vollen und beim release die "kurzfassung" verwenden oder wie?

//Edit: Jetzt bleibt das fenster offen, aber das sprite wird nicht angezeigt...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int main(int argc, char* argv[])
{
    sf::RenderWindow win(sf::VideoMode(800, 600, 32), "Jumping like a Frog");

    sf::Image playerOneI;
    if (! playerOneI.LoadFromFile("C:\\****\\****\\*****\\Visual Studio 2010\\Projects\\*****\\Debug\\images\\players\\playerOne.png"))
    {
        return 1;
    }
    sf::Sprite playerOne(playerOneI);

    while (win.IsOpened())
    {
        sf::Event event;
        while(win.GetEvent(event))
        {
            if (event.Type == sf::Event::Closed){
                win.Close();
            }
        }
        win.Clear();
        win.Draw(playerOne);
        win.Display();
    }
    return 0;
}
MfG R3DL10N

xxendlessxx

Treue Seele

Beiträge: 230

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

8

30.05.2010, 16:37

hast du die sprite selbst erstellt? wenn ja hast du beim speichern der png auf interlaced geklickt? wenn ja dann geht es nicht. sfml nimmt bei mir auch keine interlaced pngs.

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

9

30.05.2010, 16:38

ja ich hab die datei selbst erstellt, aber ich verwende nie interlaced....
ich brauch halt n dateiformat, das transparenz unterstützt....
MfG R3DL10N

R3D L10N

Treue Seele

  • »R3D L10N« ist der Autor dieses Themas

Beiträge: 106

Beruf: Schüler

  • Private Nachricht senden

10

30.05.2010, 18:52

ich hab es anders hinbekommen!
und zwar habe ich

C-/C++-Quelltext

1
sf::Sprite playerOne(playerOneI);

in

C-/C++-Quelltext

1
2
sf::Sprite playerOne;
playerOne.setImage(playerOneI);

verändert.
MfG R3DL10N

Werbeanzeige