Bu sayfadaki yazılar
Sayfanın metni
Sayfa 61
Hatırlarsanız geçen sayıdaki yazımda son olarak fahrenheit sıcaklık değerlerini celcius sıcaklık değerlerine çeviren ve daha önce kaynak kitap olarak belirttiğim "The C Programming Language" adlı kitaptan alınan bir program yapmış ve programın incelenmesine bu sayıda devam edeceğimi söylemiştim. Kaldığım yerden başlamadan önce biraz önce sözünü ettiğim kitaptan bazı örneklerin Amiga'ya uyarlanmış versiyonlarının yazı dizimde bulunacağını ve verilen programın o kitaptan yararlanılarak yazıldığını belirtmek amacıyla programın başına "K&R'nin kitabından alınarak Amiga'ya uyarlanmıştır" şeklinde bir comment (Tk. açıklama) ekleyeceğimi belirteyim. Buradaki "K&R" deyimi kitabın yazarlarının soyadlarının baş harflerinden oluşan (Kernighan & Ritchie) ve tüm dünyada kullanılan bir kısaltmadır.
Şimdi kaldığımız yere dönelim: Önce geçen sayıdaki yazıyı açın ve dördüncü kutudaki programın gözünüzün önünde olmasını sağlayın.
En son while döngüsünü incelemiştik. Şimdi programın nasıl çalıştığı konusundaki incelememize devam edelim.
Programın yaptığı işin oldukça büyük bir kısmı while döngüsü içinde yapılmaktadır. Celcius sıcaklıkları aşağıdaki satırda hesaplanmakta ve celcius adlı değişkene eşlenmektedir: celcius = (5.0/9.0) * (fahr-32.0);
Burada 5/9 terimi yerine 5.0/9.0 teriminin kullanılmasının sebebi, C'de iki tam sayının bölünmesi sırasında virgülden sonraki kısmın atılmasıdır. Eğer 5/9 terimini kullansaydık, bu sıfıra eşit olduğu için tüm değerler sıfıra eşit olacaktı. Bir sabitteki nokta işareti o sabitin floating point (Tk. virgüllü sayı) sayı olduğunu belirtir. Buradan 5.0/9.0 = 0.555...'dır ki bizim de istediğimiz budur.
Yine 32 yerine 32.0 yazdığım dikkati çekecektir. Aslında bu durumda ikisi de kullanılabilirdi. Çünkü fahr değişkeni bir floating point sayı olduğu için, eğer 32 yazsaydık bu değer C tarafından 32.0'a otomatik olarak çevrilecekti. Floating Point sayıları gereksiz olsa bile virgüllü şekilde (sayı.0) yazmamız programın daha anlaşılabilir olmasını sağlamaktadır.
Bu örnek, C dilinde oldukça kullanılan bir fonksiyon olan printf'in nasıl kullanıldığına da iyi bir örnektir. Printf'in ilk argümanı karakterlerden oluşan bir string'dir (karakter dizisi). Bu dizideki her % işareti buraya diğer argümanların konulacağını belirtir. Örneğin:
Printf ("% 4.0f %6.1f/n", fahr, celcius);
satırında %4.0f ekrana 4 basamaklı ve virgülden sonra hiç basamağı olmayan bir floating point sayı basılacağını, %6.1f ise yine bir floating point sayının ekrana basılacağını fakat sayının basamak uzunluğunun virgülden sonraki bir basamakla beraber altı olacağını belirtmektedir. Bu tanımlamaların bazı kısımları atlanabilir. Örneğin %4f; 4 basamaklı bir floating point sayının basılacağını, %.3f; virgülden sonra 3 basamağı bulunan bir sayı basılacağını sadece %f ise floating point bir sayının basılacağını belirtir. Printf %f'den başka decimal (ondalık düzen) tamsayılar için %d, octal (sekizlik düzen) sayılar için %o, heksadesimal (onaltılık düzen) sayılar %x, karakterler için %c, string'ler (karakter dizileri) için %s ve % işaretinin kendisi içinde %% simgelerini de tanımaktadır.
Printf'in argümanları, ilk argümanda belirtildikleri düzene uygun olarak verilmelidir. Yani eğer ilk argümanda ilk basılacak değer tamsayı, ikincisi floating point sayı olarak verilmişse ikinci argümanın integer (tamsayı), üçüncü argümanın floating point sayı olması gerekir. Aksi halde anlaşılmaz cevaplar alırsınız.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 60
Grafiklerin kalitesi demin de söylediğim gibi vasatın biraz üzerinde ve oyun az sayıda animasyona sahip. Ses ile ilgili olarak bir şey söyleyemeyeceğim çünkü oyunda herhangi bir ses efektine rastlamadım. Bilmeceler ise Buck gibi bir çocuk mantığıyla düşünülerek fazla zorlanmadan çözülebilir.
Sonuç olarak bu oyunu basit bir tatil eğlencesi arayanlara önerebilirim. Daha ciddi ve heyecanlı serüvenler peşinde olanlar yeni mevsimin oyunlarını beklesinler.
taze pil bulmalısınız. Bu pil'in nerede olduğunu merak ediyorsanız ipuçları bölümüne gözatmanız yeterli. Oyunda ekranın büyük kısmı grafik
SCAVENGER HUNT: Haberleşme cihazının pilini çıkarıp yerine mutfaktaki lavabonun altındaki bölümde bulacağınız kutunun içinden çıkan aygıtın pilini kullanın.
KING'S QUEST 3 - İPUÇLARI
Herhalde hepiniz Sierra On-Line'ın King's Quest arcade adventure serisini tanıyorsunuzdur. Grafikleri çok iyi olmasa da animasyon ve oynanabilirlik yönünden çok iyi olan bu serinin de Türkiye'de pek çok hayranı var. Fakat pek çok tanıdığımdan da duyduğum gibi, oynanan oyunların çoğu orijinal olmadığı için, oynayanlar oyunun pek çok yerinde, orijinal program kitabında açıklanan bazı kolaylıklara, mesela birazdan anlatacağım büyülere, sahip olmadıkları için takılıyorlar. Firma tarafından bir nevi kopya koruması olarak konmuş olan bu büyülerin hepsi uzun ve belli bir sırayla yapılması gerekiyor. Ayrıca oyun boyunca rastlayacağınız bazı önemli nesneler de bu büyüleri oluşturacağınız maddeleri imal etmeniz için önemli. Aşağıda size ilk önce King's Quest 3'teki yedi tane büyünün yapılışını açıklayacağım. Ayrıca bu büyüler için gereken maddelerin İngilizce ve Türkçe adlarını da yazının sonunda veriyorum. Verdiğim bu objelerin bazılarına büyülerde rastlayamayabilirsiniz, onları da oyunun başka yerlerinde ipucu olarak kullanın. Ayrıca bu objelerin birçoğunun adı büyülerde doğrudan verilmez, mantığınızı kullanıp bunları kısa sürede çıkarabilirsiniz.
* Hayvanların dilini anlama büyüsü: Bu büyüyü yapmanız için size; küçük bir kuş tüyü, bir hayvanın kürkünden koparılmış bir tutam kıl, kurutulmuş bir sürüngen derisi, bir kaşık dolusu balık kılçığı tozu, bir yüksük dolusu çiğ ve bir sihirli değnek lazımdır. Büyünün yapımı için ise şunları sırayla yapın: küçük tüyü, hayvan kılını ve sürüngen derisini sırayla çanağa koyun. Bunlara bir kaşık balık kılçığı tozunu da ekleyin, ve yüksük dolusu çiği de kaba boşaltın.
Karışımı şimdi elle karıştırırsanız hamurlaşacaktır. Bu hamuru iki parçaya bölün ve daha sonra bu hamur parçalarını kulaklarınıza koyun. Sonrada şu aşağıdaki kıtayı okuyun: "Feather of fowl and bone of fish Molded together in this dish Give me wisdom to understand Creatures of air, sea and land" ... ve sonra da sihirli değneği sallayın. Bu hamurlar kulaklarınızda tıkalı oldukça her türlü hayvanın konuşmasını anlayabileceksiniz. Ama unutmayın, onları duyabilir, fakat konuşamazsınız.