Commodore sayı 41, sayfa 25

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 25

POKE 2040, 15

Doğru data pointer'larını bulmak için yukarıdaki tabloya bakın. Tabloyu kullanmak istemiyorsanız, data'nın bulunduğu adresi 64'e bölün.

960/64-15

Eğer 4 sprite'ın birbirinin aynısı olarak gözükmesini istiyorsanız, datayı bir kere POKE edin ve 4 sprite'ın pointer'larını aynı yeri gösterecek şekilde ayarlayın. Aşağıdaki rutin, 0, 1, 2 ve 3 nolu sprite'ları birbirlerinin aynısı olarak gösterir.

100 FOR 1—2040 TO 2043 110 POKE I, 15 120 NEXT I

RENK SEÇİMİ

Sprite'ınızı belleğe yerleştirdikten sonra sıra sprite'ın ne renk olacağına karar vermelisiniz. Her sprite'ın başta bilgisayar tarafından belirlenen kendi rengi vardır. Eğer bunu değiştirmek isterseniz aşağıdaki tablodan bir renk seçin ve sprite rengi adreslerine (55287-55294) POKE edin.

(Şekil - 6)

Sprite Orijinal Renkler

White Red Cyan Purple Green Blue Yellow Grey 2

RUN—O

ÇOK-RENKLİ SPRITE'LAR

Çok-renkli sprite'lar daha ileri bir teknikle meydana geliyor. Bu modda sprite data'sı daha farklı bir şekilde okunmakta. Çift bit'ler olarak okunan bayt'larda her bit çiftinin bir anlamı vardır. (Şekil - 7)

(00

.. 10

76) 5 4| (3 2

A B C D

A: Bit çifti bilgisayara, gereken rengi sprite renk sicilinden (55287'den 55294'e kadar, üzerinde çalıştığınız sprite'a bağlı) almasını söyler. B: Ekran rengi. C: Çok-renklilik sicili # 0 olan 53285'e POKE edilecek renk değeri. D: Çok-renklilik sicili # 1 olan 53286'nın rengi. Aşağıdaki program sprite'ı standart moddan multicolor moduna çeviriyor. (Program - 3) Sprite programlamanın öncelikler, çarpışma kontrolü gibi diğer özellikleri de oldukça basit. Kullanımları konusunda daha fazla detayı ilgili adreslere geldiğimizde vereceğim. Şimdilik öncelikler konusunda 0'ın otomatik olarak en öncelikli sprite olarak ayarlandığını ve 1'den 7'ye kadar olan sprite'ların önünden geçeceğini, diğerlerinin ise benzer bir hiyerarşi ile (1'in 2'den önünden 2'nin de 3'ün önünden geçmesi vb.) geçtiğini bilin. Ayrıca bütün sprite'lar arka plandaki grafiğe göre önceliklidirler. Eğer herhangi bir sprite'ın önceliğini değiştirmek isterseniz buna uygun sprite öncelik sicilini (adres 53275) ayarlamalısınız. Çarpışma kontrolü de bundan zor değil. Sprite çarpışma sicilleri (53278-

53279) herhangi bir çarpışma durumunda bit'leri 1 değerini alan salt okunabilir sicillerdir. Çarpışmayı kontrol etmek kolay bir olaydır, ancak bu kontrolü kodunuzda stratejik olarak, yani asıl önemli hareket döngüsü içinde yapmalısınız. Çarpışmalar bir satırla belirlenebilir. Sprite - Sprite çarpışması için:

IF PEEK (53278) AND X THEN (NE YAPMAK İSTİYORSANIZ)

Sprite - Arkaplan çarpışması için: IF PEEK (53279) AND X THEN ...

Burada X çarpışma sicilindeki bit'in ondalık değeridir. (Şekil - 8)

SPRITE* BIT DEĞER 0 0 1 1 1 2 3 2 4 3 3. 8 4 4 16 Bİ 5 32 6 6 64 7 7 128

Çok özlü biçimde bir sprite'ı nasıl yaratabileceğinizi bir algoritma olarak veriyorum. 1. bölümün A kısmı yazdığınız bütün programlar için geçerliyken kalan kısım sprite'larla ilgilidir. * ile işaretli olanlar kullanım bilginize ve sprite'larınızın nasıl görünmesini istediğinize bağlıdır. Onlar olmadan da sprite yaratıp hareket ettirebilirsiniz.

SPRITE ALGORİTMA ŞEMASI

1. PROGRAMIN DÜZENLENMESİ A) Programın Parametrelerini Bildir 1. Ölçüm dizileri a. tam sayı b. yazı c. gerçek 2. Değişmez ve değişkenleri ayarlama. B) Sprite Parametrelerini Bildir 1. Değişmezleri ve değişkenleri sprite'lara uygun olarak ayarla a. VIC+53248'in başlangıç adresi. *2. Ekranı kapat (POKE VIC+17,11) 3. Sprite datasını sakla a. data pointerlerini ayarla (adr. 2040 - 2047) b. data'yı okumak için

25

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