AMOS PRO

AMOS:

Merhaba! Ne yazık ki güzelim yaz bitti. Yaklaşan kışla birlikte hayatın tüm kötü yönleri de yaşamımızı işgal etmeye başlıyor. Okullar açıldı. Her sabah mavi takım elbise ile okullarına koşan lise halkı yine saçlarını kısalttı. Benim gibi üniversiteli insanlar ise kayıt yenileme gibi ızdırap verici işlerle uğraşmak zorunda. Havalar ise bunalım takılıyor. Bir saat sıcak, yarım saat soğuk, on salise fırtınalı geçiyor. Ne giyeceğimi şaşırdım ve sonunda hasta oldum. Bütün bu berbat şartlara rağmen, kasım ayında Amos Pro.'nuz yine karşınızda. 6. sayıda yazmaya başladığımız EFEKT inatla sürmekte. Bu sayıda programa yeni efektler eklendi. Artık, program ikonlarının tamamı çalışıyor. Şimdiden dört efekt hazır, aralık ayında ise program tamamlanacak. Efekt göndermek isteyenler acele etseler iyi olur. Bu sayıda EFEKT'in geniş bir açıklamasına yer vereceğim. Kullanımından, program içindeki rutinlerin açıklamasına kadar her şeyi açıklayacağım. İşte EFEKT. Program listesi global değişkenlerin tanımlanması ve değişkenlere ait açıklamalar ile başlıyor. İlk çalışan procedure ise İNİTPROG. Bu rutin içinde, global değişkenlerin ilk değer atamaları yapılmakta. Hazır GLOBAL değişkenlerden bahsederken, bilmeyenler için bu komutu açıklamak istiyorum. Amos'ta, herhangi bir procedure içinde tanımlanan bir değişken, diğer bir procedure'e sıçrandığında değerini kaybeder. Global tanımlanan değişkenler ise tüm procedure'ler içinde değerlerini kaybetmeden kullanılabilen değişkenlerdir. Değişken tanımlamalarından sonra programa ait ekran tanımlamaları gelmekte. Bu rutin içinde daha önce açıklamadığım tek komut Set Text. Komut, Text komutu ile yazılan yazıların, yazım stilini ayarlamakta kullanılır. Kullanımı, Set Text n şeklindedir. N parametresine verilebilecek değerler ve karşılıkları şöyle sıralanır.

N Stil 0 Plain (Normal) 1 Underline 2 Bold 4 Italic

Bu yazım tiplerinin yanında, örneğin Italic ve Bold yazmak için N değerine, Italic ve Bold tiplerinin kod toplamları yazılır. Yani 'Set Text 6' yazdığınızda, yazı tipi italik ve bold olacaktır. Diğer karışım türlerini de elde etmek için kod toplamlarını parametre olarak vermeniz gerekir. Ekran tanımlamaları bittikten sonra İNİTPROG rutini, İNİTİKON ve BASIKON rutinlerini çağırmakta. İNİTİKON, program içinde kullanılan ikonların tanımlandığı, BASIKON ise ikonların ekrana basıldığı rutindir. İkon tanımlamaları, İKONT(), İKONB() ve İKONCOL() değişkenlerinde saklanmaktadır. İKONT() içinde, ikonun sol üst köşesinin X ve Y koordinatları, İKONB() içinde, sağ alt köşenin X ve Y koordinatları, İKONTEX$() içinde, ikon üzerine basılacak yazı ve İKONCOL içinde de yazının rengi verilmekte. Data satırlarını incelediğinizde ikon isimleri tanımlanırken bazı isimlerin başına '*' işaretinin konulduğunu göreceksiniz. Bu işaret, konulduğu ikonun kullanıcı tarafından seçilmesini engeller. Bu yüzden, efekt başlıklarının yazılı olduğu ikonlar programda '*' ile tanımlanmıştır. BASIKON rutini ise SHADEBOX rutini yardımıyla ikonları ekrana basar. SHADEBOX parametrelerini rutin içindeki açıklamalardan öğrenebilirsiniz. Rutin içerisinde kullanılan Text fonksiyonu aktif fontla yazılan bir yazının kaç piksel uzunluğunda olduğunu bulur. Text Base fonksiyonu ise fontun y uzunluğunu verir. Bu iki komut yardımıyla ikon yazısı, ikona ortalanarak basılır.

INITPROG rutini çalıştıktan sonra, ana döngünün yazılı olduğu MAIN rutini çalıştırılır. Mouse kontrolü ve basılan ikona göre dallanma işlemleri bu rutin içinde yapılır. Sıra programın kullandığı fonksiyonlara geldi. İlk fonksiyon, LODIFF.

Fonksiyon FSEL$ komutu yardımıyla kullanıcıdan IFF resim seçmesini bekler. Ve seçilen resmi yükler. FSEL$ komutunun kullanımı ise şu şekildedir.

FSEL$(drv$,dos$,tit1$,tit2$)

Drv$, dosyanın seçileceği öncelikli directory veya sürücü ismi. Dos$, bu parametre ile kullanıcının belli isim tipinde dosyaları seçmesini sağlayabilirsiniz. Yani '*.IFF' parametre olarak verirseniz sadece .IFF dosyaları listelenir. Tit1$, dosya seçim penceresinin ilk satırına bu parametreyle tanımlanan yazı basılır. Tit2$, pencerenin ikinci satırına yazılacak yazı. FSEL$() komutu kendi açtığı pencere içinde kullanıcıdan dosya ismini alır ve directory ismiyle birlikte geri gönderir. Kullanıcı herhangi bir dosya seçmez ise FSEL$() komutu geriye boş string değeri (NULL) gönderir. Program içinde FILE$ değişkeni ile kullanıcının seçtiği IFF resmin ismi tutulur. LODIFF rutini seçilen resmi dört nolu ekrana yükler ve SCRES rutinini çalıştırarak yüklenen resimle ilgili tanımlamaları okur. Burada SCRES rutinini açıklamak gereği duyuyorum. Rutinin ilk satırında Screen Base komutunu göreceksiniz. Screen Base, açılan ekranla ilgili tanımlamaların tutulduğu hafıza adresini geri gönderir. Bu adresten 72 byte ilerde, EFEKT programının ihtiyacı olan değerlerin saklandığı bölge başlar. M=Peek(A) komutu yardımıyla M değişkeninin içine A ile adresi belirtilen WORD okunur. Bu word'ün 15. bit'i Hires, 11. bit'i Ham, 2. bit'i Lace modunu aktif hale getirir. Yani açılan ekran (ki bu yüklenen IFF'in konulduğu ekrandır) bu modlardan hangisini destekliyorsa, o moda ait bit 1 değerini alacaktır. BTST komutu yardımıyla bu bitler test edilir ve yüklenen resim hangi modda çizildiği bulunur. Bu kadar derine inmişken BTST komutunu da açıklayayım. BTST(bitno,dgr) şeklinde kullanılır. Ve dgr ile belirtilen değer içinden bitno ile belirtilen bit'in 1 olup olmadığını kontrol eder. Umarım yeterince açıklayabilmişimdir. Bu rutin çalıştıktan sonra LODIFF rutini ekran düzenlemelerini yapar. Ve TMPSCR rutinini çalıştırır. Bu rutin 4 nolu ekranla aynı tanımlamalara sahip, 5 nolu ekran açar. Daha sonra LODIFF rutini içinde 4 nolu ekran 5 nolu ekrana kopyalanır. 5 nolu ekranın açılma sebebi, herhangi bir işlem öncesinde 4 nolu ekranın kopyasını almaktır. UNDO ikonu seçildiğinde ise 5 nolu ekran 4 nolu ekrana kopyalanır. Bu sayede en son yapılan işlem iptal edilir. SAVEDIFF rutini de tahmin edeceğiniz gibi 4 nolu ekrandaki resmi diske saklar. Saklamak işlemi sırasında yine FSEL$() komutundan yararlanılır. RULO ve FLOOD henüz program tarafından kullanılmayan rutinler. SCOPY Y, rutini grafik üzerinde efekt yapan ilk rutin. Bu sayıda ilk kez karşılaştığınız bu rutin, parametreleri kullanıcı tarafından verilen sinüs tablosuna göre ekranı büker. Kullanıcıdan parametre okuyan fonksiyon ise GETSINPAR rutini. Rutine parametre olarak axis y veya axis x terimlerini gönderiyorsunuz. Gönderilen terimlere göre, SCOPY Y veya SCOPY X rutinlerine değer okunuyor. Okunan değerler global tanımlanan PARSINY() ve PARSINX() dimension'larında saklanmakta. GETSINPAR rutini, parametre okumak için 2 nolu ekranı kullanıyor. Ekran tanımlamaları ve palet değişiklikleri yabancı olmadığınız konular. Ekrana çıkan pencereden 5 farklı değeri girmeniz mümkün. Bunlar; ALT SINIR, UST SINIR, BAŞLANGIÇ, ARTIŞ ve PİXEL DERİNLİĞİ. Bu değerler sırayla, sinüs tablosunun ilk açısı, tablonun son açısı, ekran bükme işleminin başlayacağı açı, her adımda kaç açı ilerleneceği ve ekranın en fazla kaç piksel itileceğini belirlemekte. Örneğin, Alt Sınır'a 0, Üst Sınır'a 360, Başlangıç'a 180, Artış'a 5 ve Piksel Derinliği'ne 10 verecek olursanız, rutin 0 ile 360 arasında bir tablo üretir. Ve bükme işlemi (SCOPY Y veya SCOPY X işlemleri) 180 dereceden başlayıp ve 5'er 5'er artarak 360'a kadar gider. Açı değeri 360'ı geçince, 0 dereceye dönülür ve buradan itibaren işlem devam ettirilir. Girdiğiniz bu değerlere göre, ekranın tamamına bükme işlemi uygulanır. Açılan pencerede, henüz herhangi bir işlevi olmayan GRAB ikonu bulunmakta. Bu ikon sayesinde, işlemleri ekranda seçeceğiniz bir alana uygulayabileceksiniz. SCOPY X rutini de SCOPY Y gibi GETPARSIN rutininden yararlanmakta. Çalışma prensipleri her ikisinde de aynı. SCOPY Y rutininden farklı olarak bükme işlemi X ekseninde uygulanmakta. Üçüncü efekt ise BULANIK1. Geçen sayıda yayınlanan bu rutin iki farklı şekilde çalışıyor. İlki, Pixel Derinliğinin verildiği tanımlama kısmı. Tanımlama yapabilmek için ikonunun, sağ tuş ile seçilmesi gerekiyor. Pixel derinliği, GETVAL rutini tarafından alınmakta. GETVAL rutinine parametre olarak pencere başlığı, default değer ve kaç hanelik sayı alınacağı verilmekte. Bu rutin sadece BULANIK1 veya BULANIK2 rutinlerine değil istenilen herhangi bir rutine sayı okumakta kullanılabilir. Alınan değer End Proc DEGER$ satırı kullanılarak geri gönderilmekte. Amos'ta yazılan herhangi bir procedure'nin değer gönderebilmesi için End Proc komutundan sonra parantez içinde geri gönderilecek değeri verilmeli. Geri gönderilen değerin cinsine göre PARAM$, PARAM veya PARAM# değişkenlerine bu değer atılır. BULANIK1 rutininde GETVAL satırından sonra PİXKAY=Val(Param$) komutuna, Pixkay değişkenine kullanıcının girdiği değer atılır. Rutinin efekt kısmı ise, kullanıcıdan alınan piksel derinliğine göre resmin her satırının rastgele kaydırılmasından ibaret. Örneğin piksel derinliği 20 verildiyse, her satır -20 ile 20 arasında itilmekte. BULANIK2 efekti ise ilk kez bu ay yayınlanan efektlerden biri. BULANIK1 rutininin X ekseninde yaptığı işlemi Y ekseninde gerçekleştirmekte. Bu iki rutinin de UĞUR YILDIRIM tarafından yazıldığını bir kez daha belirtmek istiyorum. Ekranında bulunan en son ikonda, ekranın sağ üst köşesindeki ikon. İkonun üzerine bastığınızda resim ekranı ön plana geçer. Mouse tuşuna bir kez daha kliklediğinizde ise ikon ekranı yeniden ön plana çıkar. Program içinde kullanılan ve açıklayacağım son rutin de HATA procedure'ı. Rutin kullanıcıya mesaj vermekte veya bir işlemi onaylatmakta kullanılır. İki adet parametre ile çalışır. İlki yazılacak mesaj, ikincisi ise mesaj ekranına basılacak gadget sayısı. Eğer bir gadget basarsanız, gadget Ok yazısıyla ekrana ortalanarak basılır, eğer iki gadget basacak olursanız, ilki Ok ikincisi ise Vazgeç yazısıyla ekranda belirecektir. Kullanıcı çıkan gadgetlardan hangisini seçerse, seçilen gadget'a göre 1 veya 2 geri gönderilir. Program listesi bu kadar. Eksik kalan rutinleri program içinde kullandıkça açıklayacağım. Anlayamadığınız bir rutin varsa dergiyi arayıp veya mektup yazıp cevap alabilirsiniz. Gelecek ay yine birlikte olacağız. Hoşçakalın. Bu arada benimle bağlantı kurmak isteyen ve problemi çok acil çözüm gerektirmeyenlere telefon etmektense mektup yazmalarını tavsiye ederim (genelde dergide bulunmuyorum). Fakat probleminiz acilse dergideki diğer insanlar da sizinle ilgilenecektir. Mektup yazmak isteyenler için adresimi vermek istiyorum. Ayrıca mektupların üstüne AMOS Köşesi ibaresini bulundurursanız bana ulaşması daha çabuk olur.

ADRES: Şişli Bahariye / İSTANBUL

TOLGA KAHRAMAN

Global PIXKAY2,PARSINY(),PARSINX()
'* Pixkay2 Kac pıxel kayacak (Bulanik2)
'* ParSinYy(l) SCOPY Y rutininin parametreleri
1. Aci Alt Sinir
2. Aci Ust Sinir
3. Islemin Baslatilacagi Aci Degeri
Zayi 4. Aci Artis Degeri
5. Max itilecek pixsel
SCOPY X rutininin parametreleri
1. Aci Alt Sinir
. Aci Ust Sinir
* Islemin Baslatilacagi Aci Degeri
. Aci Artis Degeri
* Max itilecek pixsel
ParSinX()
*
Procedure MAIN
MAIN LOOP
Limit Mouse 128,243 To 448,308
Do
PRESKEY-Asc(Inkey$)
RAWKEYS-Key Shift
—MOUSEKEY-Mouse Key
If MOUSEKEY>O
If CMDSCRBCK-İ
Screen Show 0
Repeat
Until Mouse Key-0
Else
MX-zX Screen(X Mouse)
MY-Y Screen(Y Mouse)
BASILAN-0
For To IKONSAY
I£ MX>-IKONT(K,İ) and MY>-IKONT(K,2)
If MX<-IKONBİK,İ) and MY<-IKONB(K,2)
BASILAN-K
Exit
End If
End If
Next
I£ IKONTEX$(BASILAN)<>"Ouit" and
Len(FILE$)-0 and BASILAN>3
HATA("Herhangi bir resim yuüklenmedi",1)|
BASILAN-0
End If
If BASILAN>O0O
If
SHADEBOX(IKONT(K,1) ,IKONT(K,2), |
IKONB(K,1) ,IKONB(K,2), Ü
|
Repeat
Until Mouse Key-z0
End If
If BASILAN-2
Limit Mouse
LODİFF
Limit Mouse 128,243 To 448,308
Screen To Front O
Screen 0
SHADEBOX(IKONT(K,1),IKONT(K,2), Ü
IKONB(K,1),IKONBİK,2),
True, IKONTEX$ (K) ,IKONCOL(K) |
End If
If BASILAN-3
Limit Mouse
SAVIFF
Limit Mouse 128,243 To 448,308
Sereen To Front 0 : Screen 0
SHADEBOX(IKONT(K,1),IKONT(K,2),
IKONB(K,1),IKONB(K,2),
True, IKONTEX$ (K) , IKONCOL (K) |
End If
If BASILAN-5
SCOPY X| MOUSKEY)
Ü
IKONB(K,1),IKONB(K,2),
Trüe, IKONTEX$ (K) , IKONCOL (K) |
End If
If BASILAN-6
SCOPY YI MOUSKEY)
SHADEBOXİIKONT(K,1),IKONT(K,2), |
IKONB(K,1),IKONB(K,2), Ü
True, IKONTEX$ (K) , IKONCOL(K) |
End If
If BASILAN-8
BULANIKİ| MOUSEKEYİ
SHADEBOXİIKONT(K,1),İKONT(K,2), |
IKONB(K,1İ),IKONB(K,2), Ü
True, IKONTEX$ (K) , IKONCOL (K) |

NOT: Program dökümünde kullanılan | işareti, sütunlarımızın darlığı yüzünden kesilen satırları göstermektedir. Lütfen bu işaretin bulunduğu satırlarda return veya enter'a basmadan altındaki satırı yazmaya devam edin.

End If
If BASILAN-I1İ2
BULANIK2| MOUSEKEY |
SHADEBOX(IKONT(K,1),IKONT(K,2), |
IKONB(K,1),IKONB(K,2), Ü
True, IKONTEX$ (K) , IKONCOL (K) |
End If
If BASILAN-I10
CMDSCRBCK-İ
SHADEBOX(IKONT(K,1),IKONT(K,2), Ü
IKONB(K,1),IKONB(İK,2),
True, IKONTEX$ (K) , IKONCOL (K) |
Sereen Hide 0
End If
If IKONTEX$ (BASILAN) -"Undo"
UNDO
SHADEBOX(IKONT(K,1),IKONT(K,2), |
IKONB(K,1),IKONB(K,2)
True, IKONTEX$ (K) , IKONCOL (K) |
End If
If IKONTEX$(BASILAN)-"Ouit"
Fade 3
Wait 45
Exit
End If
End If
End If
End If
ARX—İ : ARY-Iİ
If RAWKEYS-LAMIGA
: ARY-A *
End If
If RAWKEYS-RAMIGA
ARX-XDISP : ARY-YDISP
End If
If PRESKEY-UARROW
Add SCROFFY, -ARY
If SCROFFY>O
Screen Offset 4,SCROFFX, SCROFFY
Else
SCROFFY-0
Screen Offset 4, SCROFFX, SCROFFY
End If
End If
If PRESKEY-DARROW
Add SCROFFY,ARY
If SCROFFY<Screen Height (4) -YDISP
Screen Offset 4, SCROFFX, SCROFFY
Else
SCROFFY-Screen Height (4) -YDISP
Screen Offset 4, SCROFFX, SCROFFY
End If
End If
If PRESKEY-LARROW
Add SCROFFX, -ARX
If SCROFFX>0O
Screen Offset â4,SCROFFX, SCROFFY
Else
Screen Offset 4,SCROFFX, SCROFFY
End If
End If
If PRESKEY-RARROW
Add SCROFFX,ARX
If SCROFFX<Screen Width(4)-XDISP
Screen Offset 4,SCROFFX, SCROFFY
Else
SCROFFX-Screen Width (4) -XDISP
Screen Offset 4,SCROFFX, SCROFFY
End If
End If
Loop
Screen Close O
End Proc
Procedure INITPROG
cx PROGRAM HAZIRLIKLARI *
"& VAR:
PIXKAY2-10
PARSINY(1)-0
PARSINY(2)-360
PARSINY(3)-0
PARSINY(4)-4
PARSINY(5)-10
For K-l1 To 5
Next
** CONTS:
RARROW-28
UARROW-30
DARROW-31
LAMIGA-6GA
RAMIGA-128
Degree
Screen Open 0,640,70,16,Hires
Screen Display 0,,244,,
Palette $0,$BA9,$310,$FED,$F,$505,$A64, |
Off
Flash Off
Paint 0,0
SHADEBOX(0,0,639,49,True,'',0)
Ink 3
Set Text 6
Text 5,60,"Efekt 1.00 Amiga Dergisi 1993"
Set Text 0
INITIKON
BASIKON
End Proc
Procedure INITIKON
rk IKON DATALARI BURADA
IKONSAY-1İ2
For To IKONSAY
Read IKONT(K,1İ),IKONT(K,2)
Read IKONB(K,1),IKONBİK,2)
Read IKONTEXŞ$ (K) , IKONCOL (K)
Next
Data
Data 6,17,106,30,"Load Iff",5
Data 6,32,106,45,"Save Ifİf",5
Data 118,2,184,15,"$Sinus",15
Data 118,17,184,30,"x",4
Data 118,32,184,45,"Yy",4
Data 196,2,265,15,"$Pixel",15
Data 196,17,276,30,"Bulanik X",5
Data 565,2,615,45,"Ouit",15
Data 625,2,635,6,"",5
Data 505,2,553,45,"Undo",15
Data 196,32,276,45,"Bulanik Y",5
End Proc
Procedure GETSINPARL(AXIS$I
'* Scopy X ve Scopy Y rutinleri
icin parametre okur. *
Hk *
'* AXIS$ Hangi rutin icin Ki
Vi okuyacagi bu degiskendedir. *
If AXIS$-"axis y"
ALTDEGER-PARSINY(1)
USTDEGER-PARSINY(2)
BASDEGER-PARSINY(3)
ARTIS-PARSINY (4)
PIX-PARSINY (5)
Else
ALTDEGER-PARSINX(1)
USTDEGER-PARSINX(2)
BASDEGER-PARSINX(3)
ARTIS-PARSINX (4)
PIX-PARSINX(5)
End If
Screen Open 2,320,80,4,Hires
Screen Display 2,208,163,,
Curs Off
Flash Off
Palette $0,$BA9,$555, $FED
Cls 1
SHADEBOX(1,0,319,79,False,"",3|
Pen 2
Locate 1,İ : Print "Alt Sinir"
22,1 : Print “Ust Sinir"
Locate 1,3 : Print "Baslangic"
hocate 22,3 : Print "Artis"
Locate 8,5 : Print "Pixel Derinligi "
Paper 0
Pen 3
Locate 15,1 : Print (ALTDEGER) ,3)
Locate 35,1 : Print "*Str$ (USTDEGER) ,3)
Locate 15,3 : Print Right$(" "*Str$(BASDEGER) ,3)

NOT: Program dökümünde kullanılan | işareti, sütunlarımızın darlığı yüzünden kesilen satırları göstermektedir. Lütfen bu işaretin bulunduğu satırlarda return veya enter'a basmadan altındaki satırı yazmaya devam edin.

Locate 35,3 Print Rightş("
Locate 27,5 : Print Right$("
Ink 2,1
SHADEBOX(20,55,80,75,True,"Grab",3|
SHADEBOX(240,55,300,75,True,"Okay",3)1
Limit Mouse
While 1
While Mouse Key-0
Wend 5
While Moüse Key-l
Wend
MBAS-İ
If X Mouse>261 and X Mouse<281
If Y Mouse>l169 and Y Mouse<178
Locate 15,1 : Input "";ALTDEGER
Locate 15,1
Print Right$("
Curs Off
MBAS-O0
Else
If Y Mouse>i83 and Y Mouse<193
Locate 15,3 : Input "";BASDEGER
Locate 15,3
Print Right$("
Curs Off
MBAS-O0O
End If
End If
End If
If X Mouse>342 and X Mouse<361 and MBAS-İ
If Y Mouse>i69 and Y Mouse<178
Locate 35,1 : Input "";USTDEGER
Locate 35,1
Print Right$("
Curs Off
MBAS-O0O
Else
If Y Mouse>l183 and Y
Locate 35,3 : Input "";ARTIS
Locate 35,3
Print Right$("
Curs Off
MBAS-O0
End If
End If
End If
If Y Mouse>202 and Y Mouse<210 and MBAS-I
'T£ X Mouse>308 and X Mouse<328
Locate 27,5 : Input "";PİX
Locate 27,5
Print
Cürs Off
MBAS-O0
End If
End If
If Y Mouse>217 and Y Mouse<238 and MBAS-İ
If X Mouse>216 and X Mouse<248
GRAB-İ
Exit
Else
If X Mouse>327 and X Mouse<359
GRAB-O0
Exit
End If
End If
End If
Wend
If AXIS$-"axis y"
PARSINY (1) -ALTDEGER
PARSINY (2) -USTDEGER
PARSINY (3) -BASDEGER
PARSINY (4) -ARTIS
PARSINY(5)-PIX
Else
PARSINX (1) -ALTDEGER
PARSINX (2) -USTDEGER
PARSINX (3) -BASDEGER
PARSINX (4) -ARTIS
PARSINX(5)-PIX
End If
Screen Close 2
Screen 0
Limit Mouse 128,243 To 448,308
End Proc
"*Str$ (ARTIS),3)
"4Str$(PIX),3)
(ALTDEGER) ,3)
"4Str$ (BASDEGER) ,3)
"*Str$ (USTDEGER) ,3)
(ARTIS),3)
Procedure SCOPY YİMKEY|
'* Y ekseninde sinus ile kopyalama yapar *
Hk *
'* MKEY Mouse Key (1,2)
y'|
ART-PARSINY(4) : ACI-PARSINY(3)
TMPSCR
Screen Copy 4 To 5
Screen To Back 4
Screen Show 5
Screen 4
Wait Vbl
For X-0 To Sereen Width(5)
IT-Int (Sin(ACI) *PARSINY(5))
Screen Copy 5,X,0,X41,Screen Height(5) To 4,X,IT
Add ACI,ART
If ACI<PARSINY(1)
ART--ART
End If
If ACI>PARSINY(2)
ACI-PARSINY(2)
If
ACI-ACI mod 360
Next
Wait Vbl
Screen To Back 5
Screen Hide 5
Screen 0
End Proc
Procedure SCOPY XİMKEY|
e e e e Ye de e e le e de Ye Ye e e de e Ye e lr Ye e
'* x ekseninde sinus ile kopyalama yapar *
rk *
'* MKEY Mouse Key (1,2) *
le le le ik le le Ye le lr le e e e ie
—GETSINPAR|'axis x'|
ART-PARSINX(4) : ACI-PARSINX(3)
TMPSCR
Screen Copy 4 To 5
Screen To Back 4
Screen Show 5
Screen 4
Wait Vbl
For Y-0 To Screen Height (5)
IT-Int (Sin(ACI) *PARSINX(5))
Screen Copy 5,0,Y,Screen Width(5), |
To 4,IT,Y
Add ACI,ART
If ACI<PARSINX(1)
ACI-PARSINX(1)
End If
If ACI>PARSINX(2)
ART--ART
ACI-PARSINX(2)
End If
ACI-ACI mod 360
Next
Wait Vbl
Screen To Back 5
Screen Hide 5
Screen 0
End Proc
Procedure BULANIK2(MKEY|
kkk kkk ik b b b bk
'* efeckt 2
'* Etraf bulanir
'* MKEY Mouse key (1,2) *
If MKEY-2
derinligi 10-99)", |
Str$(PIXKAY2)-" ",21
PIXKAY2-Val (Param$)
Pop Proc
End If
TMPSCR
Screen To Back 4
Screen Show 5
Screen Copy 4 To 5
For Izl To Screen
X8-Rnd (2*PIXKAY2) -PIXKAY2
Screen Copy 5,1,0,141,Screen To 4,1,X8
Next
Screen To Back 5
Screen Hide 5
Sereen 0
End Proc

NOT: Program dökümünde kullanılan | işareti, sütunlarımızın darlığı yüzünden kesilen satırları göstermektedir. Lütfen bu işaretin bulunduğu satırlarda return veya enter'a basmadan altındaki satırı yazmaya devam edin.