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
Zitat von »"physX"«
hallo, kannst du einfach über sprintf machen. also in der Art:
C-/C++-Quelltext
1 2 3 4 5 6 7 8 int izahl=5; float fzahl=5.4; char cBuffer[100]; sprintf(cBuffer,"die integerzahl: %i und die floatzahl: %f \n",izahl,fzahl); cout << cBuffer; // bzw. mit cBuffer kannste dann anstellen was du willst :)
schau mal unter sprintf und fprintf nach. Man kann sich damit Texte schön vorformatieren.
gruss
Zitat von »"Iljaronaldo"«
So nun soll es ja auch den aktuellen Score anzeigen.
Ich bräuchte da bischen Hilfe wie ich es am besten machen soll.
Ich habe mir gedacht ich deklariere eine Variable in der CGame vom Typ int, die bei der Kollision zwischen Asteroid und Schuss immer um 100 erweitert wird.
So nun gibt es aber ein Problem, wie caste ich ein int in nen char, denn ich brauche ja bei der TTF_RenderText_Blended Funktion einen char.
Wie macht man es am besten?
Und noch eine Frage nebenbei.Kann ich einfach mit der RenderText Funktion so(..., CGame->Punkte, ... ) auf die Punkte zugreifen, die ich private in der Klasse CGame deklariert habe und wo auch die Variable entsprechend gefüllt wird??
Danke.
C-/C++-Quelltext |
|
1 2 |
//Score rendern m_pScoreSurface = TTF_RenderText_Blended(m_pFont, CGame->cBuffer, m_Color); |
Zitat von »"Iljaronaldo"«
Ok ich habe es jetzt genauso alles in cBuffer gespeichert und wie kann ich es jetzt mit TTF_RenderText_Blendet verwendet?
Komischerweise funktioniert CGame->cBuffer nicht?!
Wie immer nciht deklariert usw.
Aber im Buch kann ich mich genau errinern wurde es auch so gemacht, dass man mittels der Angabe der Klasse auf seine Memberfunktionen/Variablen Zugriff hatte.
Würde mich über Auskunft freuen.
C-/C++-Quelltext
1 2 //Score rendern m_pScoreSurface = TTF_RenderText_Blended(m_pFont, CGame->cBuffer, m_Color);
Zitat von »"physX"«
wenn CGame eine Instanz deiner Klasse ist
Zitat
ist cBuffer wirklich ein membervariable (public?) von CGame
Zitat
ansonsten poste mal die wesentlichen codeteile
Quellcode |
|
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 27 28 |
C:\SDL Projekte\Spiel\Space Wars\Shot.hpp|9|error: `CSprite' has not been declared| C:\SDL Projekte\Spiel\Space Wars\Shot.hpp|9|error: ISO C++ forbids declaration of `pSpriteShot' with no type| C:\SDL Projekte\Spiel\Space Wars\Shot.hpp|17|error: ISO C++ forbids declaration of `CSprite' with no type| C:\SDL Projekte\Spiel\Space Wars\Shot.hpp|17|error: expected `;' before '*' token| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|18|error: ISO C++ forbids declaration of `list' with no type| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|18|error: expected `;' before '<' token| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|20|error: expected `;' before "private"| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|25|error: ISO C++ forbids declaration of `CSprite' with no type| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|25|error: expected `;' before '*' token| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|26|error: ISO C++ forbids declaration of `CSprite' with no type| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|26|error: expected `;' before '*' token| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|31|error: ISO C++ forbids declaration of `list' with no type| C:\SDL Projekte\Spiel\Space Wars\Player.hpp|31|error: expected `;' before '<' token| C:\SDL Projekte\Spiel\Space Wars\Explosion.hpp|9|error: `CSprite' has not been declared| C:\SDL Projekte\Spiel\Space Wars\Explosion.hpp|9|error: ISO C++ forbids declaration of `pSpriteExplosion' with no type| C:\SDL Projekte\Spiel\Space Wars\Explosion.hpp|18|error: ISO C++ forbids declaration of `CSprite' with no type| C:\SDL Projekte\Spiel\Space Wars\Explosion.hpp|18|error: expected `;' before '*' token| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|31|error: ISO C++ forbids declaration of `CSprite' with no type| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|31|error: expected `;' before '*' token| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|32|error: ISO C++ forbids declaration of `CSprite' with no type| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|32|error: expected `;' before '*' token| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|33|error: ISO C++ forbids declaration of `CSprite' with no type| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|33|error: expected `;' before '*' token| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|36|error: ISO C++ forbids declaration of `list' with no type| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|36|error: expected `;' before '<' token| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|37|error: ISO C++ forbids declaration of `list' with no type| C:\SDL Projekte\Spiel\Space Wars\Game.hpp|37|error: expected `;' before '<' token| ||=== Build finished: 27 errors, 0 warnings ===| |
Zitat von »"Fred"«
Für mich sehen die Fehler so aus, als habest du vergessen gewisse Header einzubinden.
C-/C++-Quelltext |
|
1 |
g_pFramework->ShowText(cBuffer) |
Zitat von »"Iljaronaldo"«
Zitat von »"Fred"«
Für mich sehen die Fehler so aus, als habest du vergessen gewisse Header einzubinden.
Das kann iegneltich nciht sein, wiel es ja sonst funktioniert.
Ich habe mal den komplletten Code gepostet:
http://www.pasteall.org/6569
btw: Hoffe Herr Kalista hat nix gegen
Der ist normal richitg.
Ich habe ihn ohne Vererbung gepostet damit ihr seht, dass er Fehlerfrei ist und auch funzt.
Ist ja nicht viel notwendig um von CGame erben zu lasen.
Ich hatte es so gemacht.
1. In der Klasse CGame cBuffer[100]; auf protected gestellt
2.per include game.hpp eingebunden(in framework.hpp natürlich)
3.class CFramework : public TSingleton<CFramework>, public CGame geschrieben und das wars.
Ist doch richitg so.
Zitat von »"physX"«
Hallo, das wird so nicht funktionieren. Du hast doch ShowText() bereits in deinem CFrameWork implementiert. Dann übergib doch cBuffer als argument an ShowText. Natürlich musst du dann ShowText natürlich noch entsprechen umändern.
So musst du nicht hin-und herincluden oder vererben.
C-/C++-Quelltext
1 g_pFramework->ShowText(cBuffer)
gruss
C-/C++-Quelltext |
|
1 2 3 4 5 |
void CFramework::ShowText(char* cText) m_pScoreSurface = TTF_RenderText_Blended(m_pFont, cText, m_Color); und halt per g_pFramework->ShowText(cBuffer) aufgerufen |
C-/C++-Quelltext |
|
1 2 3 4 5 |
//Score auf 0 setzen iScore = 0; //Score in char casten sprintf(cBuffer,"%i" ,iScore); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
void CFramework::ShowText(char *cText) ... std::cout << cText << std::endl; m_pScoreSurface = TTF_RenderText_Blended(m_pFont, cText, m_Color); ... |
Zitat von »"Iljaronaldo"«
Ich habe folgendes geändert:
C-/C++-Quelltext
1 2 void CFramework::ShowText(char* cText) m_pScoreSurface = TTF_RenderText_Blended(m_pFont, cText, m_Color);
Score(der Text) wird angezeigt aber die Punkte nicht.
Müsste alles richitg sein oder?
Zitat von »"physX"«
hmmm, bei mir funktioniert es, so wie du es implementiert hast. Allerdings geb ich den Text bei mir nur auf der Konsole aus.
lass dir mal den Inhalt von cText auf der Konsole ausgeben, dann siehst du ob alles so funktioniert wie es soll bzw. was der Inhalt von cText bei der übergabe ist. Ich glaube aber, du musst bei TTF_RenderText_Blended(...., *cText,...) übergeben.
C-/C++-Quelltext
1 2 3 4 5 6 void CFramework::ShowText(char *cText) ... std::cout << cText << std::endl; m_pScoreSurface = TTF_RenderText_Blended(m_pFont, cText, m_Color); ...
Zitat von »"Iljaronaldo"«
Ich habe folgendes geändert:
C-/C++-Quelltext
1 2 void CFramework::ShowText(char* cText) m_pScoreSurface = TTF_RenderText_Blended(m_pFont, cText, m_Color);
Score(der Text) wird angezeigt aber die Punkte nicht.
Müsste alles richitg sein oder?
Werbeanzeige