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

Jaymz

Frischling

  • »Jaymz« ist der Autor dieses Themas

Beiträge: 16

Wohnort: Steiermark / Österreich

  • Private Nachricht senden

1

05.03.2011, 22:00

C++ (sfml) float Rendern (Wie bekommt man am besten einen float Wert in einem sf::string) (edit: ich hab std::string ausgetauscht gegen sf::String sorry)

Hi.

Ich hol mal etwas aus um mein Problem zu beschreiben. Ich versuche mich gerade darin ein Spiel mit Hilfe der sfml zu programmieren. Es geht darum, Schafe, die links in den Bildschirm laufen mit der Maus "abzuschießen" (Moorhuhn Klon). Soweit funktioniert das ganze so wie ich will.

Nun würde ich gerne einen Zähler einfügen der innerhalb einer bestimmten Zeit die Abschüsse zählt.
Meine Lösung beruht auf der Collisionsabfrage. Also wenn ein Schaf "getroffen" wurde wird der Zähler um eins erhöht.

Leider bekomm ich es nicht hin den Punktestand mithilfe der sfml anzuzeigen. Meine Lösung beruht nun darauf den int Wert in einen std::string zu konvertieren, und diesen mittels sf::string auf den Bildschirm zu bringen. Das ganze funktioniert zwar, aber ich habe das gefühl irgendwas falsch zu machen, da mir der Lösunsweg zu kompliziert erscheint.

Meine Frage lautet nun. Wie ist es mittels sfml möglich einen float bzw. int Wert in einem sf::string zu rendern?
Ohne umweg über einen std::string bekomm ich das nicht auf die Reihe. ;(

lg
Michael

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jaymz« (05.03.2011, 22:06)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

05.03.2011, 22:07

es geht ohne spezielle funktion oder methode auch nicht einfacher.
es ist aber kein problem sowas selbst zu schreiben. ein sehr einfaches beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
template<class T> inline std::string toStr(T& x)
{
    std::stringstream type;
    type << x;
    return type.str();
};
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

3

05.03.2011, 22:19

Wie du in der Dokumentation sehen kannst akzeptiert die Funktion SetText() von der sf:: String Klasse als Parameter eine Referenz auf ein Unicode::Text Objekt. Schaut man sich nun die Klassendefinition der Unicode Klasse an, so stellt man fest, dass die Funktion Text() diese Klasse mehrfach überladen wurde. Einige Varianten dieser Funktion akzeptieren auch Zeiger auf die Integer-Typen der SFML.

Du könntest es also so probieren:

C-/C++-Quelltext

1
2
3
sf::Uint8 zahl = 123;
sf::Unicode::Text text(&zahl);
myString.SetText(text);


Ob das jetzt aber weniger kompliziert ist... hm..
Auf jeden Fall bezweifle ich, dass es einen anderen Weg gibt, als deine Zahl erst zu irgendeiner Form von String zu konvertieren. Außer natürlich du überlädst die SetText() Funktion der sf:: String Klasse und kompilierst die SFML neu. ;)

Gruß
SaRu_

Jaymz

Frischling

  • »Jaymz« ist der Autor dieses Themas

Beiträge: 16

Wohnort: Steiermark / Österreich

  • Private Nachricht senden

4

05.03.2011, 22:20

ok. danke.´

Ich dachte ich mach da was unnötig kompliziert...

lg

Werbeanzeige