C++ wie kann ich Variablen in eine andere Klasse verschieben?
Ich programmiere gerade ein Text-Spiel, bei dem man eine Zahl eingeben muss, damit man entweder angreifen und das Leben des Gegners senkt oder seine eigene Kraft erhöht. Danach soll der Gegner auch mithilfe einer KI seine Kraft erhöhen oder das Leben des Spielers senken. Das geht so lange weiter, bis jemand kein Leben mehr hat. Jetzt habe ich aber das Problem, dass ich vom Spieler und von der main-Funktion keinen Zugriff auf das Leben des Gegners habe und umgekehrt. Und wo soll ich die Objekte definieren? Soll ich sie in jeder Funktion definieren, in der ich sie brauche oder nur am Ende von der entsprechenden Header-Datei? Bitte helft mir. Ich weiß, dass ich dafür nicht mal Klassen bräuchte, sondern alles nur als Funktionen in der Main-Datei schreiben könnte, aber ich will den Umgang mit mehreren Dateien und Klassen üben.





3 Antworten
Ich würde für Spieler und Gegner eine gemeinsame Klasse anlegen, denn der Gegner ist ja auch ein Spieler, wenn auch virtuell, zB Ki-gesteuert.
Darin legst du eine public Funktion bzw Methode an, zb wirdangegriffen( int Stärke). Diese rufst du nun in main oder einer anderen Klasse (zb Kampf) auf mit Gegner -> wirdangegriffen(15); .
Wie der Gegner darauf reagiert (abzug der Lebenspunkte usw), wird innerhalb der Klasse in der Funktion wirdangegriffen bearbeitet.
Du kannst für jede Klasse sogenannte getter und setter verwenden. Bei get() gibst du die gewünschte Variable zurück und bei set() brauchst du einen Parameter, der dann die entsprechende Variable auf den wert des Parameters setzt.
Hope it helps :D
Wenn man von den Klassen erben soll sind die Getter und Setter allerdings absolut zwingend.
Wenn du virtuelle Variablen von Objekten von der main aus manipulieren willst,
dann hast du OOP nicht verstanden.
Und ich glaube die Konvention, dass man Variablennamen niemals groß schreibt, gilt auch in C++.
wenn die setter und getter nicht mehr machen sind die überflüssig. und für einen absoluten anfänger nur verwirrend. es gibt ein religöse sekte die verbietet direkt auf public attribute zuzugreifen. die diskussion ersparen wir uns.