Amiga Dünyası sayı 14, sayfa 38

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 38

Merhaba... Geçen ay OBJECT komutlarına başlamış ve devamı gelecek ay demiştik. Şimdi hemen komutlarımızı açıklayıp örneklerimizi inceleyelim.

OBJECT.HIT KOMUTU: Kullanım Şekli: OBJECT.HIT Obje-no,[değer1][,değer2]

Bu komut, hangi objenin, hangi objelerle çarpışacağını tespit etmek için kullanılır. Bu komutla objenin diğer objeler ya da ekran çerçevesi ile çarpışmasını da önleyebilirsiniz.

Obje-no ile belirtilen obje, bir OBJECT.SHAPE yönergesindeki objeye karşılıktır.

Tüm objeler tanımlı olarak diğer objeler ve çerçeve ile çarpışır. OBJECT.HIT yönergesi ile tanımlanarak bazı objelerin diğer objeler içinden çarpışmaya neden olmadan geçmesine izin vermek için kullanılabilir.

değer1, 16 bitlik bir maskedir ve obje-no ile belirtilen objeyi tanımlar, değer2 de 16 bitlik bir maskedir ve onunla çarpışacak objeyi tanımlar, değer2'de en küçük bit set edilirse, obje-no ile belirtilen obje ekran çerçevesi ile çarpışabilir. Set edilmezse, obje görünen alanın dışına uçar.

Değer1’de belirtilen objenin bitleri değer2’de belirtilen diğer objenin bitleri mantıksal olarak AND'lenir. Sonuç sıfırdan farklı olursa, obje-no ile belirtilen obje, değer2’de belirtilen bir obje ile çarpışır ve bir COLLISION durumu ortaya çıkar.

Şimdi asıl obje (değeri) ve diğer objeleri (değeri) tanımlayan aşağıdaki tabloya bakın, üzerinde örnekler yapalım.

Değer 1 Bit Değeri 128 64 32 16 8 4 2 1 Uzay Gemisi 0 0 0 0 0 0 1 0 = 2 Roket 0 0 0 0 0 0 1 0 = 2 Yıldız 0 0 0 0 0 1 0 0 = 4 Değer 1 Bit Değeri 128 64 32 16 8 4 2 1 Uzay Gemisi 0 0 0 0 0 0 1 1 = 3

Roket 0 0 0 0 0 0 1 0 = 2 Yıldız 0 0 0 0 0 1 0 0 = 4 OBJECTSHAPE yönergesi ile uzay gemisinin obje-no'su, 1; roketin, 2 ve yıldızların da 3'ten 10'a kadar obje-no ile tanımlanırlar:

OBJECTSHAPE 1,Uzaygemisi$ OBJECTSHAPE 2,Roket$ OBJECTSHAPE 3,Yıldız$ Karşılaştırmalarının kolay olması için ikili sayıları kullandık. OBJECT.HIT komutunu kullanacağınızda, değerlerin ondalık karşılıklarını kullanacaksınız. Mesela uzaygemisi için bir komut verelim:

OBJECT.HIT 1,2,3 Şimdi bitlere bakacağız. Uzaygemisinin değer1'inde en küçük yani birinci bit set edilmiş. Uzaygemisi, ekran çerçevesi dışına çıkamıyor. Roket ve yıldız ise herhangi bir yönde ekran dışına çıkabiliyor.

Uzaygemisinin değer1’i ve roketin değer2'si iki olarak set edilmiş: çarpışabilirler. Bunun anlamı roket uzay gemisi ile karşılaşırsa bir çarpışma ortaya çıkacak demektir.

Uzay gemisinin değer2'sindeki ikinci biti ve roketin değer2'sindeki ikinci biti set ettik; böylece ters durumda olduklarında bir çarpışma olacak. Yalnızca yıldız için üçüncü bit set edilmiş: bu yüzden yıldız çarpışma içine alınmayacak.

OBJECT.ON OBJECT.OFF KOMUTLARI:

Kullanım Şekli: OBJECT.ON [obje-no][,obje-no...] OBJECT.OFF [obje-no][,obje-no...]

Bu iki yönerge bir ya da daha çok objeyi görüntülenir duruma getirir veya görüntülenen objeleri kaldırırlar.

obje-no, OBJECTSHAPE yönergesindeki obje-no'ya karşılık gelir. OBJECT.OFF komutunda obje-no parametresi kullanılmazsa, o anki çıktı penceresindeki tüm objeler görüntüden kaldırılır.

OBJECT.ON komutunda obje-no kullanılmadığında ise, tüm objeler o anki çıktı penceresi içinde görüntülenir. Objelerin harekete başlaması için, OBJECTSTART komutu kullanılır.

OBJECT.PLANES KOMUTU: Kullanım Şekli: OBJECT.PLANES Obje-no [,bitplane] [,plane-değeri]

Obje-no ile belirtilen objenin set edilen bitplane bit'iyle hangi bitplane'de görüneceği tanımlanır. Obje-no, OBJECTSHAPE yönergesindeki obje-no'ya karşılıktır. bitplane, 8 bitlik, 0 ile 255 arasında bir değerdir.

Diyelim ki 4 bitplane'iniz mevcut ve objenin birinci ile üçüncü plane'de görünmesini istiyorsunuz (0 ve 2. düzey). Bu işlem için, komutun bitplane argümanını, 2^0+2^2 = 1+4 = 5 olarak girmelisiniz. plane-değeri, yine 8 bit'lik bir sayıdır ve diğer bitplane'lere neyin koyulacağını belirler.

OBJECT.PRIORITY KOMUTU: Kullanım Şekli: OBJECT.PRIORITY Obje-no,Öncelik-no

Bu komutla tek tek objelerin öncelik değerleri tanımlanabilir. Aynı ekran yerleşiminde birçok obje olduğu zaman, hangi objenin görüntüleneceğini tespit etmek için kullanılır. Yönerge, sadece bob'lar için geçerlidir, sprite'larda etkili değildir. Aynı öncelik-no ile iki obje tanımlandığında, çizim, rasgele sırayla yapılır.

Obje-no, yine OBJECTSHAPE yönergesinde belirtilen objeye karşılık gelir. öncelik-no, -32768 ile 32767 arasında bir değerle tanımlanır; belirtilen en yüksek değer, en yüksek önceliği tanımlar. Öncelik-no'su 8 olan bir obje, 0'dan 7'ye kadar öncelik numarası verilen tüm objelerin önünde görüntülenecektir.

OBJECT.SHAPE KOMUTU: Kullanım Şekli: Format 1- OBJECT.SHAPE obje-no,tanımlama dizisi

Bu komut bir objenin şeklini, büyüklüğünü, rengini, yerleşimini ve diğer özelliklerini tanımlamak için kullanılır.

Tanımlanan obje, obje-no ile belirtilir; özellikleri ise tanımlama dizisi içerisine yerleştirilir. Bu obje ile ilgili komutlarda da istenen obje buradaki obje-no ile belirtilir ve 1 ile n arasında bir sayıdır, n, sadece bellek miktarı ile sınırlıdır, tanımlama dizisi içerisinde verilen özellik tanımları, aşağıdaki gibi bir sırasal dosya içinden okunabilir: OPEN "(obje dosyası)" FOR INPUT AS 1 OBJECT.SHAPE obje-no, INPUT(LOF(1), 1) CLOSE 1

Bu sırasal dosya içindeki data kalemleri de Extras disketindeki BASICDemos çekmecesinde bulunan ObjectEditor programı ile yaratılır.

Format 2- OBJECT.SHAPE obje-no1, obje-no2

Komutun bu kullanım şekli, obje-no2’yi obje-no1’e kopyalayarak yeni bir obje yaratılmasına yarar. Mevcut bellek o anda bellekteki iki obje tarafından paylaşıldığı için, yeni obje yaratıldığında bellek yeniden düzenlenir.

OBJECT.START OBJECT.STOP KOMUTLARI: Kullanım Şekli: OBJECT.START [obje-no][,obje-no ... ] OBJECT.STOP [obje-no][,obje-no.....]

OBJECT.START komutu, bir ya da daha çok objenin hareketini başlatır; OBJECT.STOP ise hareketi durdurur. Aynı anda pek çok objenin hareketi başlatılıp durdurulabilir. Objenin hareket hızı ile hız anısı OBJECT.VX ve OBJECT.VY komutlarıyla tespit edilir. Obje hareketinin başlangıç noktası da OBJECT.X ve OBJECT.Y ile tanımlanır. AmigaBasic, obje çarpışması oluştuğunda OBJECT.STOP yönergesini otomatik olarak çalıştırır. İki obje çarpışmışsa her iki obje de durdurulur; obje, çerçeve ile çarpışmışsa

AMIGA BASIC

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