Java ile Android Ortamına Sayı Tahmin Oyunu Yapmak

Java dilini kullanarak çeşitli uygulamalar yapılabilir. Bunların içerisinde en basitlerin birisi ise minik bir Sayı Tahmin Oyunu. Sayı tahmin oyununda amaç ve sistem, hemen hepimizin bildiği gibi sistem tarafından akıldan bir sayı tutulması ve kullanıcının bir kaç yönergeyle bu sayıyı bulması için çaba harcaması. Kaba olarak böyle, ancak tahmin hakkı, süre kısıtlaması vs. gibi eklentilerle uygulama daha da renklendirilebilir. Bunu kendiniz yapabilirsiniz, ben direk olarak uygulamanın temel halini anlatacağım.

UYARI : Uygulamanın son haline ait dosyaları ve kaynağı buradan indirebilirsiniz...


Projemizi açtıysak hemen geçelim...

Öncelikle layout yani arayüz kısmında bulunması gerekenler;

Tıklanması için 2 buton (Birisi yeni oyun ve diğeri de tahmin kontrol butonu),
1 EditText (Kullanıcının tahminlerini girebilmesi için)
1 tane de TextView (Kullanıcıya çeşitli yönergeler ve durumu belirtmek için)

View' ları ekledikten sonra Graphical Layout
hemen hemen böyle olmalıdır.

Oluşturduğumuz View' lara gerekli ID' ler ve değerleri yazdıktan sonra şekildeki gibi bir görünüm elde edebilirsiniz. Bana kalırsa görünümü ayarlaysanız, zor kısım bitmiştir. Çünkü göreceksiniz ki bu uygulamanın kodları gerçekten basit ve anlaşılır olacak. Şimdi kodlarımızda sorun çıkmaması açısından, alttaki ID' leri gerekli butonlara veriniz;


  • (Button) Yeni Oyun Başlat : yeniOyunBaslat 
  • (Button) Tahmin Yap : btnTahmin
  • (EditText) Kullanıcının Sayı Girdiği Boş Text : txtTahmin
  • (TextView) Durum ve yönerge Texti : txtDurum 



Bu ID' leri vermemizin sebebi, biraz sonra kodlardan da anlayacağınız gibi bu objelerin kod tarafından kullanılabilir hale gelmesini sağlamaktır.

Buraya kadar işimiz tamam, test edersek herhangi bir kod olmaması ve sistemin işlememesinden başka bir sorun olmaması gerek. O halde geçelim kodlarımıza. Her kodun açıklaması, alt satırında veya yanında yer almaktadır, bu yüzden teker teker yazı içerisinde açıklamaya gerek duymuyorum. Ancak bahsedeceğim şeyler olacaktır, birazdan...

Import Edilecekler :


/*Burada Kullandığımız View, EditText, TextView ve Button' ları Kod İçerisine Çağırdık*/ import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Button;

Oluşturulan Değişkenler :


public Button tahminYap, yeniOyun;
public EditText tahmin;
public TextView durum;
double bulunacakSayi=0;


Ve son olarak onCreate fonksiyonu. Tüm işlem burada bitiyor aslında.

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

/*Programın başında da çalışabilmesi ve hata almamak açısından bulunacakSayi yani sistemin akıldan tuttuğu sayıyı oluşturduk.*/
bulunacakSayi = Math.ceil(Math.random()*100);

/*Hatırlarsanız ID' leri tanımlamıştık. O ID' leri kullanarak View' lara ulaştık.*/
tahminYap = (Button)findViewById(R.id.btnTahmin);
yeniOyun = (Button)findViewById(R.id.yeniOyunBaslat);
tahmin = (EditText)findViewById(R.id.txtTahmin);
durum = (TextView)findViewById(R.id.txtDurum);

/*Tahmin butonuna tıklanması için gerekli fonksiyonumuz.*/
tahminYap.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

/*Kullanıcının tahminini bulunduran veriyi önce String, ardından double veri türüne dönüştürerek sayıyı kontrol edebiliriz.*/
double yapilanTahmin = Double.parseDouble(tahmin.getText().toString());

/*Kullanıcı tahmini ve sistemin tuttuğu sayıya göre oluşacak durumları değerlendirerek, durum içeriğine yazdırdık.*/
if(yapilanTahmin > bulunacakSayi)
{
durum.setText("Biraz daha alçak bir sayı girmelisiniz.");
}
if(yapilanTahmin < bulunacakSayi)
{
durum.setText("Biraz daha yüksek bir sayı girmelisiniz.");
}
if(yapilanTahmin == bulunacakSayi)
{
durum.setText("Tebrikler, doğru tahmin.");
}
}
});

/*Yeni Oyun butonuna tıklanabilirlik işlemini kazandırdık.*/
yeniOyun.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

/*Sistemin tuttuğu sayıyı yenileyerek oyunu yeniden başlattık ve durum içeriğine bilgiyi yazdırdık.*/
bulunacakSayi = Math.ceil(Math.random()*100);
durum.setText("Yeni bir oyun başlattınız. 100 ile 1 arasındaki değeri bulunuz.");
}
});
}

Evet, kodları test ettiğinizde, sistemin alttaki gibi çalıştığını göreceksiniz eğer bir yerde hata yapmadıysanız.
Bir kaç kodu açıklama ihtiyacı hissettim, öncelikle Math.ceil(); ve Math.random(); kodlarına bakacak olursak, Math.ceil(); sayıyı en yakına yuvarlarken, random 0 ile 1 arasında rastgele bir sayı oluşturur. 100 ile çarpmamızın ve yuvarlamamızın nedeni sayının küsüratlı çıkmasını engellemek ve 0 ile 100 arasında yer almasını sağlamak. 100 yerine farklı bir değer girerseniz, tahmin edilmesi gereken random sayı girdiğiniz değer ile 0 arasında olacaktır.

setText ve getText metodlarına bakacak olursak. setText() bir String değeri verirken, yazı yazı yazdırırken, getText() yazılan yazıyı çeker.



Uygulamaya Ait Bir Fotoğraf :



TAG