Amiga Dünyası sayı 21, sayfa 24

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 24

SpritePtr -> SimpleSprite structure yapısı. , SpritelmPtr -> Spritelmage structure yapısı. GetSprite() fonksiyonu ise şöyle çalışıyor: Kullanımı: SpriteNr1 — GetSprite(SpritePtr,SpriteNr2); Fonksiyonu: SimpleSprite structure yapısına bağlı olarak o sprite'ı hazırlar. Parametreleri: SpriteNr1 -> Integer olarak, hazırlanan sprite numarasını verir. SpriteNr2 olarak verdiğimiz sprite doluysa, bu değerden farklı bir numara ile geri döner. SpriteNr2 -> Kullanmak istediğimiz sprite numarasını belirtir. SpritePtr -> SimpleSprite structure yapısını belirtir. GetSprite() ile açmış olduğumuz sprite'ı ise FreeSprite() ile şöyle kapatıyoruz: Kullanımı: FreeSprite(SpriteNT); Fonksiyonu: SpriteNr ile verilen numaradaki sprite'ı kapar. Parametreleri: SpriteNr -> Kapanmasını istediğimiz sprite numarası. MoveSprite()'ın kullanımı ise şöyledir: MoveSprite(ViewPort, SpritePtr, x, y); Fonksiyonu: Sprite'ın pozisyonunu değiştirir. Parametreleri: ViewPort -> ViewPort yapı değişkeni. SpritePtr -> SimpleSprite yapı değişkeni. X, Yy -> yeni pozisyon değerleri. Sprite'lar için kullandığımız fonksiyonlar bunlardan ibaret. Artık program örneğimize bir göz atabiliriz. Bu örneğimizde ilk olarak WorkBench ekranımız sağdan sola kayarak temizleniyor. Daha sonra ekrana sprite'ımız geliyor. Sol tuşa basarak programdan çıkıyoruz. /* Programming by CENKER OZKURT */ #include <stdio.h> #include <exec/types.h> #include <graphics/gfxbase.h> #include <graphics/sprite.h> #include <intuition/intuitionbase.h> struct İntuitionBase *IntuitionBase; struct GixBase *GfxBase; struct RastPort *rp; struct ViewPort *vp; struct Screen *screen; #define PI 3.14 int a; float /* Spritelmage yapısında hazırlanıyor.*/ USHORT sprite||

0,0, 0x0000,0x(ffE, 0xf000,0x0000, 0xf000,0x0000, 0xf000,0x0000, 0xf000,0x0000, 0xf000,0x0000, 0xf000,0x0000, 0xf000,0x0000, 0xf000,0x0000, 0xf000,0x0000, 0xf000,0x0000, 0x0000,0xfFfE, 0,0

struct SimpleSprite sp — ( 16,0,0,3

float sin(),cos(); UBYTE *m-0xbfe001; main() ( IntuitionBase-OpenLibrary("intuition.library",0); if(IntuitionBase--NULL) | printf("intuition An"); return(0);

| GfxBase-OpenLibrary("graphics.library",0); if(GfxBasez-NULL) | printf("graphics An"); CloseLibrary(İntuitionBase); return(0); | vp-&screen->ViewPort; SetRGB4 (vp,20,9,9,9); SetRGBA4A (vp,21,11,11,11); SetRGBA (vp,22,13,13,13); SetRGBA4A (vp,23,15,15,1 for(a-0;a<640;a4-5) | ScrollRaster(rp,5,0,0,0,640,256);

1 GetSprite(&sp,3); while(1) | for(a-0;a<360;a4-4) | MoveSprite(vp,&sp,(int)x,(int)y): WaitTOFO: if((*m&64)--0) goto son; /* Mouse kontrol */

| son: FreeSprite(3); CloseLibrary(GfxBase); CloseLibrary(IntuitionBase);

/* Program Sonu */ Şimdi programımızı kısaca açıklayalım. Programımızda ilk olarak #include önişlem komutları ile gerekli olan makrolar ve kullanılacak olan structure yapıları tanımlanıyor. Daha sonra library ve diğer değişkenler hazırlanıyor. #define PI 3.14 satırı ile pi sayısını bir makro olarak hazırlıyoruz. USHORT sprite[] satırında ise sprite'ımızın şeklini SpriteImage structure yapısına göre hazırlıyoruz. sp değişkeni ise, SimpleSprite yapısını oluşturuyor. Burada posctldata yerine sprite'ımızın adresini vermeyi unutmuyoruz. Diğer sayılar ise sırasıyla yükseklik, başlangıç x-y koordinatları ve sprite numarasını belirtiyor. Programımızda sin() ve cos() fonksiyonları kullandığımızdan dolayı, float olarak tanımlamamız gerekiyor. Aksi takdirde sin() ve cos() fonksiyonları doğru çalışmaz. Programın devamında library'ler açılıyor ve sprite renkleri belirleniyor. Bu işlemlerden sonra ScrollRaster() fonksiyonu vasıtasıyla WorkBench ekranımız temizleniyor. GetSprite(&sp,3); satırı ile de, sprite'ımız kullanıma hazır hale geliyor. while döngüsü içinde, sprite ekranda mouse tuşuna basılana kadar daire çizmeye devam ediyor. Sol tuşa basılmışsa, library'leri kapayarak programdan çıkıyoruz. Böylece, bu ayki yazımızın da sonuna gelmiş bulunuyoruz. Gelecek ay, WorkBench ekranı üzerinde çalışmamızı sağlayan screen komutları ve diğer pratik örnekler üzerinde duracağız. Gelecek ay buluşmak üzere şimdilik hepinize iyi çalışmalar dilerim...

Klavyeyle gezinmek için ← ve → tuşları.