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!
Warst du nie übermütig und hast mal was übersprungen?
Falls ich das getan habe, dann habe ich selbst gemerkt, dass es ein Fehler war.
Es wirkt halt so als würde er denken "Ich brauch ja nicht selbst lernen wenn die Frage sowieso im Forum beantwortet wird.".
"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?
Kommst du vielleicht aus Japan und liest das Buch ausversehen von Hinten nach Vorn?
Du weißt, dass unter anderem wegen solchen Aussagen unser Forum gern als unfreundlich und herablass...
Naja wenn man gerade erst mit Programmieren anfängt kann man durchaus etwas mal falsch verstehen oder vergessen. Auch wenn man das entsprechende Kapitel gelesen hat.
PS: 1. Ich habe das ganze buch von vorne bis hinten durchgelesen
2. Ich habe mir Stunden lang andere Bücher und Intenetseiten durchgelesen und nichts brauchbares gefunden
Es wirkt halt so als würde er denken "Ich brauch ja nicht selbst lernen wenn die Frage sowieso im Forum beantwortet wird.".
Man braucht nie irgendwas zu fragen, weil alles irgendwo in Büchern steht, aber mit Fragen geht es nunmal schneller und man versteht mehr. Auf mich machte es nicht den Eindruck einer unverschämten Frage, sondern eher den Eindruck einer Anfängerfrage (an die sich dieses Forum nunmal richtet).
Zur Frage: In der CGame::Init, woher sollen da die Werte für fXPos und fYPos kommen? Du scheinst die Variable nie angelegt zu haben. Möglich wäre sowas:
C-/C++-Quelltext
1
2
3
4
5
6
7
void CGame::Init ()
{
// Neuen Spieler initialisieren
m_pPlayer =new CPlayer;
m_pPlayer->Init (50.0f, 43.0f);
m_pPlayer->Reset ();
...
Oder sowas:
C-/C++-Quelltext
1
2
3
4
5
6
7
void CGame::Init (float PlayerStartX, float PlayerStartY)
{
// Neuen Spieler initialisieren
m_pPlayer =new CPlayer;
m_pPlayer->Init (PlayerStartX, PlayerStartY);
m_pPlayer->Reset ();
...
Oder auch:
C-/C++-Quelltext
1
2
3
4
5
6
7
8
void CGame::Init ()
{
// Neuen Spieler initialisieren
m_pPlayer =new CPlayer;
float StartX=50.0f, StartY=43.0f;
m_pPlayer->Init (StartX, StartY);
m_pPlayer->Reset ();
...
Naja wenn man gerade erst mit Programmieren anfängt kann man durchaus etwas mal falsch verstehen oder vergessen. Auch wenn man das entsprechende Kapitel gelesen hat.
Aber nicht wenn man die Kapitel durchgearbeitet hat.
Naja, ich hab wohl etwas überreagiert.
@Fanto: Geh nochmal das ganze Buch durch und schreibe zu jedem Thema mindestens eine Übungsprogramm. Dann dürften solche Probleme nicht mehr auftreten.
"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?
der Compiler fragt wo fXPos und fYPos überhaupt deklariert sein sollen.
Er weiß weder was das für Variablen sind, noch welche Werte drin stehen
sollen. Du kannst ja nicht Variablen verwenden, die nirgends angelegt
(deklariert) wurden, und vor allem: die nirgends definiert wurden. Das
heißt sie haben an keiner Stelle Werte zugewiesen bekommen. Also kann
der Compiler sie nicht verwenden. Diese einfachste aller Grundlagen
müsste ganz am Anfang des Buches stehen. Du hast übrigens in deiner
letzter Version des Codes versucht, die Variablen im Funktionsaufruf zu
deklarieren, was nicht zulässig ist. Sie müssen vorher bekannt sein. Und
damit dein Programm auch was sinnvolles tut musst du den Variablen auch
vorher Werte zuweisen. Nur mit diesen Werten macht ja der
Funktionsaufruf überhaupt erst Sinn, weil die Funktion diese Werte
benötigt.
Durch den aufruf: player->init ( ypos, xpos) über gibts du der Funktion Init der Klasse player 2 Variablen.
Und zwar einmal die Variable xPos und einmal yPos.
Doch diese zwei Variablen hast du nicht deklariert. Das bedeutet, dass sie für den Vompiler nicht excestieren.
Du musst also anstatt diese zwei Variablen die richtige Position auf dem bildschirm angeben.
Zum beschpiel schreibst du: player->init (100,100)
dan sollte der Spieler bei Spielstart auf der Position 100, 100 starten.
[wenn etwas falsch Formatiert ist tut es mir leid. Sitze gerade in der Mittagspause und schreibe vom Handy]
Bestes Zitat aus einem Quellcode
C-/C++-Quelltext
1
2
3
4
5
6
7
8
/**
Once you are done trying to ‘optimize’ this routine,
and have realized what a terrible mistake that was,
please increment the following counter as a warning
to the next guy:
total_hours_wasted_here = 11
*/