ALERT

Bu ay size yine sistem komutlarını kullanan bir Basic programı sunmak istedim. Konumuz Alert'ler. Bir Amiga kullanıcısının korkulu rüyası nedir? Siyah bir ekran, kırmızı bir çerçeve ve kırmızı iki satır yazı: Meditation. Amiga'nın sisteminde bu tipteki uyarı mesajlarına, ALERT adı verilir. Hemen sinirlenmeyin, tabii ki Basic'ten sistemi çakan bir program yazmaya niyetim yok. Alert'ler ikiye ayrılır: Normal ve Deadend (Çıkmaz) Alert diye. Bizim tanıdık Guru bir Deadend alert türüdür. Bu tür bir alert'in geri dönüşü yoktur. Ne var ki, acil mesajları iletmek ve kullanıcılardan seçim beklemek için Amiga sisteminde normal alert'ler yazılabilir. Bu alert'lerin yapısı, sistemdeki birçok yapıdan daha basittir. Fazla kafanızı kurcalamadan önce program, sonra etraflı bir açıklama.

DECLARE FUNCTİON DisplayAlert& LIBRARY
LİBRARY
Hazirlama:
READ Adet
FOR iz1 TO Adet
READ xPos,yPos, Text$,ContByte
Text$-CHAS(0)
NEXT
Basla:
(0&,SADD(AIStr$),50)
onuc:
İF Button&-0 THEN PRİNT "Sag tusa basildi”
ki THEN PRINT "Sol tusa basilidi"
iter:
LIBRARY CLOSE
END
Metin:
DATA 4
DATA 144,15,"** GURU MEDITATION ALERT MAHVOLDUK **" 1
DATA 68,25,”Korkmayin AlIM - 54 kurtarir sizi, nanananoooom",1
DATA 50,40,“Press Left Button to Retry”,1
DATA 370,40,”Press Right Button to Abort"”,0

Çok mu kısa, çalıştırın ve sonucu görün. Her şeyden önce, bu program yine sistem fonksiyonlarını kullanıyor. Library komutunun ardından gelen adreste, intuition.bmap'in olduğundan emin olun, bu adres orada yazıldığı gibi olmak zorunda değil ki, geçerli her DOS adresi mümkün. Bu bmap dosyasını size Amiga'nız alınırken verilen Extras disketinde bulabilirsiniz. Kolay karışabilecek bir şeyi belirteyim. Programda intuition.library diye geçen dosya aslında intuition.bmap dosyası; bu library takısı sizi yanıltmasın. LIBS directory'sinde bulunan library'ler ile karıştırmayın lütfen. Yine Hisoft kullanıcıları Declare Function ve Library komutlarının yerlerini değiştirmek zorundalar. Gelelim fonksiyonumuza: Intuition'a ait DisplayAlert fonksiyonunun genel kullanımı şu şekildedir: Button& = DisplayAlert&(AlertNumarası&, AlertYazısı&). Alert'in türünü belirler. Burası için iki seçenek var: 0 sisteme dönebilen bir alert, hex $80000000 veya onluk sistemde -2147483648, Deadend Alert'tir. Bu Alert, herhangi bir mouse tuşunun ardından reset çekecektir. Aklınıza gelen şeytani fikirler için söylüyorum, bu alert numarasını parametre olarak vermek göründüğü kadar kolay değil. Alert Yazısı&, Alert'in içine yazılan mesajı taşıyan yazının adresidir (& adres fonksiyonu, yani a$ değil de SADD(a$) kullanıyoruz). Bu yazı şu parçalardan oluşuyor: 16 bitlik X koordinatından, 8 bitlik Y koordinatından, iletilmek istenen mesaj ve mesajın son karakteri olarak bir sıfır (Chr$(0)). Başka mesaj olup olmadığını belirleyen bir byte. Eğer değeri sıfırsa mesajın sonu demek, eğer sıfırdan farklı ise başka bir satır daha var demek oluyor. ile de, Alert'in çerçeve yüksekliği belirleniyor. Fonksiyondan sonra Button& değerine, sağ mouse tuşuna basılmışsa 0, sol mouse tuşuna basılmışsa 1 değerini atıyor. Program kolay genişleyebilecek bir şekilde yazılmış. İlk fonksiyon ve Library tanımın ardından Alert Yazısı oluşturuluyor. Data'lardan ilk olarak, yazının kaç satır olacağı okunuyor, daha sonra o sayıda satır okunuyor. 16 bitlik X koordinatının MKI$(x) ve 8 bitlik Y koordinatının ise CHR$(y) fonksiyonu ile elde edildiğine dikkat edin. Yazıyı oluşturan Text$ değerine de her zaman CHR$(0) ekleniyor. Bu bilgisayarın yazının bittiği yeri tespit etmesini sağlıyor. Sonrası kolay, fonksiyon çağırılıyor, değerlendirme yapılıyor ve Library kapatılarak program bitiyor. Mouse tuşlarını değerlendirmek ve kendi uygulamalarınıza eklemek hiç zor olmasa gerek. Son olarak data'lar: İlk data kaç satır olduğunu belirtiyorlar, sonraki satırlar yazı satırları verileri. Kullanılması çok kolay olan bu fonksiyon ile neşeli şeyler yazacağınızı umarım. Görüşmek üzere....