KamilORS
25/11/2006, 03:41
Arkadaşlar genellikle oyun programlama gibi olaylarda kullanılan sprite diye adlandırılarn kütüphaneler var. Ben C++ Builder 6 da kendi sprite sınıfımızı oluştursak. En Azından bir adamın ellerini havaya kaldırıp indirtsek formumuzda. sırf mantığı anlamak için. Bu konuda bilgilerinizi paylaşırsanız sevinirim. Araştırdığım Kadarı ile TBitmap Sınıfından Türeteceğiz galiba ?
KamilORS
10/12/2006, 17:14
Arkadaşlar Sprite yapısı yani Grafik işlem vs. Yapı ile ilgili Ata Sınıfları Buldum. Bitblt fonsksiyonu vs. ile olur. Street Fighter Karakterini oynatıp Koayayım örenk olarak.
Amaç Bir Resmin Belirli Parçalarını Alarak Üst üste Baksarak Animasyon Oluşturmak. Örneğin 100 x 500 lük bir resim var ve bu resmin içinde bir çöp adamın 5 tane hareketi var Ellerini çırpsın. biz bu bnu 5 bölerek üst üste yapıştırdıkmı animasyon oluyor. çaoğu oyunda bu şekilde hazırlanıyor (2 boyutlular.)
KamilORS
10/12/2006, 19:08
Evet Arkadaşlar Street Fighter Ken Karakterinin Gardını Almış Şekilde Bekleyişini Yaptım. Şimdilik Fonksiyon şeklinde Kullandım. İlerde sınıf Yazar Koyarım ilgilenen Olursa Güle Güle Kullanır :)
Derleyici : Borland C++ Builder 6
Kodlar:
//Unit1.h
//------------------------
public: // Genel Kısma
Graphics::TBitmap *Ken,*Bg; // Ekliyoruz.. Bitmap Türünden Pointerlar
----
//Unit1.cpp
//-------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Ken = new Graphics::TBitmap();
Bg = new Graphics::TBitmap();
Bg->LoadFromFile("res/bg.bmp"); // Bg Arka Plan Olarak Kullancamız Bitmap'i Yüklüyoruz.
Ken->LoadFromFile("res/kenx.bmp"); // Kenin Hareketlerinin Olduğu Bitmap
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
//Arka Planı Ekrana Basıyoruz BitBlt(Form1->Canvas->Handle,10,10,Bg->Width,Bg->Height,Bg->Canvas->Handle,0,0,SRCCOPY);
// Kenin Birinci Konumunu Ekrana Basıyoruz. TransparentBlt(Form1->Canvas->Handle,10,10,110,165,Ken->Canvas->Handle,0,0,110,165,clWhite);
// Birinci Konumun Biraz Ekranda Görülmesini Sağlayoruz.
Sleep(175);
// Birinci Konumdan İzler Kalmaması İçin Tekrardan Arka Planı Ekrana Basıyoruz. BitBlt(Form1->Canvas->Handle,10,10,Bg->Width,Bg->Height,Bg->Canvas->Handle,0,0,SRCCOPY);
// Ken'in 2. Konumunu Ekrana basıyoruz. TransparentBlt(Form1->Canvas->Handle,10,10,110,165,Ken->Canvas->Handle,0,165,110,165,clWhite);
Sleep(175);
}
Birde Unutmamamız Gereken Bir Kural Var. TransparentBlt() Fonksiyonunu Kullanabilmek için Projemize msimg32.lib dosyasını dahil etmemiz gerekmekte bunuda şu şekilde yapabiliriz.
Project menüsünden Add To Project Seçeneğinden C:\Program Files\Borland\CBuilder6\Lib\Psdk\msimg32.lib seçerek..
Bu Arada Formumuz da bi tane Timer Companenti var.
Kullandımın Bitmapler aşağıda :)
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.