Kampfskript oder ähnliches



  • proggaholic schrieb:

    abend,

    Zum Originalquelltext: Den habe ich erst gesehen, als ich schon so 3/4 hatte, da will ich mich jetzt ehrlich gesagt nicht einarbeiten 😉

    Hehe, danke, danke du hast schon genug getan^^
    Ihr sollt mich ja nicht komplett übercoden hier...
    Jetzt habe ich nen guten Ansatz das zusammenschustern mach ich dann noch selber.

    Das der Code noch so ziemlich unsauber ist liegt daran das mir die Erfahrung fehlt, aber sowas braucht ja nunmal seine Zeit. 🙂



  • So, bin nochmal etwas drüber gegangen, und ein paar Sachen habe ich gleich verbessert. Zudem bestand ja nicht wirklich der Anspruch, dass der Pseudo-Code hier am Ende lauffähig oder gar vollständig sein sollte.



  • Ich würde den ganzen aufwand noch mit entweder Polymorhphismus oder instanzen veringern. Warum immer wieder eine Klasse Class Soldat, Class Panzer, etc...

    mache doch

    class Einheit
    {
    stärke;
    verteidigung;
    ...
    }
    
    Einheit panzer;
    Einheit Soldat;
    ...
    


  • Du solltest vieleicht noch eine Funktion implantieren, die es dir erlaubt auf einen Schlag gleich mehrere Einheiten zu bauen und eine weitere, die dir die Entwicklung deiner Einheiten erlaubt, sodass deine Panzer, oder Soldaten stärker werden, bzw. die def steigt.



  • Ich finde deine Idee mit dem Spiel super (warum hab ich eigentlich niemals so etwas gemacht 😕 😃 ). Was dein Kampfskript angeht, so könntest du doch einfach ein bisschen mit den Zahlen "spielen".

    Damit z.B. der Angreifer, mit 1000 Soldaten, den Verteidiger, mit 700 Soldaten, nicht sofort platt macht, könntest du doch "zufällig" bestimmen wieviele Soldaten aufeinmal angreifen. Dafür nimmst du die Funktion rand() die dir eine Zufallszahl zurückgibt. Und damit es nicht irgrendeine Zufallszahl (1234323) ist, benutzt du den Modulo Operator (%) um eine Zahl von 0 bis AnzahlSoldaten zu kriegen

    //ich nehme jetzt mal das Streitkräfte Struct als Beispiel und gehe davon aus das darin die Angriffs- und Verteidigungswerte, sowie die Einheitenanzahl drin steht
    
    void Angriff(Streitkraefte& Angreifer, Streitkraefte& Verteidiger)
    {
       srand( (unsigned)time( NULL ) ); //zufallszahlengenerator initialisieren (gehört einfach dazu)
    
       int AngreifendeEinheiten = rand() % Angreifer.AnzahlSoldaten;   //wenn AnzahlSoldaten = 1000, dann ergibt das eine zufallszahl von 0 - 1000
    
       int Verteidigung = (Verteidiger.AnzahlSoldaten * Verteidiger.SLeben) * 1,2; // 1,2 = +20% Verteidigungsbonus (1,3 wäre dann 30% Bonus usw...)
       int Angriff = AngreifendeEinheiten * Angreifer.SAngriff;
    
       //jetzt kannst du ganz normal die differenz bilden 
       int restLeben = Verteidigung - Angriff;
    
       restleben = restleben * 0,2; //jetzt wieder den Verteidigungsbonus (20%) Abziehen, sonst hättest du im ungünstigsten Fall nach einem Angriff mehr Soldaten übrig als du vorher hattest :)
    
       //damit errechnest du wieviel Soldaten letztendlich den Angriff überlebt haben (Bsp: restLeben = 500, Verteidiger.SLeben = 50; 500 / 50 = 10 Soldaten überlebt)
       int ueberlebnede = restLeben / Verteidiger.SLeben;
    
       //jetzt noch Verteidiger Armee auf den neuen Wert setzen
       Verteidiger.AnhahlSoldaten = ueberlebende;
    }
    

    In der nächsten Runde könnten dann die Verteidiger ebenfalls die Angreifer Angreifen. Und voilá, der Gegner hat Verluste. Man müsste schon mit einer großen Armee angreifen, um zufällig soviel Angriffskraft zu erhalten, damit man den Gegner verlustlos schlägt.

    Achja, denk daran das der Verteidigungsbonus auch für den Angreifer gilt, wenn du die selbe Funktion für den Gegenschlag benutzt (was du tun solltest). Am besten du übergibst irgendwelche boni immer der Angriffsfunktion.



  • Vielen Dank, das klingt sehr interessant.

    mfg
    Last-Boyscout



  • hat jemand auch schon das ganze spiel ^^ würd das gerne ma zocken :PPP



  • Chris++ schrieb:

    restleben = restleben * 0,2; //jetzt wieder den Verteidigungsbonus (20%) Abziehen, sonst hättest du im ungünstigsten Fall nach einem Angriff mehr Soldaten übrig als du vorher hattest :)
    

    Damit ziehst du 80% des restlebens ab.
    MFG



  • wo ist eigentlich der sinn der schleifen?

    Z.B. hat die holzschleife garkein statement drunter, un lässt dann die if anweisung darunter mehrmals durchlaufen, die wiederrum eine schleife hat, die garnichts macht auser einen wert auf merkwürdige weise zu erhöhen.



  • Es wäre sinnvoller, sich zuerst in Klassen einzuarbeiten, dafür lernst du ja schließlich C++. Glaube mir, danach wirst du den Code viel besser verstehen. Außerdem ist das prozedurale Gedings wirklich nicht nötig. So lernst du nicht grad viel dazu.

    MfG


Anmelden zum Antworten