Auch wenn der gute drakon dir den Fehler gezeigt hat, möchte ich dir jedoch meinen Code nicht vorenthalten. Ich habe den etwas klarer Strukturiert, damit er nicht mehr so "wirr" aussieht.
Hier erstmal die zip, die Quelltext, Beispiel und eine Projektdatei für VS2008 enthält: http://trash.germangamedev.de/erschaffer_game.zip
Es gibt insgesammt 3 paar Dateien:
common.cpp/.hpp
Hier sind alle notwendigen Includes enthalten und ein kleines template-Makro für die Benutzereingabe. Dieses Makro wird sicherlich derzeit dein Verständnis weit übersteigen, doch es ist ganz hilfreich. Du kannst bei diesem Makro einen Text übergeben, der angezeigt werden soll, bevor der Benutzer einen Wert eingibt. Das Makro prüft auch ob die Eingabe korrekt ist, also wenn du eine Zahl haben möchtest, er jedoch einen String eingibt, das er solange neue Werte eingeben muss, bis der Wert eine Zahl ist.
Dieses Dateipaar ist, wie der Name schon sagt, für allen generellen Kram. Also ein globaler Header/Source sozusagen, oft recht hilfreich.
field.cpp/.hpp
Deine CField-Klasse, nur ich nenne sie field. Ich mag das C nicht
Hier ist einmal ein Konstruktor enthalten, ein Kopie-Konstruktor und ein Destruktor, sowie die Funktion zum zeichnen eines Spielfelds.
Die Abmessungen des Spielfelds werden am Konstruktor übergeben und gesichert, die Werte sind "unsigned", dass bedeutet, dass nur positive Werte übergeben werden können. Ein Spielfeld von -20x40 hab ich noch nicht gesehen
main.cpp/.hpp
Dies ist die Hauptklasse und Heimat der "main"-Funktion. In dieser Klasse ist einmal das Hauptmenü, die Initialisierung deines Spielfelds und eine kleine Info.
Ich denke der Quelltext der 6 Dateien ist gut kommentiert und du wirst einige Zeit haben bis du alles verstehst, aber so kannst du sehen, wie man etwas schön aufteilt und wie man Quelltext übersichtlich formatiert.
so long!
- unsigned long