Bu sayfadaki yazılar
Sayfanın metni
Sayfa 43
Normal koşulda 'maske' %1111111111111111'dir. Yani her noktada renk vardır ve ekranda kesiksiz bir çizgi olarak görülür. Bunu %1111000011110000 olarak verirsek, ekrana çizilen çizgilerin kesik kesik olduğunu görürüz. Düz çizgiler için geçerli olmakla birlikte, istenen çizgi stilinde kullanılabilir. CIRCLE ya da ELLIPSE komutları için geçerli değildir.
Curs Off: Colour 1,$0 Set Line% 1100110011 Box 50,100 To 150,150 ____________ Şimdi de, bir şeklin içini boyama ya da doldurma komutlarına göz atalım.
PAINT KOMUTU: [PAINT(x),(y),(mod)] olarak kullanılır. Bir şeklin içini renklendirme ya da kapalı bir şekli doldurmaya yarar. X, Y boyanacak bölgenin herhangi bir noktasının koordinatlarıdır. MOD, ikiye ayrılır. MOD 0 olarak verilirse, ilk dış renkteki noktada boyamayı keser. MOD 1 verilirse: boyama, INK ile verilen renkten başka renk bulunduğunda durdurulur.
Curs Off: Colour 1,$0 Flash Off Do X1=XScreen(XMouse) Y1=YScreen(YMouse) CircleX1,Y1,15 PaintX1,Y1,1 InkRnd(16),Rnd(16) Wait5 Loop
BAR KOMUTU: BAR, BOX komutu gibi kullanılır. Sadece BAR ile yapılan dikdörtgenlerin içi doludur. [BAR (X1),(Y1) TO (X2),(Y2)] formatında kullanılır. X1, Y1 sol üst köşenin; X2, Y2 de sağ alt köşenin koordinatlarıdır.______ Curs Off: Flash Off
Colour 1 ,$0 Repeat I=Rnd(I5);X=Rnd(300)+10;Y=Rnd(170)+32;R=Rnd(30)+1
Ink 1: Bar X,Y To X+10,Y+10 Until Mouse Key 1 Ink 0 : Paint 0,0___________________________ POLYGON KOMUTU: POLYGON, içi dolu bir şekil elde etmeye yarar. [POLYGON (X1),(Y1) TO (X2),(Y2) TO (X3),(Y3)....] formatında kullanılır. Grafik kursorunun bulunduğu yerden başlayarak çizim yapılmak istenirse, [POLYLINE (X1),(Y1) TO (X2),(Y2)....] formatında da kullanılabilir. X1,Y1; X2,Y2; X3,Y3 çizgilerin başlangıç ve bitiş koordinatlarıdır. I Curs Off: Flash Off
Colour 1,$0 Repeat InkRnd(15) X1=RJKK200) : Yl=Rnd( 100): H=Rnd( 100): W=Rnd(90) PolygonX1,Y1 To X1+W,Y1To X1+W1/2,Y1+H ToX1,Y1 Until Mouse Key____________________________________
AMOS'ta, doldurma işlemi tek bir desen üzerinde olmaz. İstenirse desen değiştirilebilir. Hatta sprite bankasından kendi yaptığınız deseni kullanabilirsiniz.
SET PATTERN KOMUTU: Desen seçiminde kullanılır. [SET PATTERN (desen)] olarak kullanılır. Üçe ayrılır;
Desen=0 modunda, şeklin içi normal renkte ve desensiz olarak doldurulur.
Desen>0 modunda, AMOS'taki 34 desenden biri kullanılabilir. Bu desenler MOUSE.ABK dosyasının içinde saklıdır ve istenirse AMOS sprite programı ile değiştirilebilir. Fakat ilk üç desen mouse kursoru ile yapıldığından, 4. desenden sonraki desenleri değiştirmek doğru olur.
Desen<0, en güçlü moddur. Desen, bu kez sprite bankasını tercih eder ve şekil numarası aşağıdaki gibi hesaplanır:
SPRITE ŞEKLİ=DESEN*-1 Seçilen şekil, kullanımdan önce otomatik olarak aşağıdaki kurallara göre değiştirilecektir.
*Şeklin eni 16 noktaya indirilecek *Şeklin boyu ikinin katlarına yuvarlanacak. 1,2,4,8, 16, 32 gibi.
Şeklin düzenine göre, desen iki değişik şekilde ekrana yansır. İki renkli şekiller, monochrome olarak ekranda çıkar ve tamamıyla sayfa, çizgi rengini kullanır.
Birçok renk içeren desen yaratmak mümkündür. Bu düzende, şeklin rengi ile ön plan rengi AND'lenir. Sonra da sayfa rengi ile şeklin arka plan rengi OR'lanır. Böylece, değişik renkte desen elde edilir. Eğer orijinal renkleri kullanmak istiyorsanız, çizgi ve arka plan renklerini değiştirmelisiniz.
Yapılan şekli, sprite bankasından GET SPRİTE PALETTE ile çağırmayı unutma- malısınız.Aksi takdirde desenlerde, nor- mal desen ile boyama açısından bir deği- şiklik olmaz. I Load "AMOS_system/mouse.abk" Flash Off Curs Off Set Pattem -4 Get Sprite Palette Bar 100,100To 200,200_______________________
SET PAINT KOMUTU:
[SET PAINT (n)] olarak kullanılır. Dolu yani kapalı şekillerin dışına çizgi çekilip, çekilmeyeceği bu komut ile bilgisayara iletilir. n=1 ise, dolu şeklin dışı bir çizgi ile belirlenir. Bunun yararı, birbiri üzerinde aynı renkte olan şekilleri ayırt etmektir. n=0 ise, şekiller normal olarak çizilir.
I Curs Off: Flash Off Set Paint 1
I=Rjnd(15): X=Rnd(160)+10 : Y=Rnd( 130R32 : R=Rnd(35) Ink l,0 R : Bar X, Y To X+40,Y+40 , Wait5 Until Mouse Ke y Ink 0 : Paint 0,0
Şimdi de AMOS Basic dilinin yazı ile ilgili bazı komutlarına göz atalım.
TEXT KOMUTU: [TEXT (x),(y),( "karakter serisi")] olarak kullanılır ve verilen karakter serisini istenen koordinatlara yerleştirmeye yarar. X,Y değişkenleri yazının konulacağı koordinatları belirtmektedir. Verilen karakter serisi, tırnak içinde olmalıdır. _____ Flash Off
Dim A$(40) Input "kac tane isim";A ForI=l ToA Input sim";A$(I) "i Next I ForI=l ToA YAZ[ $(I)] A Nex I t End Procedure YAZ[A$] For 1=100 To 90 1 Text 100,I,A$ Wait 1 If 1= 182 Then Text 100,190," Next I EndProc _______________________________________
GR WRITING KOMUTU: Grafik üzerine yazı yazımında genellikle güçlük çıkar. İstenen tarzda yazılım yapılabilmesi için, AMOS'a GR WRITING komutu eklenmiştir. Diyelim ki, renkli bir şeklin içine yazı yazılacak. TEXT komutunu kullanıp yazdığınız zaman harflerin dışının sayfa rengini aldığını görürsünüz.
Curs Off Ink 2,5 Bar 100,100 To 200,200 Text 150,150,”AMOSTEXT” programı yazılıp çalıştırıldığında, yazıların şekilde boşluk yarattığını görürsünüz. Bunu ortadan kaldırmayı veya böyle bir yazılım yapmayı GR WRITING komutu sağlar.
[GR WRITING (n)] formatı altında kullanılır. n değişkeni binary olarak verilirse, yazılım modunu anlamak daha kolay olur. Bu modda verildiğinde, n değişkeni 3 bitten oluşur (%000 gibi). 1. bit 0, yani %000 olursa; bu moda Amiga'da JAM1 denir. JAM1'de yazılan yazı, şeklin üzerinde boşluklar yaratmaz ve hiçbir renk değişikliği bu modu engellemez.
Bar 100,100 To 200,200 Gr Writing %000 Text 150,150,"AMOSTEXT" 1. bit 1, yani %001 olursa; bu moda, JAM2 adı verilir. JAM2 modu, normal yazılım demektir. Yani GR WRITING komutu kullanılmadığı takdirde Amiga bu modda grafik yazılımı yapar.
2. bit 1 ise; Amiga, XOR modunda yazılım yapar. Bu mod, EXCLUSIVE OR dediğimiz lojiksel işlemi yapar. Bu modun yararı, değişik renklerle karşılaştığında, yazı renginin değişmesidir.
3. bit 1 ise, grafik yazılım modu INVERSEVID'dir. %100 olarak verilirse, karakter rengi ters çevrilir.
GrWriting %100 Text 100,100,,,GELGELELİM,, Bu modlardan 2 ya da 3 tanesi bir anda kullanılabilir. %101 verildiğinde, Amiga hem karakter renklerini tersine çevirir, hem de şeklin üzerinde yazılan karakterler tarafından boşluk bırakılmaz.
Circle 100,100,30 Paint 100,100,1 GrWriting %101 Text 100,100," YAZILIM" CLIP KOMUTU: CLIP komutunun işlevi, ekranı küçültmek diyebiliriz. AMOS'un normal ekranı sol üst köşe 0,0; sağ alt köşe de 320,200 olmak üzere 320*200 noktadan oluşmaktadır. Tüm işlemler, bu ekran içinde yapılmaktadır. Fakat CLIP komutunu kullanarak, bu ekranı istenilen koordinatlara indirgeyebiliriz. Yapılan tüm grafik işlemleri CLIP ile verilen koordinatlar içinde yapılır. Koordinatların dışında kalan işlemler ekrana yansımaz.
[CLIP (x1),(y1) TO (x2),(y2)] olarak kullanılır. X1,Y1 yeni grafik alanının sol üst köşesinin; X2,Y2 de sağ alt köşesinin koordinatlarıdır.
Curs Off Yl=YScreen(Y Mouse) Flash Off Circle X1,Y1 15 , Colour 1,$0 Paint X1,Y 1,1 Clip 50,50 To 200,150 Ink Rnd(16),Rnd(16) Do Wait 5 X1=XScreen(X Mouse) Loop
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 42
=COLOUR KOMUTU: [(değişken) = COLOUR ((renk register'ı))] olarak kullanılır. Komut, 0 ile 31. renk register'ında bulunan renk değerini 'değişken'e atar.
Curs Off: Flash Off C=Colour(0) A=Colour(l) B=Colour(2) Repeat C=C+1 :A=A+1 :B=B+1 Locate 0,0: Print "dis ekran rcngi=";Hex$(Colour(0)3 ) Locate 0,1 : Print "sayfa rengi=";Hex$(Colour( 1 ),3) Locate 0,2 : Print "yazi rengi=";Hex$(Colour(2),3) Colour0.C Colour 1 ,A Colour 2,B Wait 10 Until Mouse Key _________________________
PALETTE KOMUTU: [PALETTE renk listesi] olarak kullanılır. PALETTE, COLOUR komutuna benzer, ama daha da geliştirilmiştir. Renk değerlerini, renk register'larına yüklemeye yarar. Sadece bir komutla birden fazla renk değerini girebilme özelliği vardır. Böylece, 64 tane register için ayrı ayrı COLOUR komutu kullanmak gerekmez.
[PALETTE $ff0,$F00,$666] yazıldığında, ilk üç register değeri değiştirilir. PALETTE komutundaki değer değişimi, 0. register'dan başlayarak yapılır.
Diyelim ki; sadece, 0 ile 3. renk register'ı değişecek ve aradaki register'lar değişmeyecek. Bunun için, [PALETTE $666,,$400] yazmalısınız. Komutta, boş bırakılan değerler değiştirilmez; sadece verilen değerlerin register'ları değişir. ____________
Palette $FFF,$FFF,$0 Print "YAZI" ______________________ Şimdi biraz da çizimle ilgili komutlara göz atalım. GR LOCATE KOMUTU:
[GR LOCATE (x),(y)] olarak kullanılır ve grafik kursorunun yerini belirler. Yani çizimin nereden başlayacağı, bu komutla belirtilir. 'x', x koordinat değerini belirler. Bu da, başka özel bir ekran açılmamış ise, 0 ile 320 arasında değişir, 'y' ise, y koordinat değeridir ve normal koşullarda 0 ile 200 arasında bir değer alır. Bunun anlamı, AMOS'un normal ekranında 200*320 tane nokta olduğudur. Tabii ki, diğer ekranlarda bu 640*200 ya da 640*400'e kadar çıkartabilmektedir.
Colour 1,$0 Curs Off Gr Locate 100,100 Draw To 200,200 ___________________ =XGR =YGR KOMUTLARI [(değişken) = XGR] [(değişken) = YGR] olarak kullanılırlar. Grafik kursorunun ye- rini değişkenlere atarlar.
Curs Off: Colour 1,$0 Circle 100,100,20 Print Xgr,Ygr
PLOT KOMUTU: [PLOT (x),(y),(renk register'ı)] olarak kullanılır. Çizimin en kolay ve en temel komutlarından biridir. Ekrana tek bir nokta koymaya yarar. 'x', x koordinatının değerini; 'y', y koordinatının değerini ve 'renk register'ı' da hangi renk register'ının kullanılacağını gösterir. Verilen değerlere karşılık gelen yere, verilen renk register'ından renk değerini alarak bir nokta koyar. Eğer renk register'ı verilmezse, INK komutu rengini değiştirmeden, noktayı, verilen değerlere koyar.
Curs Off: Colour 1,$0 Repeat Plot Rnd(319),Rnd(199),Rnd(16) Until Mouse Key___________________ =POINT KOMUTU: [(değişken)=POINT((x,y))] olarak kullanılır. Verilen değerlerdeki renk değerini değişkene yükler.
Curs Off: Colour 1,$0 Circle 100,100,20 Paint 100,100,1 C=Point(100,100) Print "100,100 KOORDİNATLARINDAN RENK REGISTERI=";C ______________
DRAW KOMUTU: DRAW komutu, ekrana çizgi çizmeye yarar. [DRAW (X1),(Y1) TO (X2),(Y2)] olarak kullanıldığında; X1, Y1 koordinatından başlar ve X2, Y2'ye kadar düzgün bir çizgi çizer. [DRAW TO (X3),(Y3)] olarak kullanıldığında da, son kalınan yerden (grafik kursorundan) X3, Y3 değerine kadar devamlı bir çizgi çizer.
Curs Off : Flash Off
Colour 1,$0 XE=1 YE=2 VE=1 TE=3 Z=0 Repeat InkRnd(16) Draw X,Y To V,T If X>310 Then XE=-(Rnd( 10)) If Y> 190 Then YE=-(Rnd( 10)) If V< 10 Then VE=(Rnd(10)) If T<10ThenTE=(Rnd(10)) If V>310ThenVE=-(Rnd(10)) If T>190 Then TE=-(Rnd(10)) If X< 10 Then XE=(Rnd( 10)) If Y< 10 Then YE=(Rnd(10)) X=X+(XE)
Y=Y+(YE) V=V+(VE) T=T+(TE) Z=Z+1
If Z=200 Cls:Z=0 EndIf Until Mouse Key __________________ BOX KOMUTU: [BOX (X1),(Y1) TO (X2),(Y2)] olarak kullanılır. Ekrana boş bir dikdörtgen çizmeye yarar. X1, Y1 dikdörtgenin sol üst köşesinin koordinatları; X2, Y2'de dikdörtgenin sağ alt köşe koordinatlarıdır.
Re dikdörtgen boyutlarini mouse pointer ile ayarlayin m Do If Mouse Key=l KOOR X1=X:Y1=Y Gr Writing 2 While Mouse Key=l BoxXI YlToX.Y . KOOR BoxX YlToX,Y l, Wend Gr Writing 1 BoxX YlToX,Y l, Endl f Loop Procedure KOOR Shared X,Y X=X Screen(X Mouse): Y=Y Screen(Y Mouse) EndProc_______________________________________
POLYLINE KOMUTU: POLYLINE, DRAW komutuna çok benzer. Aralarındaki fark, POLYLINE komutu ile birden çok çizgi elde etme olanağı olmasıdır.
[POLYLINE (X1),(Y1) TO (X2),(Y2) TO (X3), (Y3) ......] olarak kullanılır. İlk koordinattan başlayarak verilen koordinata kadar düzgün çizgiler çizer.
POLYLINE, aşağıdaki örnekte göreceğiniz gibi birçok DRAW yazma derdini yok etmiştir.
Draw 10,10 To 20,20 Draw To 30,30 Draw To 40,40 yazmak yerine, daha basit olarak;
Polyline 10,10 To 20,20 To 30,30 yazarak aynı sonucu alabiliriz.
Curs Off: Colour 1,$0 Timer=0 ForN=0To 100 InkRnd(15) Polyline Rnd(320),Rnd(2O0) To Rnd(320),Rnd(200) To Rnd(320),Rnd(200) Next____________________________
CIRCLE KOMUTU: [CIRCLE (x),(y),(r)] olarak kullanılır. Ekrana çember çizmeye yarar. X ve Y çemberin merkez koordinatlarıdır. R de çemberin yarı çapıdır. Verilen koordinatlarda R yarı çapı ile çember çizer.
Curs Off: Flash Off Colour 1,0 XE=1 : YE=2 : VE=1 : TE=3 : Z=0 Repeat Ink Rnd(16) Gr Writing 2 Circle X,Y, 10 Circle X,Y, 10 If X>310 Then XE=-(Rnd(10)) If Y>190 Then YE=-(Rnd(10)) If X<10 Then XE=(Rnd(10)) If Y<10 Then YE=(Rnd(10)) X=X+(XE): Y=Y+(YE) Until Mouse Key ___________________ ELLIPSE KOMUTU: [ELLIPSE (x),(y),(r1),(r2)] olarak kullanılır. Ekrana elips çizmeye yarar. X ve Y merkez koordinatlarıdır. Bu koordinatlara R1, R2 yarı çaplarında bir elips çizer. Eğer R1>R2 ise, yatık; R2>R1 ise dik bir elips olur. R1=R2 olursa bir çember olur.
Curs Off: Flash Off Colour 1,$0 Repeat InkRnd(15) Rl=Rnd(90):R2=Rnd(90) X=Rnd(200): Y=Rnd(100): Ellipse X,Y,R1,R2 Until Mouse Key AMOS, çizgilerinizi değişik stillerde ekrana yansıtma olanağı da sağlamaktadır. Bu da SET LINE komutu ile gerçekleştiri- lir.
SET LINE KOMUTU: [SET LINE (maske)] olarak kullanılır. SET LINE komutu ile çizgi stili değiştirilebilir ve DRAW, BOX ve POLYLINE gibi komutlarda bu stil kullanılabilir. "Maske" 16 bitlik bir binary (ikili sayı sistemi) sayıdır. Bu sayıdaki 1, rengin olduğu noktalardır ve o noktada INK ya da başka bir komutla verilen renk var anlamına gelir.