Autor Beitrag
YinYang
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 06.11.05 13:26 
Ich verzweifele gerade daran, dass mein schöner Algorithmus daran scheitert, dass ein Gleichungssystem keine sinnvollen Lösungen zurückgibt.

Folgendes: es ging in meinem Programm darum, dass ich für ein RPG-Kampfsystem einen Schadens-Algorithmus haben wollte. Dieser sollte folgende Form haben:

SCHADEN = ANGRIFF/VERTEIDIGUNG * 3/5 * KONSTANTER_WERT_1 + ANGRIFF * KONSTANTER_WERT_2

Also es soll die Differenz aus Angrifswert des Angreifers und Verteidigungswert des Angegriffenen gebildet werden, dies mal einen konstanten Wert wie etwa 50 multipliziert werden, und dann das ganze noch zu dem Produkt aus Angriff und einen anderen konstanten Wert addiert werden.

So sollte am Ende ein Schadenswert rauskommen, wo Angrifswert und Verteidigugnswert eine Rolle spielen, jedoch auch bei riesigen Verteidigungswerten ein angemessener Schaden ausgeteilt wird.

Jetzt hatte ich keinen Peil, wie groß die beiden konstanten Werte sein sollen, dass am Ende ein sinnvoller Schaden entsteht; deswegen wollte ich es so machen, dass ich mir eine Tabelle aufgestellt habe, bei welchem Angriffs- und welchem Verteidigungswert welcher Schaden ausgeteilt wird, sodass ich beim Einsetzen in die Allgemeinform' ganz viele Gleichungen habe, wo nur noch WERT1 und WERT2 vorkommen. Diese Gleichungen wollte ich auf alle möglichen Arten kombinieren, sodass sich viele viele Gleichungssysteme entwickeln, die viele mögliche Werte für WERT1 und WERT2 errechnen, aus denen ich dann das arithmetische Mittel bestimmen wollte.

Jetzt zu meinem Problem, was ich anhand eines Beispiels erläuetrn möchte:
Folgende Werte:
Stärke: 20, Vert.: 15, Schaden: 70
Stärke: 50, Vert.: 45, Schaden: 650

Macht folgend Gleichungen:
60/75 * WERT1 + 20*WERT2 = 70;
150/225 * Wert1 + 50*Wert2 = 650

beides aufgelöst anch Wert 2 ergibt
Wert2 = 7/2-1/25*Wert1
Wert2 = 13-1/75*Wert1

und wenn ich das nun gleichsetze und nach Wert1 auflöse, kommt eine negative Zahl in Höhe von -356,25 raus...sowohl im Programm, als auch im Per-hand-Rechnen.
Nun kann natürlich im Battle-Script keine negative Zahl möglich sein, da Schadenswerte ja immer positiv sein müssen.
Wo ist der Fehler? ist es ne mathematisch falsche Umformung, oder ein logischer Denkfehler? :(
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mo 07.11.05 14:35 
Hallo,

was ist denn an der Rechnug falsch? Nichts.
Wenn Du deine Zahlen einsetzt wird die Gleichung doch geloest.
SCHADEN = ANGRIFF/VERTEIDIGUNG * 3/5 * KONSTANTER_WERT_1 + ANGRIFF * KONSTANTER_WERT_2
den Wert 3/5 kannst Du ja in den konstanten Wert1 packen.
SCHADEN = ANGRIFF*((3/5 * KONSTANTER_WERT_1)/VERTEIDIGUNG +KONSTANTER_WERT_2)

Du musst Dir doch mal die Randbedingungen anschauen.
Angriff = 0 ->Schaden = 0 passt ja
wie soll es aber bei Kraeftegleichheit aussehen? und wie gross ist der maximale Schaden.

Wie waere also eine relativer Ansatz: r=A/(A+V) damit ist r von 0 bis 1 moeglich.

Gruss Horst