Hallo zusammen,
ich möchte ein kleines Spiel schreiben und bin gerade dabei, die entsprechenden Klassen für die einzelnen Einheiten und Individuen zu schreiben (eine Einheit kann mehrere Individuen besitzen). Da ich diese Individuen so "intelligent" wie möglich gestalten will, habe ich mir gedacht, ich lasse sie (die Objekte) u.a. auf Ereignisse reagieren.
Nehmen wir mal an, ein Individuum ist ein Soldat. Dieser soll z.B. innerhalb seiner Einheit laufen können (kein Problem). Wenn jetzt aber Gegner in seiner Reichweite sind, soll er sich anders verhalten, er soll also z.B. auf ein Ereignis "OnEnemyNear" reagieren. Genauso sollen z.B. seine Lebenspunkte reduziert werden, wenn er Schaden erleidet - z.B. mit
Delphi-Quellcode:
procedure OnGetDamage(aEnemy: TUnit, aDmg: Integer).
begin
Hitpoints:=Hitpoints-aDmg;
if HitPoints<0 then
Dead;
If InCombatRange(aEnemy)=true then
Attack(aEnemy)
else
MoveTo(aEnemy);
end;
Wie setze ich so etwas um, dass diese Events überhaupt stattfinden und dann auch die Objekte auf diese reagieren können?
TUnit könnte z.B. eine procedure "DoDamageToUnit(aUnit, aDmg)" besitzen, wie kann aber die empfangende TUnit dieses Event abfragen?
Es geht also darum, wie ich nicht-Systemnachrichten erstellen und darauf reagieren kann.
Gruß Igotcha