Unbehandelte Ausnahme - Header- & CPP-Datei
-
Wie wärs mal mit einem Debugger und einem Stacktrace? Dann müsstest du nicht mehr weiter rätselraten...
-
Hast du mal versucht in der Main das so aufzurufen?:
sf::string blub("deinPfad");
Object obj(blub);Kann mich da schwach erinnern das da so was war... weiß aber nicht ob es das war

PS: Zeig mal bitte wie du den in der Header deklariert hast

-
Nathan schrieb:
sf::String ist von SFML und bietet automatische Unicode-Konvertierung, soweit ich weiß.
Nicht ganz richtig. ein sf::String ist ein gerenderter String auf dem Bildschirm. Das hat mit std::string garnichts zu tun, weil std::string nur Zeichenketten speichert und sie nicht mit einem Font auf eine Textur rendern kann ...
Ist also extrem schwachsinnig hier sf::String zu verwenden und das ganze funktioniert auch nur, weil sf::String implizit von std::string/char const* erzeugt werden kann und gecastet wird. Denn die Signatur von Texture::loadFromFile ist:
bool loadFromFile (const std::string &filename, const IntRect &area=IntRect())Edit: Okay, seit Version 2.0 ist sf::String wirklich eine Stringklasse und die Renderklasse heißt sf::Text ... sorry.
-
Header-Datei:
#include <SFML\Graphics.hpp> using namespace sf; class Object { public: void Update(RenderWindow &window, float elapsedTime); void Render(RenderWindow &window); Object(sf::String tex); private: float speed; Texture texture; Sprite sprite; bool active; };min.cpp:
#include <iostream> #include <windows.h> #include <random> #include <string> #include <vector> #include "object.h" #include <SFML/Graphics.hpp> using namespace sf; //Variables int winX=1024; int winY=700; bool running=true; bool started=true; bool spaceStarted=false; int imgID=0; int posX=80; int posY=winY/2; float accY=0; int life=100; Clock clock1; Object object("/img/objects.png"); //voids void restartGame(); void resetVariables(); int main() { //Window RenderWindow window(VideoMode(winX, winY, 32), "TheHelicopter", Style::Close); window.setFramerateLimit(100); std::cout << "loaded window" << std::endl; //--------Spawn-Timer-------- //---------------- //--------Object-List-------- //---------------- //--------Fonts-------- Font agency; agency.loadFromFile("AGENCYR.TTF"); std::cout << "loaded fonts" << std::endl; //---------------- //--------Background-------- Texture texBackground; texBackground.loadFromFile("img/background.png"); Sprite sprBackground; sprBackground.setTexture(texBackground); sprBackground.setPosition(0, 0); sprBackground.setScale(17.5, 17.5); std::cout << "loaded background" << std::endl; //---------------- //--------Player-------- Texture texPlayers; texPlayers.loadFromFile("img/players.png"); Sprite sprPlayer; sprPlayer.setTexture(texPlayers); sprPlayer.setTextureRect(IntRect(0, imgID*40, 120, imgID*20+40)); sprPlayer.setOrigin(60,20); sprPlayer.setScale(1, 1); sprPlayer.setPosition(posX, posY); std::cout << "loaded player" << std::endl; //---------------- //--------Player-Life-Bar-------- Texture texBarBack; Texture texBar; texBarBack.loadFromFile("img/bar.png"); texBar.loadFromFile("img/bar.png"); Sprite sprBarBack; Sprite sprBar; sprBarBack.setTexture(texBarBack); sprBar.setTexture(texBar); sprBarBack.setTextureRect(IntRect(0, 0, 100, 5)); sprBar.setTextureRect(IntRect(0, 5, life, 10)); sprBarBack.setOrigin(50, 3); sprBar.setOrigin(50, 3); std::cout << "loaded player-life-bar" << std::endl; //---------------- //--------Object-------- //---------------- //--------Text-------- Text txtStart("Press Space to start!", agency, 100); txtStart.setColor(Color(128,128,128)); txtStart.setOrigin(txtStart.getLocalBounds().width/2, txtStart.getLocalBounds().height/2); txtStart.setPosition(winX/2,winY/2); std::cout << "loaded text" << std::endl; //---------------- std::cout << "game started" << std::endl; while(running) { Event event; float elapsedTime=clock1.restart().asMilliseconds(); while(window.pollEvent(event)) { if(((event.type==Event::KeyPressed) && (event.key.code==Keyboard::Escape)) || event.type==Event::Closed) { running=false; } } while(!spaceStarted) { if(Keyboard::isKeyPressed(Keyboard::Space)) { spaceStarted=true; std::cout << "space pressed" << std::endl; } while(window.pollEvent(event)) { if(((event.type==Event::KeyPressed) && (event.key.code==Keyboard::Escape)) || event.type==Event::Closed) { spaceStarted=true; running=false; } } window.clear(Color(2, 0, 10)); window.draw(sprBackground); window.draw(sprPlayer); window.draw(sprBarBack); window.draw(sprBar); window.draw(txtStart); window.display(); } if(Keyboard::isKeyPressed(Keyboard::Space)) { if(accY>-8){accY=accY-0.75;} } else { if(accY<16){accY=accY+0.25;} } if(posY-20<35) { life=life+(accY*(std::rand()%2+4)); accY=0-accY; } if(posY+20>winY-35) { life=life-(accY*(std::rand()%2+4))/2; accY=0-accY+4; } if(life<0) { std::cout << "player died" << std::endl; restartGame(); resetVariables(); } posY=posY+accY; sprPlayer.setPosition(posX, posY); sprPlayer.setRotation((accY-4)*2); sprBarBack.setPosition(posX-10, posY-40); sprBar.setPosition(posX-10, posY-40); sprBar.setTextureRect(IntRect(0, 5, life, 10)); window.clear(Color(2, 0, 10)); window.draw(sprBackground); window.draw(sprPlayer); object.Update(window, elapsedTime); object.Render(window); window.draw(sprBarBack); window.draw(sprBar); window.display(); } return 0; } void restartGame() { spaceStarted=false; std::cout << "restarted" << std::endl; } void resetVariables() { posX=80; posY=winY/2; accY=0; life=100; std::cout << "variables reset" << std::endl; }
-
Zur Sicherheit einfach mal sf::string durch std::string austauschen, hast du schon gemacht?
MFG
-
derFer schrieb:
Zur Sicherheit einfach mal sf::string durch std::string austauschen, hast du schon gemacht?
MFG
Ja das hab ich auch schon probiert
-
Welche SFML-Version? Selbst gebaut? Welcher Compiler?
-
MFK schrieb:
Welche SFML-Version? Selbst gebaut? Welcher Compiler?
SFML 2.0
Visual C++ 2010 Express
-
2.0 ist gut, hast du 2.0 RC benutzt, also von der Webseite, oder hast du dir SFML selbst kompiliert (aus dem Repository)?
MfG
-
derFer schrieb:
2.0 ist gut, hast du 2.0 RC benutzt, also von der Webseite, oder hast du dir SFML selbst kompiliert (aus dem Repository)?
MfGIch habe mir SFML 2.0 von der Website heruntergeladen und dann in das Projekt eingebunden(libs, include...)
-
Stelle sicher, dass du alles schrittweise befolgt. Im SFML-Forum gibts fast jeden Tag einen Thread mit Leuten, die die offiziellen Tutorials nicht genau lesen und daher inkompatible Bibliotheken linken, Debug/Release, Static/Dynamic oder verschiedene Compilerversionen mischen. Schliesse solche Fehlerquellen aus.
Anonsten schreib Schritt für Schritt exakt auf, was du mit welcher Konfiguration inkludiert und gelinkt hast.
-
Nexus schrieb:
...daher inkompatible Bibliotheken linken, Debug/Release, Static/Dynamic oder verschiedene Compilerversionen mischen. Schliesse solche Fehlerquellen aus.
Es scheint mir eher das er meinte das er die RC Version (fertig compiliert) benutzt und nur die fertigen Libs mit-linkt...
-
Ja ich habe mir sfml hier heruntergeladen:
http://www.sfml-dev.org/download.php#2.0-rc