C# Örnekleri: Sayı Tahmin Oyunu

Basit görünen ancak kurgusu bazen yeni programcıları zorlayan bir algoritmaya sahiptir sayı tahmin oyunları. Bu tür programlar üzerinde  oyuncunun kaçıncı tahmininde sayıyı bulduğu, sınırlı sayıda hak tanınması ve her tahminden sonra tavsiye edilen aralığın daraltılması gibi çok çeşitli değişiklikler yapılabilir. Böylesi durumlarda en iyi yol önce algoritmayı en genel haliyle ele almak ve can alıcı noktaları algoritma üzerinde düşünerek yavaş yavaş gerçekleştirmektir.  

Random Sınıfından Türetilen rastgele Nesnesi

Öncelikle rastgele sayının nasıl üretileceği üzerinde durmak bu algoritma için gereklidir. Rastgele sayı üretme işlemi Random sınıfı aracılığıyla gerçekleştirilecekir. Random sınıfından türetilen rastgele nesnesi üzerinden Next() metod çağrısı ve gerekli parametrelerin gönderilmesi ile integer tipinde rastgele bir sayı üretilebilir. Next() metodu, gönderilen parametrelere bağlı olarak pozitif veya negatif bir tamsayı üretecektir.

Next() metodunun overload metodlarından birisi tek bir tamsayı değeri alırken bir diğeri de iki tam sayı değeri alabilir. Aşağıdaki örnekleri incelersek;

rastgele.Next(100);  kodu ile 0 ile 99 aralığında bir tamsayı üretilir. İki parametre girildiğinde, yani  rastgele.Next(20,100); gibi bir kullanımda ise 20 ile 99 aralığında bir sayı üretilir. Örneklerden de anlaşılacağı üzere Next() metoduna iki parametre gönderildiğinde ilk gönderilen parametre (20) küçük sayı kabul edilerek aralığa dahil edilirken ikinci gönderilen parametre (100) aralığa dahil değildir. Bu işlem sonucunda üretilen en büyük sayı 99 olacaktır.

Görüldüğü gibiNext() sanki yalnızca pozitif sayı üretiyormuş gibi görülebilir. Ancak bu metod  rastgele.Next(-50,50); gibi bir şekilde kullanılırsa negatif sayılar kümesi de üretilen sayılara dahil edilebilir, sayı üretim aralığı ise [-50, 50) aralığında olacaktır.

Bu kadar laf kalabalığından sonra 0-100 aralığında rastgele sayı üretmek için kısaca aşağıdaki kodu yazabiliriz: :))

C# console uygulamalarında ana metodumuz olan Main() metodu içinde tutulan sayıya göre kullanıcıdan DAHA BÜYÜK veya DAHA KÜÇÜK sayı isteyerek yönlendirme yapan kod aşağıdaki gibidir:

Yukarıdaki kod bloğunda  int tahmin, sayi = rastgele.Next(100); şeklindeki kullanımı ilk defa görüyor olabilirsiniz. Burada integer tipinde tahmin ve sayi adında iki değişken oluşturulmuştur. sayi değişkenine rastgele nesnesi Next() metodu sayesinde rastgele bir sayı atanmıştır. 19-30. satırlar aralığında kullanıcıya sayıyı bulmasını kolaylaştıracak yönlendirmeler yapılmakta, eğer sayıyı bulabilirse kullanıcı kutlanmaktadır.

Eğer kullanıcıya sınırlı sayıda hak tanınarak sayıyı bulması istenirse aşağıdaki program kodlarından yararlanılabilir. Burada hak olarak tanımlanan değişkene verilen değer ile kullanıcıya 5 hak verilmiştir.

Daha çok kullanıcı dostu bir program yazmak istiyorsak, kullanıcının her tahmininden sonra “25 – 50 aralığında bir sayı giriniz” şeklinde bilgilendirme mesajları ile aralığın giderek daraltılması ve daha eğlenceli bir hale getirilmesi isteniyorsa aşağıdaki program kodları kullanılabilir:

Yukarıdaki programın örnek ekran çıktısının aşağıdaki gibi olması beklenmektedir:

 

About Hürkal HÜSEM

2010 yılından bu yana Bilişim Teknolojileri Öğretmeni olarak meslek liselerinde görev yapmaktayım.

View all posts by Hürkal HÜSEM →

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.