Ich stelle die Frage sehr spezifisch damit man versteht, was ich meine.
Ich programmiere grade ein Spiel und bin noch ziemlicher Anfänger im programmieren. In diesem Spiel kann man unter anderem auch gegen Monster kämpfen. Um zu berechnen wie viel Schaden der Spieler dem Monster macht gibt es eine Variable, welche aus verschiedenen Sachen berechnet werden. Vor einem Kampf wird diese Variable*Bonusschaden gerechnet. Dieser Bonusschaden ist standartmäßig 1. Also quasi bleibt der Schaden gleich. Wie schaffe ich es, dass dieser Bonusschaden für genau eine Stunde 2 beträgt? Das würde dann passieren in dem man sich z.B. einen Trank des Schadens oder so ähnlich kauft, der bewirken soll das sich der Schaden in diesem Zeitraum verdoppelt. Wie die Rechnung gemacht werden muss versteh ich natürlich, aber wie ich für genau eine Stunde diesen Wert auf 2 erhöhe und er danach wieder auf 1 runterfällt, aber man trotzdem gleichzeitig andere Sachen tun kann leider nicht. Das ganze Spiel ist in einer dauerhaften while Schleife und wenn man einen Befehl eingibt, je nach dem was man tun will, versteht er mit if-elif befehlen, was der Spieler tun möchte. Ich hoffe ich hab meinen Code ausreichend erklärt.
Variable ändert sich automatisch nach bestimmer Zeit
Besser ist immer den Code zu zeigen. Ohne den zu sehen, kann man immer nur so mittelgut helfen.
Ein Weg sowas zu machen besteht in der Anlage einer Eigenschaft des Spielers, die nicht nur aus dem von dir besprochenen Faktor besteht. Sondern auch aus einer zweiten Größe, nämlich einem Verfallsdatum. Wenn man also zuschlägt, prüft man, ob der Boost noch gültig ist, und nur dann gilt er.
Man kann das auf verschiedene Arten modellieren. Zb kann dein Spieler eine Liste von aktivierten Tränken haben, und bei der Schadensberechnung läufst du da durch, und sammelst diese Faktoren auf. Und danach gibt es eine Phase, in der du prüfst, ob diese Tränke noch wirken. Wenn nicht, schmeißt du sie aus der Liste.
Ein Weg sowas zu machen besteht in der Anlage einer Eigenschaft des Spielers, die nicht nur aus dem von dir besprochenen Faktor besteht. Sondern auch aus einer zweiten Größe, nämlich einem Verfallsdatum. Wenn man also zuschlägt, prüft man, ob der Boost noch gültig ist, und nur dann gilt er.
Man kann das auf verschiedene Arten modellieren. Zb kann dein Spieler eine Liste von aktivierten Tränken haben, und bei der Schadensberechnung läufst du da durch, und sammelst diese Faktoren auf. Und danach gibt es eine Phase, in der du prüfst, ob diese Tränke noch wirken. Wenn nicht, schmeißt du sie aus der Liste.