Bu sayfadaki yazılar
Sayfanın metni
Sayfa 62
Şimdi sıra geldi grafik ekranına yazı yazmaya. Bunun için iki komutumuz var. CHAR x, y, kod, mod, ölçek ile istediğimiz karakteri, ekranın istediğimiz bir yerine istediğimiz büyüklükte yerleştirebileceğiz. X ve Y koordinatları, karakterin sol üst köşesinin geleceği koordinatlar olacak. Burada, her karakterin bilgisayar için 8 x 8'lik bir kare olduğunu unutmayın. 'kod' ile de, basılacak olan karakterin ekran kodunu gösterirsiniz. Bu ekran kodlarını COMMODORE 64 el kitabından öğrenebilirsiniz (A=1, C=3... gibi). 0-511 arasında olmalıdır. 'ölçek' ise karakterin uzunluğunu göstermektedir. Karakterin genişliği daima 8 nokta olacaktır, ancak uzunluğu ölçek*8 formülüne göre değişecektir. TEXT x, y, yazı, mod, ölçek-y, ölçek-x şeklinde kullanılan daha genel emir ise daha değişik. 'yazı' yerine yerleştirdiğiniz karakter dizisi (ki bu ya tırnak işaretleri arasında bir yazı olmalı ya da bir karakter değişkeni), belirttiğiniz X ve Y koordinatlarından itibaren ekrana basılır. 'ölçek-y' tıpkı CHAR komutundaki gibidir. 'ölçek-x' ile de arka arkaya gelen iki karakterin sol üst köşeleri arasında kaçar nokta kalacağı belirtilmekte. Normalde 8 olması gerekir. Ayrıca 'yazı' yerine kullanılan karakter dizisinin de bazı etkileri olacaktır. Örneğin CTRL-A işareti varsa, bundan sonra gelecek yazı büyük harflerle yazılacaktır. CTRL-B ise geri kalan yazıyı küçük harflere dönüştürecektir. RVSON yazıyı negatif yaparken, RVSOFF tekrar normale döndürecektir. Eğer birkaç karakter değişkeninden oluşuyorsa, bunların arasına + konmalı, A$+B$+"vvv"+STR$(T) gibi. Ve son dikkat edilmesi gereken nokta, + ve sonra gelen tüm sayıları gerçekten sayı olarak yazmanız gerektiği. Eğer bir değişken kullanırsanız, komut garip şeyler yapacaktır. Ekranda belli bir koordinatta nokta olup olmadığını TEST(x,y) ile öğrenebilirsiniz. A=TEST(100,100) komutu sonucunda, eğer 100/100 koordinatında nokta varsa A'nın değeri 1 olacaktır. Aksi takdirde sıfır değerini alacaktır.
Artık yavaş yavaş sonuna geliyoruz. Sırada çok ilginç bir komut ikilisi var. Bu komutlarla, istediğiniz bir şekli, göstereceğimiz yöntemlerle tanımlayıp ekranda istediğiniz büyüklükte ve döndürerek göstermeniz mümkün olacak. Şimdi, elimizde küçük bir kalem olduğunu düşünelim. Bu kaleme ne yapması gerektiğini söyleyerek istediğimiz şekli çizebiliriz. Önce DRAW komutunu görelim. DRAW tanım, x, y, mod şeklinde kullanılan bu komutta en önemli kısım, tabii ki tanım kısmı. Aslında burası bir karakter değişkeni, A$ gibi. Dolayısıyla, bir cismi tanımlarken en fazla 255 karakter kullanabiliyoruz. Bu karakterler 0-9 arası rakamlardan oluşuyor. Her biri kalemimize bir komut gönderiyor. Anlamlarını görelim:
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 63
Sağa git, Yukarı çık, Aşağı in, Sola git, Anlamı yok, Sağa git ve bir nokta koy, Yukarı çık ve nokta koy, Aşağı in ve nokta koy, Sola git ve nokta koy, Dur
Örneğin A$="1515" ile iki yatay noktadan oluşan bir şekil tanımlamış oluruz. Ancak DRAW komutundan önce, cismin ekrandaki büyüklüğünü ve
PROGRAM ADI : S.CIRCLE açısını belirtmemiz gerekir. Bunu da, ROT açı, ölçek ile yapabiliriz. 'açı' yerine 0-7 arası bir değer verilebilir. Her bir değer 45 ile çarpıldığında elde edilecek açıyı temsil eder. Ölçek için herhangi bir sınırlama yok. Ancak çok büyük olursa ekrana sığmayabilir. Eğer hazırladığınız ekranı MPS801 veya MPS803'de bastırmak isterseniz COPY komutunu kullanacaksınız. Diğer yazıcı markaları, eğer uygun bir arabirim taşımıyorlarsa bu komutla işlemezler. Ve son emir de geldi artık. Bu pek önemli bir emir değil. Eğer A=GRAPHICS komutunda olduğu gibi
PROGRAM ADI bir değişkene GRAPHICS'i eşitlerseniz, sonuçta o değişkenin içeriği 53248 olacaktır. Bu, "Video Interface Chip" (VIC) adı verilen ve COMMODORE 64'ün tüm grafik işlemlerini gerçekleştiren ünitesinin yazmaçlarının (register) başlangıç adresidir. Örneğin POKE 53281,2 diyerek ekran kırmızı yapılabilmekteyken, POKE GRAPHICS+332,2 ile de aynı şey yapılabilir, çünkü ekran rengi 33 numaralı sicile bağlıdır. Sicil numaralarını COMMODORE 64 el kitabında bulabilirsiniz. Grafikle işimiz bu kadar. Gelecek sayıda görüşürüz... O
S.REC & PAINT
00100 HIRES 2,15 FOR Izi TO 188 STEP 3 00120 CIRCLE 168,100,100,1,1 00130 NEXT :PAUSE 3
PROGRAM ADI : S.CHAR
00100 HIRES ©0116 FOR Izi TO 315 STEP 8 20120 CHAR AYI 00130 NEXT :PAUSE 3 *1:1F K<256 THEN i Ba
PROGRAM ADI : S.PLOT
00010 HIRES 2,15:MULTİ 2,3,4 FOR Izi TO COL RNDC8)*16,R PLOT PAUSE 3:RUN
PROGRAM ADI : S.BLOCK
©0100 HIRES 2,15 FOR TO 128 08120 BLOCK 32864RNDC1) 1) B0200 5:60TO 100
PROGRAM ADI
3
HIRES 2,15 A$z"5555555578888888757855555788888 75785555555788888889" FOR TO AS, I*x30,1*20,1:NEXT 3:K-K*7:GOTO 20
PROGRAM ADI : S.LINE
HIRES 2,15 DEF 8041100 080025 K15-71YLERN FOR TO 300 STEP 3 68040 LİNE AYI, KAKA, 1)4Y2,1 NEXT PAUSE 4:60T0 18
©0010 HIRES 2,15 FOR 1-1 TO 00025 YERNDC8) «200 IF X4X1>319 OR Y*Y1)199 THEN 25 60028 REC FOR 1-1 TÜ 15:PAİNT RNDCB) NDC8)x160420,1:NEXT 20040 PAUSE 3:RUN
PROGRAM ADI : S.MULTI
©0010 HIRES 2,15 MULTİ FOR 1-5 TO 80 STEP 5 00040 CIRCLE 00040 PAUSE 3:RUN
PROGRAM ADI
HIRES 2,15 MULTİ *16 FOR 1-5 TO 80 STEP 5 00040 CIRCLE ©0050 PAİNT NEXT 20065 FOR Izi TO 100:MULTİ RNDC8B)*16,RNDC 8)*16,RNDC8S)*16:FOR TO 200:NEX T :NEXT ©0070 RUN
1 S.MULTI
PROGRAM ADI: S.ANGL
00010 HIRES 2,15 FOR Isi TO 18 (8) 4320 :MYZERND (8 ) #200 THEN RNDC8) IF THEN 38 RYZERND (8) THEN RNDC8) IF RYZ<5 THEN 30 Sİ THEN 30 FOR TO 360 STEP SPZ:ANGL MXZ,M YATI LENEKT NEXT PAUSE 3:6G0TO 10
GER)