C++ SFML 2.1 Schrift wird nicht geladen



  • Hey, ich bin neu in der Welt von der Programmierung und habe mit einem Freund der sich etwas besser auskennt angefangen eine Art Spiel zu schreiben. Bei dem Spiel soll man auch mit Esc ein Menü aufrufen können. In diesem Menü soll ein Rechteck erscheinen, in dem dann auch ein Text steht. Aber bei meinem Quellcode steht immer das die Schrift (Font) nicht geladen werden konnte. Aber bei meinem Freund der Windows 8 hat funktioniert alles. Nur bei mir nicht, ich habe Mac OS X. Hier ist mal der Quellcode. Aber ich hoffe jemand von euch hat ne Idee oder kennt das Problem:

    main.cpp :

    #include <SFML/Graphics.hpp>
    #include "While_methode.hpp"

    using namespace sf;

    int main()

    {
    RenderWindow window (VideoMode(800, 600), "Test", Style::Close | Style::Resize);
    window.setFramerateLimit(60);

    Event e;

    RectangleShape rect;
    rect.setPosition(400, 240);
    rect.setSize(Vector2<float>(10, 10));
    rect.setFillColor(Color::Red);

    bool fullscreen = false;

    While_Schleife(e, window, rect, fullscreen);

    return 0;
    }

    While_methode.cpp:

    using namespace sf;

    void While_Schleife(Event &e,RenderWindow &window, RectangleShape &rect, bool fullscreen)
    {
    Font schriftart;
    schriftart.loadFromFile("sansation.ttf");
    Text beenden;
    beenden.setPosition(350, 275);
    beenden.setColor(Color::Black);
    beenden.setString ("Beenden");
    beenden.setFont(schriftart);

    RectangleShape buttenBeenden;
    buttenBeenden.setPosition(300, 250);
    buttenBeenden.setSize(Vector2f(200,50));
    buttenBeenden.setFillColor(Color::White);

    bool ButtenZeichnen = false;

    while (window.isOpen() )
    {
    while (window.pollEvent(e))
    {
    if (e.type==Event::KeyPressed)
    {
    switch (e.key.code)
    {
    case Keyboard::Escape:
    ButtenZeichnen=true;
    break;

    default: break;
    }
    }

    if(e.type == Event::KeyPressed)
    {
    if (e.key.control && e.key.code == Keyboard::F)
    {
    if(fullscreen)
    {
    window.create(VideoMode(800, 600), "Test", Style::Close | Style::Resize);
    fullscreen = false;
    }
    else
    {
    window.create(VideoMode(800, 600), "Test", Style::Fullscreen);
    fullscreen = true;
    }
    }
    }

    if (e.type== Event::Closed)
    window.close();

    }

    if(Keyboard::isKeyPressed(Keyboard::Up)|| Keyboard::isKeyPressed(Keyboard::W))
    rect.move(0, -20);

    if(Keyboard::isKeyPressed(Keyboard::Down)|| Keyboard::isKeyPressed(Keyboard::S))
    rect.move(0, 20);

    if(Keyboard::isKeyPressed(Keyboard::Left)|| Keyboard::isKeyPressed(Keyboard::A))
    rect.move(-20, 0);

    if(Keyboard::isKeyPressed(Keyboard::Right)|| Keyboard::isKeyPressed(Keyboard::D))
    rect.move(20, 0);

    if(rect.getPosition().x >= 800 - 10)
    rect.setPosition(800 - 10, rect.getPosition().y);
    if (rect.getPosition().x <= 0)
    rect.setPosition(0, rect.getPosition().y);
    if(rect.getPosition().y >= 600 - 10)
    rect.setPosition(rect.getPosition().x, 600 - 10);
    if (rect.getPosition().y <= 0)
    rect.setPosition(rect.getPosition().x, 0);

    window.clear(Color::Yellow);

    window.draw(rect);

    if (ButtenZeichnen)
    {
    window.draw (buttenBeenden);
    window.draw (beenden);
    }

    window.display();
    }
    }

    While_methode.hpp:

    #ifndef SFML_Test_While_methode_hpp
    #define SFML_Test_While_methode_hpp

    #include <SFML/Graphics.hpp>

    using namespace sf;

    void While_Schleife(Event &e, RenderWindow &window, RectangleShape &rect, bool fullcreen);

    #endif

    Grüße Ferdi



  • ZaubererVonOS schrieb:

    Aber bei meinem Quellcode steht immer das die Schrift (Font) nicht geladen werden konnte. Aber bei meinem Freund der Windows 8 hat funktioniert alles. Nur bei mir nicht, ich habe Mac OS X.

    schriftart.loadFromFile("sansation.ttf");

    Ja, dann wird die Datei sansation.ttf nicht da sein. Die muss im selben Ordner sein, wie das Programm.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ja, aber die Schriftart "sansation.ttf" ist im Ordner enthalten, da wo auch die Testbilder usw. drin sind. Ich würde auch ein Bild reinstellen wenn ich wüsste wie 😉

    ach ja und das ist die Fehlermeldung :

    Failed to load font "sansation.ttf" (failed to create the font face)



  • Welche Testbilder? Die Samples im SFML-SDK sind irrelevant, du hast schliesslich ein separates Projekt. Daher klappt es auch nicht, wenn du die mitgelieferte Sansation.ttf direkt (ohne zu verschieben) verwenden möchtest.

    Wenn du aus einer IDE startest, müssen die Ressourcen im Arbeitsverzeichnis sein (z.B. Verzeichnis oder Unterverzeichnis der IDE). Bei einer ausführbaren Datei sind sie üblicherweise im gleichen Ordner, bzw. in einem relativen Pfad dazu. Stelle sicher, dass dies der Fall ist (im SFML-Tutorial steht das etwas detaillierter).

    Funktioniert es, wenn du das Programm aus der Konsole startest?



  • Ne, ich habe auch die Schriftart im Resources Folder drin. Also bei Xcode.

    Kann man hier auch Fotos hoch laden? Wenn ja wie?



  • Code Tags, bitte!
    Erlaube mir die Frage, wo hast du gelernt so SFML zu nutzen?
    Schau dich mal bisschen hier um -> http://sfml-dev.org/resources.php

    mfg
    HarteWare



  • Das habe ich nicht allein geschrieben sondern mein etwas erfahrener Freund! Aber
    ich habe die Schriftart in dem Resources Ordner und auch im Projekt Ordner ! Was kann denn da noch sein, das es nicht funktioniert?

    P.s. Die Code tags werden nicht angezeigt obwohl ich vor und nach dem Code, diesen C++ "Button" hinschreibe (also da dieser Button im Editor).



  • Warum antwortet niemand, ich könnte echt Hilfe gebrauchen. Wenn ich z.B. auch ein neues Projekt mit Xcode mache und dann SFML Clt anklicke, ist ja auch immer schon ein exmple in der main.cpp . Doch wenn ich die lade dann steht auch die Meldung "Failed to load font "sansation.ttf" . Also liegt es nicht an mir!


Anmelden zum Antworten