Amiga Dünyası sayı 16, sayfa 26

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 26

Hepinize selam. Bu ayki yazıma Hakan arkadaşımızın sorularını cevaplayarak başlamak istiyorum. Soruların cevapları belki sizleri de bazı konularda aydınlatabilir. Çünkü sorular C öğrenmek isteyen herkesin genelde sorduğu türden. İlk soru şu; AmigaBasic'teki INKEY$ fonksiyonu gibi ekrana yazmadan klavyeden bilgi alma fonksiyonunun ne olduğu, AmigaBasic'teki INKEY$ gibi bir fonksiyon Amiga C'de mevcut değil. Buna benzer gets() ya da getchar() gibi fonksiyonlar mevcut. Fakat tabii, bu fonksiyonlar tam olarak INKEY$ fonksiyonunun yapmış olduğu işi yapmaz. Çünkü bu fonksiyonlarda bir karakter girildikten sonra, RETURN tuşuna basmak gerekir. Aynı zamanda yazılan karakter de ekranda görülür. Fakat bu fonksiyona benzer bir fonksiyon hazırlanabilir. Bunu yapmak için gerekli olan ilk şey, klavyeyi kontrol eden registerin adresini okumak. Ben size bu registerin adres değerini vererek, sizin için ilk adımı atabilirim. Bundan sonrası size kalmış. Bu değer $bfec01 adresidir. Size bir ipucu daha: Değişkeni şöyle tanımlayabilirsiniz. Böylece gelen değer pozitif bir tamsayı olmuş olur.

unsigned char 1:

Artık bundan sonrası *key değişkeninin değerini okumak. Gerçi size de bundan başka fazla iş düşmüyor. Gelelim ikinci soruya: arkadaşımız program içerisinde Basic'teki Color ve ifadelerinin benzerinin nasıl kullanılacağını sormuş. Bu soruların cevabını öğrenmeden önce, C'de bilmeniz gereken bazı noktalar. İlk olarak, Basic'teki gibi bir Window (pencere) ve Screen (ekran) açmayı öğrenmemiz gerekiyor. Çünkü bu komutlar daha çok bu ekran ve pencereleri ilgilendiriyor. Fakat bilginiz olsun diye bir iki örnek verebilirim. Başlangıçta ekranın kaç renkli olacağını Screen açarken belirliyoruz. Daha sonra seçmek istediğimiz kalem rengini: SetAPen(rp, renkkodu), kağıt rengini: SetBPen(rp, renkkodu), kazı modunu ise: SetDrMd(rp, JAM2) olarak belirtiyoruz. Gerçi bunları Screen açarken de belirtebiliriz, sonradan bir değişiklik gerekirse yukarıdaki komutları kullanmalıyız. Eğer renklerin paletleriyle oynamak istersek:

vp.renkkodü.kırmızıdeğer, yeşildeğer, maviıdeğer)

bilgilerini vermemiz gerekiyor. Buradaki kırmızı, yeşil ve mavi (RGB) değerleri 0-15 arası olabiliyor. Bu sayede renk kodu altındaki rengin değerini 4096'lık bir paletten seçebiliyoruz. Vp ise, ViewPort adresini belirtiyor. ViewPort adresi, ekranın renk saklandığı adresi veriyor. ViewPort adresini screen açtıktan sonra screen alıyoruz. Gördüğünüz gibi, bu noktada bilmeniz gereken daha başka şeyler var. Fakat ben gene de bilginiz olsun diyerek vermek istedim. Bu konularla ilgili örnekleri daha sonraki sayılarda bulabilirsiniz. Üçüncü soruda ise, C'de grafik komutlarının neler olduğu ve bunların nasıl kullanılacağı. Az önce anlattığım gibi, ilk olarak bir screen ve window açmalısınız. Yukarıda vermiş olduğum komutlar da zaten grafik komutlarına giriyor. Bundan başka Amiga C'de oldukça fazla grafik mevcut. Mesela; ReadPixel(), ClipBlit() gibi. Bu örnekleri çoğaltmak mümkün. Fakat bunları yazmak ve açıklamak bir kaç sayı sürebilir. Bu nedenle yeri geldikçe öğreneceğiz. Zaten şöyle bir durum mevcut: Bir komutu kullanmasını öğrendikten sonra diğerlerini kullanmak çorap söküğü gibi gelir. Önemli olan hangi komutun ne iş yaptığını ve hangi parametreleri istediğini öğrenmek. Bu bilgilerin tamamını da Amiga kitap kütüphanesinde bulabilirsiniz. Bu kitapların bazıları şunlar; Amiga Rom Kernel Reference Manual ya da Hardware & Devices Reference Manual. Bunlar zaten Amiga'da program yazmayı öğrenmek isteyen herkeste bulunması gereken kitaplar. Dördüncü soruda Basic'teki Ptab ve Line komutlarının benzerlerinin C'deki karşılığı; söylemem gerekir ki; Basic'teki her komutun C'de bir karşılığı olmayabilir. Bunun için ilk olarak bu komutların ne iş yaptığını tespit edip, benzerini C'de bir alt routine olarak hazırlamak. Son soruda ise program çıktılarının (grafik, yazı gibi) printer'dan nasıl çıkarılacağı ve Türkçe nasıl hazırlanacağı. Printer işlemleri için, eğer yazı yazdıracaksanız normal bir dosya açar dosya ismi yerine "PRT:" yazmalısınız. Bunun sonucunda dosya'ya yazmak istediğiniz her bilgi printer'e gidecektir. Eğer grafik çizdirecekseniz, bu şimdilik uzun iş. Fakat ben size bu iş için kullanabileceğiniz bir yol gelecek sayılarda vereceğim. C'de Türkçe font kullanmak için, önceden bir font editörü yardımıyla herhangi bir boyda Türkçe fontları hazırlamalısınız. Bunu kaydettikten sonra, C'den "OpenDiskFont()" fonksiyonu yardımıyla, bu komutu kullanabilirsiniz. Artık bu ayki ilk örneğimize geçebiliriz. Bu ay ilk olarak Workbench üstüne basit olarak bir window'un nasıl açıldığını ve bu window'dan nasıl bilgi okunduğunu göreceğiz.

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