Anfängerfrage: Angriff
-
Hallo,
ivh wollte in einem Strategiespiel eine Angriffsfunktion für eine Klasse erstellen.
class human_Warrior { private: int dmg; int strengh; int armor; int HP; int frequenz; public: attack(); } human_Warrior::attack(opponent) { int all; all = strengh - opponent::arnor; all += dmg; opponent::HP -= all; }
Welchen Dateitype soll opponent haben?
thx
Glamdring
-
Die Klasse dessen den er angreift
-
Muss das so sein oder aknn man auch eine Klasse benutzen, von der der Angegriffene erbt?Denn ich hab 4 Rassen mit je ca. 20 Klassen.
Das würde bedeuten, dass ich pro Krieger 79 Funktionen für Angriffe gegen div. Gegner programmieren.Gruß
Glamdring
-
Wenn die Variable armor bereits im Elternobjekt steckt dann kannst du
auch die Elternklasse nehmen.
-
Glamdring schrieb:
Muss das so sein oder aknn man auch eine Klasse benutzen, von der der Angegriffene erbt?
Ginge wohl auch aber schreib doch einfach eine Template-Funktion! (Nicht vergessen: Für opponent::armor etc. wirst Du typename brauchen...)
-
bei sowat würde DataDriven Design helfen denk ich mir
dann brauchst du nur eine klasse und speicherst dort nur unterschiedliche werte ab, z.B. die die du da schon deklariert hast, zudem vielleicht ein enum für rasse und einheitentyp. denn wenn die ganzen einheiten sich nicht durch funktionalität unterscheiden sondern nur durch eigenschaften, dann braucht man nicht ableiten nur um dann die selbe funktion zu schreiben in der unterschiedliche daten verarbeitet werden.
und wenn du z.B. ne einheit hast die nur steht, dann mußt du ihre geschwindigkeit auf 0 setzen. hast du sachen wie z.B. einen baum, der nicht angreift, dann setzt du seine wiederaufladezeit auf unendlich u.s.w.
rapso->greets();
ps. das schöne bei sowat kann sein, dass du nur eine neue configdatei für eine neue einheit erstellst, und schon hast du sie drinne im spiel, ohne eine einzige zeile code einfügen zu müssen.... desing also alles richtig
-
@rapso: Hört sich so an, als wenn du auch Gameprogramming Gems gelesen hättest
Spart zumindest eine Menge neu compilen.
-
SnorreDev schrieb:
@rapso: Hört sich so an, als wenn du auch Gameprogramming Gems gelesen hättest
Spart zumindest eine Menge neu compilen.wieso? hab ich was zitiert ohne es zu wissen?
hab ich net gelesen, nur durchgeblättert, steht ja meißt nix neues drinn
rapso->greets();
-
Stimmt schon - meist steht nix neues drin. Obwohl Gameprogramming Gems zu den seltenen Büchern gehören, die ich als empfehlenswert zählen würde.
Ich muß mir mal Teil 3 zulegen. Weil mich Dot3 Bump doch auf einige Mathematische Defizite hingewiesen hat. ( Über eine Woche um es einigermaßen mit dem Tangent Space zu begreifen *urgs* )
Aber du hast schon so ungefähr das gesagt, was drin steht.
P.S. kannst du mir ein Mathebuch für sowas empfehlen? Also advanced, aber für Programmierer verständlich. Die meisten Bücher sind einfach unverständlich, wie z.B. Mathematische Physik
-
auch wenn es OT ist
aber ok, eigentlich kenne ich keines das mehr beschreibt als das nötigste um es abschreiben zu können und den effekt zu sehen..
aber in:
Direct3D Shaderx: Vertex and Pixel Shader Tips and Tricks
sind einige mathematische finessen drinne, z.B. quantitisierte meshes mittels einer zusätzlichen matrix im shader quasi "for free" zu "entpacken"... da sind die ganzen anderen schönen dinge auch.
also genug mathe an sich + praktische anwendungen.rapso->greets();