Formel aufstellen

  • moin^^
    wollte mal fragen ob man da eine formel aufstellen kann..

    am anfang hab ich noch keinen wert x (der später jedoch 80 ist)
    den bekomm ich erst am schluss

    gegner 1: 25 rüstung, 105 schild, 303 angriff
    spieler 1: 75 rüstung, 33 schild, 298 angriff, verteidigung 162

    spieler 1 verliert bei diesem kampf 80 rüstung(zuerst wird schild abgezogen, danach rüstung)

    bei der verteidigung ist es so: hat der gegner eine gleiche oder niedrigere angriffstärke wie verteidigungsstärke vom spieler dann zieht es dem spieler nur 1 rüstung ab, wenn die rüstung+schild vom gegner geringer sind als die angriff vom spieler.

    beispiel: Npc 300 angriff
    spieler 200verteidigung

    so verliert der spieler EIGENTLICH 100 rüstung.. doch nun ist es so, dass wenn man mehr angriff hat als der gegner dann verliert man nicht 100 rüstung sondern manchmal auch nur 70 oder so.

    doch wie komme ich auf so eine formel? kann mir da jemand weiterhelfen?

  • Keine Ahnung was du da für eine Formel haben willst, ist ja auch schon spät.
    Ich würd mich da einfach durch eine Verzweigung aus IF Bedingungen hangeln.
    In etwa so:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $aSpieler1[5][2] = [["Name","Spieler1"],["Rüstung",100],["Schild",105],["Angriff", 303],["Verteidigung",124]]
    Dim $aSpieler2[5][2] = [["Name","Spieler2"],["Rüstung",75],["Schild",33],["Angriff",124],["Verteidigung",100]]

    [/autoit] [autoit][/autoit] [autoit]

    $aSpieler2 = _angriff($aSpieler1, $aSpieler2)

    [/autoit] [autoit][/autoit] [autoit]

    Func _angriff($aktiv,$passiv)
    If $passiv[4][1] = $aktiv[3][1] Then ;wenn Verteidigung == Angriff
    $passiv[4][1] = 0 ;Verteidigung = 0
    Return $passiv ;Angriff beendet
    ElseIf $passiv[4][1] > $Aktiv[3][1] Then ;wenn Verteidigung > Angriff
    $passiv[4][1] -= $aktiv[3][1] ;Verteidigung = Verteidigung - Angriff
    Return $passiv ;Angriff beendet
    ElseIf $passiv[4][1] < $aktiv[3][1] Then ;wenn Verteidigung kleiner als Angriff
    $rest = $aktiv[3][1] - $passiv[4][1] ;Überschuss an Angriffspunkten errechnen
    $passiv[4][1] = 0 ;Verteidigung auf 0 setzen
    If $passiv[2][1] > $rest Then ;wenn Schild > Rest
    $passiv[2][1] -= $rest ;Schild = Schild - Rest
    Return $passiv ;Angriff beendet
    ElseIf ... ;wenn Schild = Rest
    ... ;Schild = 0
    ... ;Angriff beendet
    ElseIf ... ;wenn Schild < Rest
    ... ;Rest = Schild - Rest
    ... ;Schild = 0
    If $passiv[1][1] > $rest Then ;wenn Rüstung > Rest
    ... ;Rüstung = Rüstung - Rest
    ... ;Angriff beendet
    ElseIf ... ;Rüstung = Rest
    ...
    ...
    ...
    ...
    ...
    ...
    EndIf
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Mit etwas Liebe könnte man das ganze auch noch verkürzen aber das geht grad garnicht :sleeping:

  • ich denke er möchte ein eigenes Spiel proggen und braucht dafür eine Formel ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)