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

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

11

16.07.2009, 16:35

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.


Ahh.Danke.
Man findet hier auch wirklich jede Antwort.


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);
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

physX

Treue Seele

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

12

16.07.2009, 17:36

wenn CGame eine Instanz deiner Klasse ist und cBuffer wirklich ein membervariable (public?) von CGame dann sollte es prinzipiell gehen.
ansonsten poste mal die wesentlichen codeteile.
gruss


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);

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

13

16.07.2009, 17:51

Zitat von »"physX"«

wenn CGame eine Instanz deiner Klasse ist

Wie meinst du das?
Verstehe ich nicht.

Wenn eine Instanz in meiner Klasse(also CFramework) von CGame erzeugt wurde, die CGame heißt? so?
Es wird nur einml die Instanz von CGame erzeugt und nur in der main.
Ich dachte jetzt eher, dass ich mit CGame meine Klasse meine, die eine Variable namens cBuffer besitzt.

Zitat

ist cBuffer wirklich ein membervariable (public?) von CGame

Ja, ist ne Membervariable und ist public

Zitat

ansonsten poste mal die wesentlichen codeteile

Denke das ist nciht nötig.

Ich dachte ich sollte es so machen, dass ich CFramework von CGame erben lasse undzwar nur cBuffer(protected).
Jedoch wenn ich das mache, dann bekomme ich ein haufen Fehler:


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 ===|


Der Code ist sehr verschachtelt.Bei Bedarf kann ich mal kommplett alles hierhin posten.

Danke.
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

14

16.07.2009, 17:55

bevor du hier alles hinpostest benutz lieber http://www.pasteall.org/
Metal ist keine Musik sondern eine Religion.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

15

16.07.2009, 17:59

Für mich sehen die Fehler so aus, als habest du vergessen gewisse Header einzubinden.

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

16

16.07.2009, 18:09

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.
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

physX

Treue Seele

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

17

16.07.2009, 18:55

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


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.

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

18

16.07.2009, 19:17

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

So ich habe es mal umgeändert alles läuft Fehlerfrei aber jedoch wird der Punktestand trotzdem nicht angezeigt.
Ich habe folgendes geändert:

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

Score(der Text) wird angezeigt aber die Punkte nicht.
Gecastet habe cih doch richtig oder?
Und dann den Inhalt von cBuffer dazu verwendet um die aktuellen Punkte auszugeben

C-/C++-Quelltext

1
2
3
4
5
//Score auf 0 setzen

  iScore = 0;

  //Score in char casten

  sprintf(cBuffer,"%i" ,iScore);


Müsste alles richitg sein oder?
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

physX

Treue Seele

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

19

16.07.2009, 19:51

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?

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

20

16.07.2009, 20:20

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?

So ich habe es davor nur ciht bemerkt, wiel ich mich erstmal nciht auf die Koordinaten konzentriert habe.

Da wird jetzt immer 0 angezeigt.


Edit:

ES FUNZT :) :) :)

War ja auch logisch, dass es immernull ist, da ich ja erst in char caste und dann erst 100 draufzähle gehört aber genau andersrum ;)

Es ibt aber noch ein kleines Problem:
Vor dem ersten Schuss wird als Punkte keine 0 angezeigt sonder, 2 kleine Virecke und ein " dahinter.Woran liegt das?
Da habe ich jetzt ekine Antwort für?

EDIT:
ok, Problem gelöst:
einfach bei der Zuweisung iScore = 0; den Score in char casten und dann nochmal bei der Kollision dasselbe.


Ich wollte jetzt nocheinmal allen danken, die mir geholfen haben.
Ohne euch hätte cih es nie geschafft!:)
Danke nochmal
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

Werbeanzeige