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...)


  • Mod

    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.


  • Mod

    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


  • Mod

    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();


Anmelden zum Antworten