Einzelnen Beitrag anzeigen

Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#45

Re: UT2D - 2D-Shooter mit UTStyle

  Alt 20. Feb 2008, 16:01
Uff das wird hart.


Ich habe nun vor, die ganze Steuerung des Spiels in Objekte zu gliedern.

D.h. dass ich fast den kompletten Code aus einzelnen Abschnitten in wenige
Objekte und Prozeduren zusammenfassen muss.

Hier mal ein Beispiel, wass alles "ausgelagert werden soll:
Delphi-Quellcode:

  TGameEngine = class;

  TGameMode = class
    Owner: TGameEngine;
  public
    constructor Create(AOwner : TGameEngine);
    procedure PreMove ; virtual;
    procedure AfterMove ; virtual;
    procedure AfterDraw ; virtual;
    procedure PlayerMove(APlayer: TPlayer ); virtual;
    procedure Bot (APlayer: TPlayer ); virtual;
    procedure LoadLevel (Options: TGameOptions ); virtual;
  end;

  TCTFGame = class (TGameMode)
  public
    procedure PreMove ; override;
    procedure AfterMove ; override;
    procedure AfterDraw ; override;
    procedure PlayerMove(APlayer: TPlayer ); override;
    procedure Bot (APlayer: TPlayer ); override;
// procedure LoadLevel (Options: TGameOptions ); override;
  end;

  TGameSettings = record
    GameStart : TTime;
    GameTime : Single;
    GameEnd : Single;
    RoundTime : Single;
    frindlyfire : Boolean;
    DoSpectate : Boolean;
    RespawnTime : Integer;
    TeamCount : Integer;
    GameMode : TGameMode;
    showWaypoints : Boolean;
    //================================
    CTFFlags : Array[0..3] of TCTFFlag;
    CTFFlagBases : Array[0..3] of TCTFFlagBase;
    PLStartsCount : Integer;
    PLStarts : Array [0..50] of TPlayerStartSpot;
  end;

  TGameEngine = class
    SEngine : TSpriteEngine;
    Input : TDXInput;
    Sounds : TDXWaveList;
    Images : TDXImageList;
    //================================
    Players : TList;
    ControllingPlayer : TPlayer;
    Ground : TImageSprite;
    BackGround : TBackGroundSprite;
    //================================
    MPos : TPoint;
    Enabled : Boolean;
    Settings : TGameSettings;
    constructor Create (SEngine: TSpriteEngine; DXInput: TDXInput; DXSounds: TDXWaveList; DXImages: TDXImageList);
    procedure GameTic;
    procedure DestroyGame;
    procedure ControllPlayer(Player: TPlayer);
    function GetPlayerStart(Team: Integer): TPoint;
    procedure DealDamage(XX,YY: Single; Damage: TDamage; PlayerID: Integer);
    function MissleHit(HitX,HitY: Single; Damage: TDamage): Boolean;
  end;
Wie man sieht wird dadurch sogar die Steuerung der Bots durch das Objekt TGameMode geregelt, was später die erstellung eines neuen Spielmodus sehr erleichtern soll und natürlich den gesamten Ccode übersichtlicher machen soll.

Was haltet ihr denn davon?


MFG
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat