Logikproblem bei rückkopplung
-
Hallo!
Weiß nicht genau ob es hierhin passt, aber ich schreibe ein Programm in c++, deshalb poste ich hier.
Ich habe eine Einheit die auf eine andere Einschlägt, beide Einheiten haben die Eigenschaft "50% des erlittene Schadens reflektieren". Nun wollte ich das ganze über eine Feedback() Klasse lösen
Feedbacks = Unit1.Hit(Unit2); while(Feedbacks.Count()) { Feedbacks = Unit2.Resolve(Unit1); while(FeedBacks.Count()) { Feedbacks = Unit1.Resolve(Unit2); //... } }nun kommt aber das Problem, dass die Schadensreflektion beliebig häufig hin- und her springt sich dabei jedesmal halbiert aber nie 0 wird(Theoretisch).
Wie würdet ihr das lösen? Ich möchte schon das "Feedbacks" weitere Feedbacks auslösen.
-
Wie die technische Lösung aussieht, das richtet sich danach, wie deine Logik aussehen soll. Ich habe den Eindruck, dir ist das im Moment selber nicht klar:
- Ist es wichtig, in welcher Reihenfolge wer wie viel Schaden nimmt, oder reicht es zu wissen, wer wie viel Schaden genommen hat? (Denk dran: Die geometrische Reihe konvergiert)
- Gibt es denn keine Untergrenze für den möglichen Schaden, wie zum Beispiel 1? Falls Schaden wirklich in beliebig kleinen Portionen vorkommen kann und diese Portionen alle exakt berechnet werden müssen, wirst du ganz schnell an technische Grenzen kommen.
-
Üblicherweise führt man die Regel "reflektierter Schaden kann nicht reflektiert werden" ein. Ansonsten lässt sich wie SeppJ schon sagte für geometrische Reihen sehr einfach ein Grenzwert berechnen. Tricky wird es dann, wenn eine der beiden Einheiten zwischendrin stirbt, wieviel dann die andere bekommt. Und wenn der reflektierte Schaden dann AOE ist und 3 oder mehr Einheiten beteiligt sind, die teilweise weg sterben ...