Amiga Dünyası sayı 15, sayfa 85
Sayfanın metni

Sayfa 85

içinde belirtilen yerde olmaları gerekli. (Bu dosyaları daha önce kullanmadıysanız, Workbench'in Extras disketinde bulabilirsiniz. Library'den sonra belirtilen yeri geçerli bir DOS Path'i olması şartı ile kendi isteğinize göre değiştirebilirsiniz.)

Nasıl etkileyici değil mi? Gelelim kaba bir açıklamaya. Programda Copper'ı programlayabilmek için sistemin komutları kullanılmış. Bunları daha rahat kullanabilmek için, dört SUB emri hazırlanmış. (SUB emirleri size kendi isteğinize göre komutlar hazırlamanızı sağlıyor.)

Programın ilk kısmı, sistemin komutlarını kullanmak için Library'lerin açılarak programa dahil edilmesi ve fonksiyonların tanımlanması ile ilgili. Eğer Hi-Soft Basic kullanıyorsanız, LIBRARY komutlarını DECLARE FUNCTION komutlarının önüne almanız gerekiyor.

Daha sonraki bölümde 564 emirden oluşan bir Copper listesi hazırlanıyor (ekran 282 satır, her satıra bir CopWait ve bir CopMove komutu =282*2=564). Daha sonra bu liste datalardan yararlanılarak dolduruluyor. Listenin y. satırı kabaca şuna benziyor:

CopWait y CopMove 386,Renk İşlevi ise, yine kabaca: elektron y. inci satıra gelene dek bekle, sonra 386 nolu adrese rengi yaz. (Renk, datalardan okunan kısım). İşte bu 386 nolu adreste, ekrandaki yazı rengi tutuluyor. Bu adresi değiştirmek mümkün. 384 arka planın renginin, 386 yazı renginin, 388 ikinci rengin ve 390 üçüncü rengin bulunduğu adresler. (Workbench'teki 4 renk). Bu sayılar dışındaki sayıları deneyerek meşhur GURU'muzla tanışmanız mümkün.

Gelelim Datalara: Dataların başındaki &, sayılar 65535'ten büyük olduğu için ve &H sayılar hekzadesimal (16'lık düzende) olduğundan bulunuyor. Bunları takibeden sayılar rengin RGB kodu. İlk sayı renkteki kırmızı, ikinci sayı renkteki yeşil ve üçüncü sayı ise renkteki mavi katkısını belirliyor. (Sayıdan kastım 16'lık düzendeki sayılar 1-9,A,B,C,D,E,F). Bunları keyfinizce değiştirin. Copper listesi yazmanın tek dezavantajı, ekranı aşağı çekme hızınızın çok düşmesi. Bu arada program Copper'ı eski haline getirmiyor, ama programı değiştirip tekrar tekrar kullanabiliyorsunuz.

İŞTE BU DA İKİNCİ PROGRAM: Bir diğer programla, denemişseniz neredeyse imkansız bulduğunuz bir efekti gerçekleştireceğiz: Scroll. Ekranın istenen tarafa kayması anlamına gelen bu kelimeyi, bir çok oyundan, mesela SHADOW OF THE BEAST'ten tanıyorsunuz.

Belirtmeme gerek yok, Basic'in kendi emirleriyle fazla bir şey elde edilemiyor. (Hisoft veya GFA ile bile). Çözüm yine Amiga'nın sisteminde, library komutlarını Basic'ten kullanarak istediğimizi yapabiliriz. İşte program:

' Program SCROLLVPORT DECLARE FUNCTION ViewPortAddress& LIBRARY LIBRARY ":bmaps intuition.library" LIBRARY ":bmaps graphics.library" Giris: ViewPort&=ViewPortAddress&(WINDOW(7))

Raslnfo&=PEEKL(ViewPort&+36) CIRCLE (320,90),200,1 LINE(310,90)-(330,90) LINE (320,85)-(320,95) PRINT "Lütfen Mouse'u" PRINT "Ortadaki artiya" PRINT "Yerleştirin." PRINT "Ekran" PRINT "Daire etrafinda" PRINT "Dönecektir." Bekle: WHILE MOUSE(1)<>320 OR MOUSE(2)<>90 Status=MOUSE(0) WEND Hareket: WHILE INKEY$="" x=COS(Derece)*200 y=SIN(Derece)*90

Derece=Derece+.1 POKEW RasInfo&+8,x POKEW RasInfo&+10,y ScrollVPort& ViewPort& WEND Eskihal: POKEW RasInfo&+8,0 Programın kısalığına bakmayın. Çalıştırınca ne kadar hünerli olduğunu göreceksiniz. İlk satırlar, bir önceki örnekte olduğu gibi sistemdeki Library'lerin Basic tarafından kullanılmasını sağlıyor ve fonksiyonlar tanımlanıyor. Girişte ise, sistem fonksiyonu yardımıyla ViewPort ve buna bağlı olan RasInfo adresleri okunuyor. Amiga tüm ekranını ViewPort'ta bulunan parametreler yardımıyla belirliyor. Bunları değiştirerek ekrandaki görüntünün istediğimiz hale gelmesini sağlayabiliriz. ViewPort adreslerinin hepsini öğrenip kullanabilmeniz için iyi bir Referans kitabına ihtiyacınız olacaktır. Programımız ViewPort'taki RasInfo adlı listeyi kullanan değişiklikler yapmaktadır.

Ekrana çizilen çember ve yazılan mesajdan sonra, program Mouse'u belirtilen yere getirmenizi bekleyecektir. Daha sonra Derece ile belirtilen açıdan, sin ve cos ile hesaplanan, x yönünde ve y yönünde ekranın yeni konumu bulunacaktır. Bulunan bu değerlerin RasInfo listesinde gereken yerlere yazılmasının ardından, ViewPort'un adresiyle beraber Library'nin ScrollVPort emri çağrılması scroll'u gerçekleyecektir. Normal workbench ekranında ViewPort'un büyüklüğü ekran kadardır. Normal ekranın dışına çıkıldığında, hafızanın aslında görüntü olmayan kısımları da sanki görüntü imiş gibi ekrana getirilir. Ekranda kenarlarda çıkan görüntüler bunun sonucu. Eğer ViewPort'unuz ekrandan büyükse (Max 1024x1024), bu numaraya ilginç uygulama alanları bulabilirsiniz : Kick-Off'taki ekranın kayması sadece bir örnek.

Sonrası yine kolay, herhangi bir tuşa basılınca, program While Wend döngüsünden çıkar, ekranın konumları sıfır olarak yeniden yazılır ve yine Library komutu ile Amiga ekranı düzenler. En son iş olarak Library'lerin kapatılması yer alıyor.

Programda değişiklik yapmaktansa programdaki kullanımı göz önüne alarak kendiniz bir kaç kaydırma yapmayı deneyin.

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