Amiga Dünyası sayı 28, sayfa 32

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 32

Bu noktada ise, alan ikon kutularının, belirlenen koordinatlarda çizimini üstleniyor. IKON YAP prosedüründe ise ilk olarak, ana programda Dim ile tanımlanan ve ikonların pozisyonlarını saklayacak olan değişkenlerin burada da kullanılabilmesi için Shared komutu, değişkenlerin ismiyle birlikte veriliyor. İzleyen satırda grafik modunu ayarlanıyor ve ardından Data satırlarındaki ilk değer okunuyor. Bu değer, sonraki Data satırlarında kaç adet ikon tanımlaması bulunduğunu gösteriyor. Daha sonra Reserve Zone komutu ile, tanımlanacak bölge sayısı belirleniyor ve Data satırlarından ikon bilgilerinin okunduğu döngüye giriliyor. Data satırlarındaki ikon tanımlama formatını ise, bu satırlardan hemen önce gelen Rem satırından öğrenebilirsiniz. Sonraki iki satırda, ikonun sağ alt köşesinin pozisyonu hesaplanıyor. Ardından hesaplanan koordinatlar Set Zone komutu ile belirleniyor ve bu koordinatlara, KUTU prosedürü ile bir kutu çiziliyor. Sonraki satırda da Text komutu ile ikonun yazısı yazılıyor. Bunların ardından, ikon tanımlamalarını içeren Data satırları geliyor. Prosedürün son satırında End Proc'dan sonra gelen (N) kısmı ise, tanımlanan ikon sayısını, prosedürün çağrıldığı yere iletmeye yarıyor. Param değişkeni ile bu değer öğrenilebilir. BASILAN IKON prosedürü ise, daha önce IKON YAP prosedürü çağrılarak zone olarak tanımlanıp, çizdirilen ikonlardan herhangi birisine mouse'un düğmelerinden herhangi biri ile basılana kadar bekliyor ve basılan ikonun numarasını Param değişkeni ile çağrıldığı noktaya iletiyor. Eğer ikona sağ düğme ile basılmışsa, ikonun değeri negatif olarak iletiliyor. BASILAN IKON prosedüründeki, Multi Wait isimli komut size yabancı geliyor olabilir. Bu komut, AMOS'un ilk versiyonunda (1.1) bulunmadığından, kullanım kılavuzunda da açıklaması yok. AMOS'un 1.2 veya daha yukarı versiyonlarında, bu komutu kullanabilirsiniz. Yani elinizdeki AMOS, 1.1 versiyonlu ise, bu komutu Wait komutu ile değiştirin. Multi Wait komutu, Wait komutunun yaptığı işi multitask olarak gerçekleştiriyor. Yani ekranı oluşturan tarama satırının, ekranın en üst satırına gelmesini (Vertical Blanking) bekliyor. Ancak bu bekleme esnasında, o anda bilgisayarımızda çalışan başka programlar varsa, kontrolü onlara devrediyor ve onların da verimli bir şekilde çalışabilmelerine izin veriyor. *Başka programlar* denilince aklınız karışmış olabilir. Bildiğiniz gibi AMIGA multitask bir alet, yani aynı anda birden fazla programı çalıştırabiliyor. Tabii ki bunu yaparken programları dönüşümlü olarak çalıştırıyor. Bu yüzden, kullanıcıdan bilgi girişi vb bekleyen programlarınızda, döngü içerisinde Multi Wait komutunu kullanarak bilgisayarınızın verimini arttırabilirsiniz. Örneğin, arkaplanda animasyon hesaplayan bir IMAGINE programı, bundan büyük ölçüde yararlanacaktır.

Yeri gelmişken söyleyelim. AMOS ile diğer programlar veya Workbench ekranı arasında gidip gelebilmek için Sol Amiga + A tuş kombinasyonunu kullanabilirsiniz. Ancak bunu deneyip de boş bir ekranla karşılaşırsanız şaşırmayın. Çünkü eğer AMOS'u orijinal disketinden yükledi ve konfigürasyonunu da değiştirmediyseniz, otomatik olarak Workbench ekranını kapatarak size boş bellek kazandırmaya çalışacaktır. Bir diğer konu da Close Workbench komutu ile ilgili. Bu komut, Workbench ekranını kapatarak bellek tasarrufu yapmaya yarıyor. Ancak bu komutun çalışabilmesi için, Workbench ekranını kullanan hiçbir programın o anda bulunmaması gerekir. Buna, o anda açık bulunan CLI penceresi de dahildir. Yani, CLI penceresi açık iken Close Workbench komutu işlemez.

Şimdi, konumuza dönelim. Oyun ve demo gibi, ekran zamanlamasının çok büyük önem taşıdığı bazı programlarda Multi Wait komutunu kullanmayın. Çünkü Multi Wait komutu, çalışan task (program) miktarına göre, bazen bir veya birkaç Vertical Blanking pozisyonunu atlayarak, sizin kritik zamanlamanızı bozar ve programınızın yavaşlamasına sebep olur. Bu durumlarda Wait Vbl komutundan şaşmayın. Çünkü yavaş çalışan bir oyunu (arcade ise) kim ister ki...? Kaldığımız yerden, yani BASILAN IKON prosedüründen devam edelim. Bu prosedürün bir diğer önemli noktası da, bir dörtgen bloğun negatifinin alınması. Bunu yapabilmek için ilk önce negatif çizim modu olan Gr Writing 2'ye geçiyoruz. Bu modda yapılan çizim işlemlerinde, çizim rengi dikkate alınmaz. Nokta konulacak yerlere nokta koymak yerine o pozisyonun negatifi alınır. Aynı yerin ikinci kez negatifini aldığınızda, orijinali elde edersiniz. Gr Writing 2 modundan, Draw,

Plot, Bar, Text vb birçok grafik komutu etkilenir. Ancak Cls gibi bazı komutlar etkilenmezler. Biz, ikonun negatif görüntüsünü elde edebilmek için Bar komutunu kullandık. Bar komutu, dörtgensel bir bölgeyi, Set Pattern komutu ile belirlenen bir desen ile dolduruyor. Desen olarak “0” numaralı deseni kullandık. Bu desen tamamen dolu bir desen. Yani, Graphic Writing 2 moduna girmeseydik, Bar komutu Cls komutunun yaptığı işi yapacaktı. Bu sayede Bar komutu ile ikonun negatifini alabiliyoruz. BASILAN IKON prosedürü bu şekilde, önce bir mouse bir bölgeye girene kadar bekliyor. Ardından bu bölgenin negatifini alıyor ve mouse tuşuna basılana veya mouse göstergeci bu bölgeden çıkarılana kadar bekliyor. Eğer bölgeden çıkmadan mouse tuşuna basılmış ise döngüden çıkılıyor. Mouse'un sağ tuşuna basıldıysa, ikon numarası -1 ile çarpılıyor ve bu değer Param değişkeni ile çağrıldığı yere bildiriliyor. Tüm prosedürleri açıkladık. Programımızın prosedürlerin dışında kalan kısmında ise, örnek ikonlar çizdiriliyor ve döngü içerisinde BASILAN IKON prosedürü çağrılıp, basılan ikonun numarası ikonlardan birinin içerisine yazılıyor.

AMOS (C) 1990 * Europress Software, Ltd. IKON DEMO * — (C)1992 AMIGADUNYASI *

Dim X1(32),Y1(32),X2(32),Y2(32) EKRAN AC IKON YAP

Do BASILAN IKON

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