AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Andorra 2D - GUI Tutorial
Tutorial durchsuchen
Ansicht
Themen-Optionen

Andorra 2D - GUI Tutorial

Ein Tutorial von igel457 · begonnen am 11. Nov 2007 · letzter Beitrag vom 22. Dez 2008
 
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#11

Re: Andorra 2D - GUI Tutorial

  Alt 14. Okt 2008, 20:43
Achso, ja, fast vergessen

Ist alles etwas durcheinander und nicht durchkommentiert, weil es nur ein Test ist. Aber so schwer sollte der Quelltext nicht sein

Delphi-Quellcode:
unit uSpiel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AdDraws, AdClasses, AdTypes, AdSprites, AdPNG, AdPerformanceCounter,
  AdComponents, AdGUI, AdGUIConnector;

type
  TBild = class(TImageSpriteEx)
    private
    protected
      procedure DoMove(TimeGap: double); override;
    public
      shake: boolean;
      procedure pict(pict: string);
      constructor Create(AParent:TSprite); override;
  end;

type
  TSpieler = class
    private
    protected
    public
      name: string;
      StatsPic: tBild;
      StatsPos: tPoint;
      Spielernummer: integer;
      constructor create(pName: string);
      destructor frei;
  end;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Idle(Sender:TObject; var Done:boolean);
  private
    { Private declarations }
  public
    procedure HauptSpielerHinzu(Sender: TObject);
    procedure HauptSpielerEntf(Sender: TObject);
    procedure HauptSpielerDone(Sender: TObject);
    procedure AddPlayerDone(Sender: TObject);
  end;

var
  Form1: TForm1;
  AdDraw: TAdDraw;
  AdSpriteEngine: TSpriteEngine;
  AdImageList: TAdImageList;
  AdPerCounter: TAdPerformanceCounter;
  AdGui: TAdGUI;
  AdConnector: TAdGUIConnector;
  Spieler: Array[0..9] of tSpieler;
  AnzSpieler: integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdDraw := TAdDraw.Create(self);
  AdDraw.DllName := 'AndorraOGl.dll';
  AdSpriteEngine := TSpriteEngine.Create(nil);
  AdSpriteEngine.Surface := AdDraw;
  AdImageList := TAdImageList.Create(AdDraw);
  AdPerCounter := TAdPerformanceCounter.Create;
  AnzSpieler := 0;

  AdGUI := TAdGUI.Create(AdDraw);

  if AdDraw.Initialize then
  begin
    Application.OnIdle := Idle;

    AdGUI.Skin.LoadFromFile('sunna.axs');
    AdGUI.Cursors.LoadFromFile('cursors.xml');
    AdGUI.LoadFromFile('hauptmenu.axg');
    AdConnector := TAdGUIConnector.Create(AdGUI);
    AdConnector.ConnectEventHandlers(AdDraw.Window);

    TAdButton(AdGUI.FindComponent('SpielerHinzu')).OnClick := HauptSpielerHinzu;
    AdImageList.Restore;
  end
  else
  begin
    ShowMessage('Grafikenginefehler.');
    halt;
  end;
end;

procedure TForm1.HauptSpielerHinzu(Sender: TObject);
begin
  AdGUI.LoadFromFile('Spielerhinzu.axg');
  TAdButton(AdGUI.FindComponent('done')).OnClick := AddPlayerDone;
end;

procedure TForm1.HauptSpielerEntf(Sender: TObject);
begin
  
end;

procedure TForm1.HauptSpielerDone(Sender: TObject);
begin

end;

procedure TForm1.AddPlayerDone(Sender: TObject);
begin
  inc(AnzSpieler);
  Spieler[AnzSpieler] := tSpieler.create(TAdEdit(AdGUI.FindComponent('name')).text);
  AdGUI.LoadFromFile('Hauptmenu.axg');
end;

procedure TForm1.Idle(Sender: TObject; var Done: boolean);
begin
  if AdDraw.CanDraw then
  begin
    AdPerCounter.Calculate;
    AdDraw.ClearSurface(clBlack);

    AdDraw.BeginScene;

    AdSpriteEngine.Move(AdPerCounter.TimeGap / 1000);
    AdSpriteEngine.Draw;
    AdSpriteEngine.Dead;

    AdGUI.Update(AdPerCounter.TimeGap / 1000);

    AdDraw.EndScene;

    AdDraw.Flip;
  end;
  Done := false;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  AdDraw.Free;
end;

constructor TBild.Create(AParent:TSprite);
begin
  inherited;

end;

procedure TBild.Pict(pict: string);
begin
  if AdImageList.Find(pict) = nil then
  begin
    with AdImageList.Add(pict) do
    begin
      Texture.LoadGraphicFromFile(pict, true, clFuchsia);
    end;
    AdImageList.Restore;
  end;

  self.SetImage(AdImageList.Find(pict));
end;

procedure TBild.DoMove(TimeGap: double);
begin
  inherited;

end;

constructor TSpieler.create(pName: string);
begin
  name := pName;
  Spielernummer := AnzSpieler;
  StatsPic := tBild.create(AdSpriteEngine);
  StatsPic.pict('pic/stats.png');
  StatsPic.Y := 1;
  StatsPic.X := (StatsPic.Width)*(Spielernummer) - StatsPic.Width;
  if StatsPic.X = 0 then StatsPic.X := 1;
end;

destructor TSpieler.frei;
begin

end;

end.
Konkret tritt das Problem auf, wenn TSpieler erzeugt wird (wird vom GUI aufgerufen).
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz