Delphix-1 |
![]() |
|
DELPHI KULLANARAK OYUN PROGRAMLAMA: DelphiX -1- Nedir bu DelphiX? DelphiX, DGC gibi, Delphi de DirectX kullanarak oyun ve grafik programlama yapmanızı sağlayan gelişmiş bir bileşen (component) paketidir. Sık sık güncellenir. Kullanımı gayet kolay ve gelişmiş uygulamaları kaldırabilecek yapıdadır. Dünyada grafiksel tabanlı program yapan bir çok firma özellikle çocuklara yönelik uygulamalarda DelphiX'i kullanmaktadır.Delphi 3 veya üstü versiyonlarında kullanabilir. Kurması çok kolaydır. Sadece Delphi versiyonunuza ait EXE dosyasını çalıştırarak DelphiX Component Package'i kurabilirsiniz. 'http://www.ingjapan.ne.jp /hori/index-e.html' adresinden temin edebilirsiniz. Gördüğünüz gibi component'leri DGC'ye oldukça benzemekte. Şimdi içeriklerine ayrıntılı olarak bakalım. TDXDRAW DirectDraw ve Direct3D 'yi kolay bir şekilde kullanmamıza olanak veren bir component'dir. Properties- Display: Tam ekran çalışma anındaki ekran çözünürlülüğünü belirtmek için kullanılır. Bu özelliği çalışma anında da (Run-Time) kullanabilirsiniz.
procedure TForm1.Button1Click(Sender: TObject); Begin BorderStyle := bsNone;// Formumuzun CaptionBar ve çerçeveleri kaldırılıyor. DXDraw1.Options := DXDraw1.Options + [doFullScreen]; // Tam ekran olarak ayarlanıyor. with DXDraw1.Display do begin Width := 640; //Ekran genişliği Height := 480;//Ekran boyu BitCount := 8;//Renk modu end; DXDraw1.Initialize; // Son olarak işlem bir bakıma refresh yani yenileniyor. End;
Properties - Options: doFullScreen: Tam ekran çalışmamızı sağlar. doNoWindowChange: Tam ekran çalışırken Form state'inin değiştirilip değiştirilemeyeceğini ayarlamak için kullanılır. doAllowReboot: Ctrl+Alt+Del tuşlarının kullanılıp kullanılamayacağını ayarlar. doWaitVBlank: Flip metodu kullanıldığında dikey çizgi taramalarını bekleterek ekran titremelerini önler. Eski PASCAL programcılarının yakından tanıdığı bir fonksiyon. Ancak özellikle Windows uygulamalarında işlem hızını yavaşlattığı bir gerçek. Zorunlu kalmadıkça bu özelliği FALSE olarak kullanın. doAllowPalette256: Tam ekranda 256 renk paletini kullanmanızı sağlar. doSystemMemory: Kullanılan SURFACE sistem belleği tarafından korunur. Performans oldukça düşer. Bu yüzden kullanmak oldukça caydırıcı. doStrecth: Ekrana basılan SURFACE'in boyutlarının kontrolü için kullanılır. doCenter: Surface ekrana ortalanır. doFlip: Tam ekran modunda çalışan bu özellik SURFACE'i ekrana hızlı bir şekilde basar. do3D: Direct3D kullanılmasını sağlar. doHardware: Direct3D' nin Hardware acceleration'ı (Donanım Hızlandırma) etkin kılar. doRetainedMode: Direct3D Retained modun kullanılmasını sağlar. Properties- Surface: TDirectDrawSurface elemanı olan Surface, TDxDraw objesi içeriğini belirler. Daha da basitleştirirsek TDxDraw objesine grafik basmak için kullanabiliriz. Komutları aşağıda listelenmiştir. Draw: Surface'e grafik basmak için kullanılır. Draw(X konum, Y konum, Kaynak boyutu: TRect, Kaynak, Transparent : Boolean);
Şimdi gelin hep beraber bir örnek yapıp TDirectDrawSurface'i kullanmayı daha açık bir şekilde öğrenelim.
Formumuza bir adet TDxDraw ve bir adet de TDxTimer nesnesi koyalım. Şimdi TDxTimer'in Interval property'sini 0 olarak ayarlayalım. Bu şekilde işlemimiz daha hızlı olacaktır. Diğer uygulamalarınızda "Interval" değerini kendiniz uygulamanıza göre ayarlayabilirsiniz. Aşağıdaki örnek FSurface'in barındırdığı bitmap'i TDxDraw Surface'ine basar.
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DXClass, DXDraws;
type TForm1 = class(TDxForm) //TDxForm, DelphiX uygulamaları için TForm'u optimize eder DXDraw1: TDXDraw; DXTimer1: TDXTimer; procedure DXTimer1Timer(Sender: TObject; LagCount: Integer); procedure DXDraw1Initialize(Sender: TObject); private { Private declarations } FSurface : TDirectDrawSurface; //Kullanacağımız Surface'i Tanımlıyoruz public { Public declarations } end;
var Form1: TForm1; implementation
{$R *.DFM} procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin // TDirectDrawSurface olarak oluşturduğumuz FSurface barındırdığı // bitmap'i TDxDraw surface'ine basıyor. FSurface.ClientRect ile resmin veya Surface'in // boyutu kadar alan ekrana basılıyor. DxDraw1.Surface.Draw(10, 10, FSurface.ClientRect, FSurface, False); // En son olarak işlem flip edilerek TDxDraw ekrana basılıyor. // Flip etmedikçe ekrandan görüntü alamayız veya bilgisayarı kitleyebiliriz. DxDraw1.Flip; end;
procedure TForm1.DXDraw1Initialize(Sender: TObject); begin // FSurface, TDirectDrawSurface olarak DxDraw1 nesnesi için oluşturuluyor. FSurface := TDirectDrawSurface.Create(DxDraw1.DDraw); //Resim.Bmp bitmap dosyası FSurface'e yükleniyor. FSurface.LoadFromFile('c:\Resim.bmp'); end;
end.
Kartal TURGUT Kartaltr@ixir.com - mr_eagle@hotmail.com
|