004
20.01.2016, 00:18 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat: |
Ich lese das Buch "Der C++ Programmierer von Ulrich Breymann,
|
das Buch ist gut, damit machst du nichts falsch. Das hab ich auch.
Was die Sache mit den Klassen angeht: Es ist so, dass die Klassen als Hilfsmittel dienen sollen, um von bestimmten Gegenständen zu abstrahieren. Aber Du brauchst immer noch ein Hauptprogramm, das diese Klassen verwendet, also damit arbeitet. In Deinem Beispiel, Mensch und Monster, ist es dann die Aufgabe Deines Hauptprogramms, die Elementfunktionen (oder Methoden) der Klassen nacheinander aufzurufen. Nehmen wir mal an, Du steuerst Dein Spiel über die Tastatur, wobei damit der Mensch gesteuert wird, der gegen das Monster kämpft. Dazu definierst Du z.B., dass bestimmte Tasten mit bestimmten Aktionen verbunden sind. Zum Beispiel "t" für "treten" und "s" für "schlagen". Dann muss das Hauptprogramm die Tastatur abfragen und auswerten. Wenn also etwa die Taste "t" gedrückt wurde, dann ruft das Hauptprogramm eine Funktion der Klasse Mensch auf, die für die Aktion "treten" zuständig ist. Die Funktion innerhalb der Klasse überprüft dann beispielsweise, ob der Mensch Kampfstiefel mit Stahlkappen trägt oder nicht, und führt den Tritt aus, indem sie einen Statuswert zurück gibt, der aussagt, wieviel Schaden der Tritt verursacht, wenn er trift. Mit diesem Wert ruft das Hauptprogramm anschliessend eine Funktion der Klasse Monster auf, die überprüft, ob der Tritt tatsächlich soviel Schaden angerichtet hat. Evtl. stand der Mensch ja nicht nah genug dran oder das Monster ist ausgewichen. Jenachdem, was Du da definiert hast, gibt die Funktion einen Wert zurück, der dem Hauptprogramm mitteilt, ob tatsächlich soviel Schaden angerichtet wurde, wie erwartet, oder weniger. Mit dieser Information berechnet das Hauptprogramm dann die Anzeige für die Lebenskraft des Monsters neu und aktualisiert sie. Dann ist das Monster am Zug, um auf den Tritt zu reagieren. Das passiert, indem das Hauptprogramm eine Elementfunktion der Klasse Monster aufruft, die für die Steuerung des Selben zuständig ist. Die liefert einen Wert zurück, der angibt, was das Monster gemacht hat. Diesen Wert reicht es an eine Funktion der Klasse Mensch weiter, die auswertet, was die Aktion bei ihm bewirkt hat. Diese gibt dann wiederum einen Wert an das Hauptprogramm zurück, das damit die Lebenskraft des Menschen neu berechnet und anzeigt. Dann ist wieder der Spieler am Zug, d.h. die Tastatur wird erneut ausgewertet, um festzustellen, was der Spieler als nächstes tun will.
So ungefähr könnte ein System bzw. eine Logik aussehen, die hinter dem ganzen sitzt, bzw. eigentlich darüber steht, weil die Klassen ja nur "Dienstleister" innerhalb des Spiels sind, die die jeweilige Figur und ihre Eigenschaften (Fähigkeiten) repräsentieren. Weitere Klassen können dann weitere, neue Figuren darstellen. Die haben dann alle ihre eigenen Elementfuktionen, mit denen sie Auskunft über ihre internen Zustände geben, bzw. womit die internen Zustände verändert werden. (Die können auch von einer Basisklasse abgeleitet sein, die alle Eigenschaften definiert, die jedes Monster immer hat. Davon abgeleitete Klassen spezifizieren ein Monster dann genauer.) Die internen Zustände der Klassen sind jedoch in den private-Variablen abgelegt. Die können deshalb für jedes Monster anders sein. Das ist dann wichtig, wenn mehrere Monster in Aktion treten sollen. Wichtig ist dabei, dass das Interface, mit dem das Hauptprogramm die einzelnen Elementfunktionen aufruft, so gestaltet ist, das die Aufrufe weitgehend ähnlich sind, und es lediglich von den Parametern abhängt, was passiert, bzw. passieren soll.
Ich glaube für den Anfang ist es am einfachsten, wenn Du nur festlegst, das ein Monster soundsoviele Treffer einstecken kann, etwa durch einen Zähler der auf Null herunter zählt. Wenn der Zähler bei Null angekommen ist, ist das Monster tot. Die Elementfunktion prüft dann lediglich, ob das Monster getroffen wurde oder nicht. Wenn ja zählt sie den Zähler runter, wenn nicht, dann behält er seinen aktuellen Stand.
Soweit mal das, wobei ich hoffe, dass ich ich jetzt nicht zu sehr verwirrt habe.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |