Amiga Dünyası sayı 24, sayfa 73

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 73

mizi ekrana ortalayarak yazmak için LOCATE emrini kullanıyoruz, ekran 80 sütun boyunda (yaklaşık) dolayısı ile 40 - (dd/2) satırı ortalayacaktır. Sonra ismi tarıyoruz, ilk karakterinden son karakterine (dd) kadar, bir harf varsa bunu - ile gösterecektik. Yok ama harf değil de boşluk varsa boşluk yazacağız. Bunu anlamak için MID$ emrinden yararlanıyoruz. MID$(d$,f, 1) komutu kısaca d$ isminin f'inci karakterinden itibaren bir karakter anlamında. Oyunun bundan sonraki ismine dada adını verdim (Umarım çocuğuma bir başkası isim verir).

dada: hak x hak +1 LOCATE 6,60:PRINT " LOCATE 6,60:PRINT "Puan : ";puan

x = INT (RND*5) y = 10 + INT(RND*20) FOR f = 1 TO y x = x+1 : IF x = 6 THEN x = 0 LOCATE 6,1 O.PRINT" LOCATE 6,10:PRINTj$(x) FOR a = (y-f)*25 TO y*25 NEXTg NEXTf IF x = 5 THEN puan = 0:GOTO dada Burada son derece gerilimli bir hava yaratıyoruz. Biraz- dan kullanıcıdan bir sessiz harf girmesini isteyeceğiz. Ön- ce puanını yazıyoruz, ilk satın önceden yazılmış olabile- cek pislikleri silmek için kullanıyoruz. Harfi sormadan ön- ce bu harf için şansometresinin dönmesini sağlamamız ge- rekiyor, tam altı adet durumumuz var. Zar örneğinde oldu- ğu gibi, bunu hemen belirleyebiliriz. Ne var ki, bu yol oy- nayanı pek mutlu etmeyecektir. Heyecanla puanın değiş- mesini izlemesi, hay allah 100 puanı kaçırdım, allah iflas gelecek psikolojisini yaşaması gerekiyor. Bu yüzden yuka- rıda biraz soytarılık yaptık. 0'dan 5'e kadar numaralanmış toplam 6 adet durumumuz var. X sayısı ile rasgele bir tane durum seçiyoruz. Bu bizim ilk durumumuz oluyor. Daha sonra 10 ila 30 arasında değişen bir sayı belirliyoruz. Bu sayıda durumun kaç defa değişeceğini gösteriyor. Sonra çok gerekliymiş gibi bu değişimi ekrana getiriyoruz. For g satırı ile ise amaçladığımız tek şey yavaşlamak. Dikkat ederseniz sayı değiştikçe For g döngüsünün işi uzayacak, dolayısı ile dönmenin sonlarına doğru durum daha çok ek- randa kalacaktır. Sadece x, 5'e eşit çıkarsa özel bir durum var demektir. Bu takdirde iflas gelmiştir. Oyuncunun pua- nını sıfırlayarak tekrar bir puan belirlemek gerekecek. Di- yelim ki-iflas gelmedi, o zaman devam edeceğiz: sor: LOCATE 10,20 .INPUT " Sessiz bir harf lutfen";c$ LOCATE 10,20 :PRINT" IF c$ ="" THEN GOTO tahmin c$=UCASE$(LEFT$(c$,1)) IF INSTR ("AEIUO",c$)<> 0 THEN GOTO sor

Sorumuzu sorduk. Eğer cevap olarak sadece return tuşuna basılırsa, oyuncu bir tahminde bulunacak herhalde diyoruz ve tahmin adlı bölüme atlıyoruz. Kullanıcıya her zaman nazik davranmak gerekir. Girdiği harfi büyük harfe çeviriyoruz. Belki arkadaş birden fazla tuşa basmıştır diyerek sadece ilk bastığı tuşla ilgilenmeye çalışıyoruz. Bu işi LEFT$(c$,1) yapıyor. Türkçesi c$ satırının soldan ilk harfi demek. Son satırda ise önceki programlarımızda kullandığımız INSTR emri ile bu girilen harfin herhangi sesli bir harf olup olmadığını arıyoruz. Eğer harf sesli ise, hemen soruyu bir daha soruyoruz. Programımız maalesef Türkçe karakterler için tasarlanmamış. Elinizde Türkçe karakterler kullanma imkanı varsa, gerekli değişiklikleri kolayca yapabilirsiniz.

Evet harfi öğrendik bakalım bu harften kaç tane var: bul = 0 FOR f = 1 TO dd IF c$ <> MID$(d$,f,1) THEN GOTO devam bul s bul +1 LOCATE 2,39-(dd2)+f.PRINT c$; devam: NEXTf puan = puan + bul*VAL(j$(x)) IF hak > 8 THEN GOTO tahmin GOTO dada

Bulunan harf sayısını bul değerinde tutuyoruz. Yine kelimeyi baştan sona dek arıyor ve MID$ emri yardımı ile harf harf, girilen harf var mı yok mu diye kontrol ediyoruz. Şayet uyumlu bir harf bulursak hemen o harfi yerine yazıyoruz. Puanı gerektiği düzeyde arttırıyoruz. VAL emri bir alfanümerik değişken içinde bulunan sayı değerini verir. j$(5) değeri, "İFLAS" ve VAL(j$(5)) ise 0'a eşit. Ancak bu durumda program buraya kadar gelemeyecekti. Oyuncuya sonsuz hak verirseniz, hemen cevabı bulacaktır. Ben adama bir sınır koydum. Eğer sekiz hakta bulamazsanız, bir tahmin hakkı veriyorum. Bu hak meselesini zorluk derecesi olarak girmek mümkün olabilirdi. Programın asıl döngüsü burada bitiyor. Bize kalan tek şey, alt programları bitirmek.

Alt bölümlerin ilkinde kullanıcı kelimeyi tahmin etmeye çalışacak. Burada kelimeyi bilip bilmediği basitçe kontrol edilerek gerekli davranış gösterilecektir.

tahmin: LOCATE10,20:PRINT TAHMİNİNİZİ GİRİN LÜTFEN " PRINT:PRINT INPUT g$ g$ = UCASE$(g$) IF g$ = d$ THEN GOTO tebrik > PRINT-PRINT: PRINT: PRINT " HA ha ha ha ha haaaa haaa, YANLISSSÜ" PRINTPRINT " doğrusu:" PRINT d$ WHILE INKEY$ ="" :WEND GOTO oyun

tebrik: PRINTPRINT PRINT "Helal olsun size, bildiniz" WHILE INKEY$ = "".WEND GOTO oyun

Oyunun en başında bir tanıtım kısmı vardı. Son olarak bu kısmı yazmak istiyorum: basla* b$ = " BASİT OYUN, LÜTFEN BİR TUŞA BASIN. " bb = LEN (b$) WHILE INKEY$=""

LOCATE 5,40-(bb/2) : PRINT b$ b$ = MID$(b$,2,bb) + LEFT$ (b$,1) FOR f = 1 TO 30 : NEXT f WEND RETURN

Evet, hayırlı uğurlu olsun. Sevimli ufak bir programınız oldu. İlk olarak soru bankasını nasıl gireceğinizi anlatayım. Bunun için en iyisi iyi bir editör kullanmak. Mesela CED (Cygnus Editor Professional) ile istediğiniz isimleri, cümleleri hazırlayabilirsiniz. Program cümlelerin 80 karakterden kısa olması halinde iyi çalışacaktır. Eğer daha uzun cümleler kullanırsanız, ortalamak için düşündüğümüz sistem işe yaramayacaktır. Bu durumda cümleyi iki satıra bölmek için bir yöntem düşünmelisiniz. Burada istediğiniz isimle kaydettiğiniz dosyayı okuyabilmek için, oyunun başında bulunan OPEN emrindeki dosya ismini değiştirmek zorunda kalabilirsiniz.

Bu program nasıl güzelleşir? Mesela oyuna birden fazla oyuncu ile oynama seçeneği katabilirsiniz. Dahası, sadece bir bilgi bankası değil de birden fazla değişik konulu bilgi bankası hazırlarsınız. Bankaların herbiri değişik konularda olabilir. DIM A$(24,4) gibi bir tanımlama yapar, ilk olarak bir konu belirler (0 ila 4 arasında), daha sonra bu konunun kaçıncı sorusunu (0 ila 24 arasında) soracağınızı belirlersiniz. Oyuncunun ismini girmesini isteyerek soru bankasına en çok puanı alanları kaydedebilirsiniz. Daha iyi bir ekran düzenlemesi yapabilirsiniz. Kendinize yeni bir ekran açarak, hatta bir arka plan resmi yükleyerek oyunu sevimli hale getirebilirsiniz. Aralara SOUND emri ile dit dit sesleri ilave edebilirsiniz. İmkanlar oldukça fazla. Size tavsiyem, bu programı yazarak mutlaka üzerinde bazı değişiklikler yapmanız. Bu sayede program yazma hastalığına tutulabilirsiniz.

Fazla gevezelik ettim. Gelecek aya kadar hepinize işinizde, okulunuzda başarılar, mutluluklar.

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