Bu sayfadaki yazılar
Sayfanın metni
Sayfa 33
Murat YILDIZGÖRER & Hayrettin YILDIZ Sevgili arkadaşlar! Bu ay yine yeni bir AMOS köşesiyle birlikteyiz. Bu ayki temel konumuz, Sprite'lar ve Bob'lar. Bunların ardından, okuyucu mektupları bölümü bulunuyor. Şimdi, sözü fazla uzatmadan konumuza geçelim. SPRITE'LAR VE BOBLAR: AMIGA'nın donanımı vasıtasıyla, ekranda hareketli objeler oluşturabilirsiniz. Bunu gerçekleştirebilmek için önünüzde iki seçeneğiniz bulunuyor: Sprite'lar ve Bob'lar. Çeşitli yerlerde rastlamış olabileceğiniz bu iki obje türünün de birbirlerine oranla avantaj ve dezavantajları var. Şimdi, bu avantaj ve dezavantajları inceleyelim.
SPRITE'LAR (HARDWARE SPRITES): AMIGA'nın donanımı (DENİSE) tarafından oluşturulurlar. Ekrandan tamamen bağımsız olduklarından, hareketleri fazla vakit almaz; yani oldukça hızlıdırlar ve bulundukları ekranda Double Buffer yapmak gerekmez. Donanım sayesinde, ekran oluşturulurken otomatik olarak saniyede 50 (veya NTSC ise 60) kere yeniden çizilirler. Genişlikleri 16 nokta ile sınırlıdır, ancak yüksekliklerinde herhangi bir sınırlama yoktur. Ayrıca, bir ekran satırında (scanline) en fazla *8 adet 3 renkli sprite” veya “4 adet 15 renkli sprite” görüntülenebilir. Yani, bu sınırlamaya uyarak, ekranda 8'den fazla sprite gösterebilirsiniz. Ayrıca, birkaç sprite'ı yanyana göstererek, daha genişmiş gibi görünen sprite'lar meydana getirebilirsiniz. Hatta, AMOS bu işlemi, sizin yerinize seve seve üstlenecektir. Sprite'ların paletleri, üzerinde bulundukları ekranın, 16 ile 31 arasındaki renkleri ile belirlenir. Buradan da anlayacağınız gibi, kullandığınız ekran 32 veya 64 renkli ise, sprite renkleri ve ekran renkleri çakışacaktır. Bu yüzden, böyle bir ekranda, paletinizi dikkatlice düzenlemelisiniz. Ancak, ekranınız 32 renkten daha az renge sahipse veya HAM (4096 renk) modunda ise, sprite renkleri, ekran renklerinden tamamen bağımsız olacaktır. Sprite'larınız eğer 15 renkli ise, bu renklerin (17-31 arası, 16. renk saydamdır) hepsini de kullanabilirler. Eğer sprite'larınız 3 renkli ise, durum biraz daha değişir. Sprite'lar, ikili gruplar halinde, paletin bu kısmından (17-31) renklerini alırlar.
Sprite 0 ve 1: 17-19. renkler Sprite 2 ve3: 21-23. renkler Sprite 4 ve 5: 25-27.renkler
Sprite 6 ve 7: >29-31. renkler Eğer sprite'larınız 3 renkliyse ve ekranda 8'den fazla sprite kullanacaksanız, sprite'larınızın dikey hareketleri sonucunda, renklerinde değişiklikler olabilir. Çün-.
kü, bilgisayar tarafından otomatik olarak, bu fazladan sprite'ların hareketleri sonucunda çakışmalar olup olmadığı araştırılır ve çakışma varsa (örneğin, o yatay pozisyonda, aynı numaralı bir sprite daha varsa) o ekran satırında kullanılmamış olan bir başka sprite ekrana getirilir. Bu sprite- "ın rengi de daha önceki sprite'ın rengi ile aynı olmayabilir. Bu yüzden ekrana 8'den fazla *3 renkli sprite' getirecekseniz, tüm sprite çiftlerinin renklerini aynı yapın ki, değişen renkler, istenmeyen görüntülere yol açmasın. Ayrıca, yatay olarak 8'den fazla (3 renkli) sprite çakışırsa, fazladan sprite'lar görüntülenmez. Kullanacağınız sprite'lar 15 renkli olacaksa ve ekranda 4'den fazla sprite kullanacaksanız, tüm sprite'lar zaten aynı renkleri kullanacağından, yukarıdaki problemle karşılaşmazsınız. Ancak, yatay olarak, 4'den fazla (15 renkli) sprite'ın çakışmamasına dikkat edin. Mouse göstergeci, normalde sıfırıncı sprite olduğundan, 17-19 arası renkleri değiştirerek, rengini ayarlayabilirsiniz. Ayrıca, bir sprite'ınız 15 renkli olacak diye, kalan sprite'larınızı da 15 renkli yapıp sayılarını yarıya indirmeniz gerekmez. Yani ekranda (aynı yatay pozisyonda); *O adet 15 renkli” ve *8 adet 3 renkli” *| adet 15 renkli” ve *6 adet 3 renkli” *2 adet 15 ve *4 adet 3 renkli” *3 adet 15 renkli” ve *2 adet 3 renkli” *4 adet 15 renkli” ve “O adet 3 renkli” sprite gösterebilirsini Sprite'lar ile ilgili bir diğer nokta da, koordinat sistemlerinin açtığınız ekrana bağlı olmayışıdır. Yani sprite'lar hardware koordinat sistemini kullanırlar. Açılan ve Screen Display ile pozisyonu değiştirilmeyen bir 320x256'lık ekranın sol üst köşesi, hardware koordinatlarına göre (128,42)'dir. Ekranınız 320x200'lük ise, bu değerler (128,50)'dir. Yani, sprite'ınızı ekrana yerleştirirken ya *x pozisyonuna 128” ve *y pozisyonuna 42 (veya 50)” ekleyeceksiniz veya daha doğru bir yol olan, X Hard() ve Y Hard() fonksiyonlarını kullanacaksınız. Örneğin, 4 no'lu sprite'ınızı ekrandaki (75,100) noktasına yerli recekseniz, şu yöntemi deneyebilirsiniz: Sprite 4,X Hard(75),Y Hard(100),1 X Hard() ve Y Hard() fonksiyonları, parantez içindeki ekran (screen) koordinatlarını, donanım (hardware) koordinatlarına dönüştürürler. Bu komutların tersi şekilde işlev gören bir komut çifti daha var: X Sereen() ve Y Sereen() komutları da, parantez içindeki donanım (hardware) koordinatlarını, ekran (screen) koordinatlarına çevirirler. Bu komut çiftini de, sprite'ların bulundukları pozisyonları değerlendirirken kullanabilirsiniz. Buna örnek olarak, bir hardware sprite'ı olan mouse göstergecini verebilirsiniz. Aşağıdaki dönüşümler sonucunda, mouse göstergecinin ekranın neresinde bulunduğunu öğrenebilirsiniz: Screen(X Mouse) : Y-Y Screen(Y Mouse) Bu kadar açıklamadan sonra, şimdi de sprite komutlarını inceleyelim: * Sprite n,x,y,i Sprite kullanımındaki temel komuttur ve numaralı sprite'ı, verdiğiniz pozisyonda, “i' numaralı imaj şeklinde görüntü- İer. Sprite numarası normalde 0-7 arasında olmalıdır. Ancak, ekranda 8'den fazla sprite kullanacaksanız, sprite numaraları mutlaka 7'den yüksek olmalıdır. Aksi takdirde, bazı sprite'larınız görüntülenmez. Çünkü öncelik ilk 8 sprite'a (0-7 arası numaraya sahip sprite'lar) verilmiştir. Yani ekranda 0-7 arasındaki numaraya sahip sprite'ların hepsi ekranda ise, ekrana daha başka sprite getiremezsiniz. * Set Sprite Buffer n Yazımızın başında, bir sprite'ın yüksekliğinde herhangi bir sınırlama olmadığını belirtmiştik. Ancak, AMOS'ta sprite'ların yükseklikleri normalde 128'i aşamaz. Bu değeri, ya CONFIG.AMOS programı ile değiştirirsiniz veya Set Sprite Buffer n komutunu kullanarak, 'n' yerine vereceğiniz bir değer ile bu sınırlamayı aşabilir ve yüksekliği 128'den büyük olan sprite'ları da ekrana getirebilirsiniz. Bu değer, 16 ile 256 arasında olabilir. Ancak bu durumda canacak olan hafıza miktarını da göz önünde bulundursanız iyi olur. Gerekli hafıza miktarı: Hafıza — n * 96 byte'tır. * Sprite Update Off / On Normalde tüm sprite'lar, verdiğiniz koordinatlarda anında görüntülenirler. Ancak bu olay, bazen amaçlarınıza uygun olmayabilir. Bu durumda, Sprite Update Off komutunu vererek sprite'ların, koordinat değişimlerinde yeni koordinatlarında görüntülenmelerini iptal edebilirsiniz. Bu durumdan kurtulmak için de, Sprite Update On komutunu verebilirsiniz. * Sprite Update Sprite Update Off ile sprite yenilenmelerini (refresh) kapadıysanız, Sprite Update komutunu her verişinizde, sprite” rınızın yeni pozisyon ve şekillerinin, çerli olmasını sağlamış, yani onları tazel miş olursunuz. * —X Sprite(n) *n' numaralı sprite'ın o anki dikey pozisyonunu, bu fonksiyon yardımıyla öğrenebilirsiniz. * <Y Sprite(n) *n”' numaralı sprite'ın o anki yatay pozisyonunu, bu fonksiyon yardımıyla öğrenebilirsiniz. X Sprite() ve Y Sprite() fonksiyonlarının verdiği değerler donanım (hardware) koordinatları cinsindendir. * —J Sprite(n) *n' numaralı sprite'ın o anki şekil numarasını, bu fonksiyon yardımıyla öğrenebilirsiniz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 32
GÜÇLÜ ÖZDUMAN MURAT HAZER
Ve işte yine Yiğit Güçtaş... Yiğit'in geçen ayki Project-X tiyoları klüp üye numarası yanlış alındığından sanıyoruz karışmış ve Tekin Çavuşlar adına yayınlanmış. Bu karışıklıktan dolayı üzgünüz Yiğit. Mektuplarınızın her sayfasında ipuçlarınızın hangi isimle yayınlanmasını istediğinizi
TLERİ YAPILIR.
belirtirseniz, bu tür karışıklıklar olmaz. İşte Yiğit'in bu ayki tiyoları: * APIDYA: 2. level'ın ikinci bölümünde, sürekli suyun üstünden gitmeye çalışın. Çıkmaz yola gelince süratle yolun sonuna gidin. Duvara çarpın gizli bir bonus bölümüne gireceksiniz. Evet geldik son mektuba. Bu mektubu bize İzmir'den Levent Yurga göndermiş (yazarın notu: Neyse ki biz Almanca biliyoruz.). Levent, çok sayfalı mektupları ile ünlü dergimizde. Bu ay sadece bir oyun tiyosu aldık. Devamı gelecek ay. * SIR FRED: Bu oyunda F4 tuşuna bastığınız zaman, ŞATO'ya girersiniz. Bu arada bize açıklamalar için KARAMAN'a çok teşekkür ederiz. Gönderdiği açıklamaları en kısa zamanda yayınlayacağız. Evet, her şeyin sonu olduğu gibi bu yazının da sonuna geldik (ne laf ama!). Sayın Amiga Dünyası okuyucuları lütfen bizi gene mektuplara boğun (Biz sizin için yaşıyoruz! Bunu da böyle biliniz ha! Heheheee). Gelecek ay görüşmek üzere hepinize bol Amigalı günler !!!...