das ist auch schon die Frage: Was ist ein Orchestrator und wofür braucht man ihn? Leider kann ich keine näheren Angaben zur Verwendung angeben, da ich eben nichts darüber weiß.
Unten füge ich einfach mal den Ausschnitt des betreffenden Codes an, den ich gerne verstehen möchte. Inwiefern dieser hilfreich ist, weiß ich leider nicht. Aber vielleicht
kann mir ja jemand eine allgemeine Erklärung von Orchestratoren geben, da ich leider nichts hilfreiches im Internet dazu gefunden habe.
PS: Es handelt sich hierbei um ein SpaceInvaders Spiel, genauer gesagt ist es der Deklarationsteil der Unit, in welcher die Gegner(Aliens) implementiert werden.
Danke im Voraus!
Code: Alles auswählen
unit Aliens;
interface
uses
Controls, ExtCtrls, Classes, Settings, Missiles, Graphics,
Windows, Explosions, GR32_Image, GR32;
type
TAlienSpecie = (asAlpha, asBeta, asGamma);
TAlienDirection = (adLeft, adRight);
TAlienOrchestrator = class;
TAlien = class
private
_Frame : Integer;
_MissileOrchestrator : TMissileOrchestrator;
_AlienOrchestrator : TAlienOrchestrator;
_ExplosionOrchestrator : TExplosionOrchestrator;
_Specie : TAlienSpecie;
procedure FlipDirection;
procedure Descend;
procedure _SetSpecie(const Value: TAlienSpecie);
function GetHeight: Integer;
function GetWidth: Integer;
protected
procedure Paint;
public
Top : Integer;
Left : Integer;
Visible : Boolean;
Owner : TBitmap32;
GraphicContext : TBitmap32;
Picture : TBitmap32;
Direction : TAlienDirection;
constructor Create(AOwner: TBitmap32);
destructor Destroy; override;
property Specie : TAlienSpecie read _Specie write _SetSpecie;
property Width : Integer read GetWidth;
property Height : Integer read GetHeight;
procedure UpdateMotion;
procedure ShootMissile;
procedure Die;
end;
TAlienMap = Array[1..11,1..5] of TAlien;
TAlienOrchestrator = class
private
_ThresholdCount : Integer;
_Map2D : TAlienMap;
_MissileOrchestrator : TMissileOrchestrator;
_ExplosionOrchestrator : TExplosionOrchestrator;
_AccelerateX : Double;
_AccelerateY : Double;
_FlipFlop : Boolean;
_Engine : TObject;
function GetAlienCount: Integer;
procedure _UpdateFlipFlop;
public
constructor Create(Engine : TObject);
destructor Destroy; override;
property Map2D : TAlienMap read _Map2D write _Map2D;
property MissileOrchestrator : TMissileOrchestrator read _MissileOrchestrator write _MissileOrchestrator;
property ExplosionOrchestrator : TExplosionOrchestrator read _ExplosionOrchestrator write _ExplosionOrchestrator;
procedure Accelerate;
procedure Init(AOwner : TBitmap32);
procedure Update;
procedure Paint;
procedure DetectAnomalies;
property Count : Integer read GetAlienCount;
end;