Sayı Tahmin Oyunu

Bu çalışmamızda form üzerinde eğlenceli bir sayı tahmin oyunu yazacağız. Program 1-50 arasında sayı üretecek, kullanıcı tahmin etmeye çalışacak. Kullanıcının girdiği sayı büyükse, "Büyük girdiniz", küçükse "Küçük girdiniz" yazacak. 

Önce Visual Studio'da menülerden New - Project diyerek yeni bir proje başlarınız. Windows Form Application seçip bir isim giriniz.

Ardından Form üzerine sağ taraftaki Toolbox'tan (Araç kutusundan) aşağıdaki nesnleri sürükleyip bırakınız. Her bir nesnenin üzerine sağ tıklayıp Properties(Özellikler) den aşağıdaki ayarları yapınız.

Üç tane button, 1 tane TextBox, 2 Tane Label, 1 Tane Litxbox nesnesini form üzerine taşıyoruz.

Nesne Özellik Değer
Textbox Name txtSayi
Button Name btnBaslat
Button Name btnBitir
Button Name btnBul
ListBox Name LboxTahminler

Oyun aşağıdaki gibi oynanacaktır. Başlat butonuna basınca metin kutusu aktif olacak ve Listeye
"OYUN BAŞLADI, bir sayı yazınız" yazacaktır. Ardından metin kutusuna tahminimiz olan sayıyı girip BUL düğmesine basıyoruz.

Eğer bilgisayarın hangi sayıyı tuttuğunu tahmin edemeyip, en sonda oyunu bitirmek istersek BİTİR düğmesine basıp, tutulan sayıyı Listbox içinde gösteriyoruz.



Başlat düğmesine basana kadar sayı girilmemesi için Program ilk açıldığında txtSayi isimli metin kutusunu Enabled=False yaparak pasif yapıyoruz. Bunun için formda boş bir alana tıklayınız, Form_Load olayına aşağıdaki kodu yazınız.

txtSayi.Enabled = false;

Ardından Başlat düğmesine tıklayarak Click() olayına aşağıdaki kodu yazınız, Click olayı buton tıklanınca devreye girer. Önce listbox'ımızın içeriğini boşaltıyoruz ardından kullanıcının tahmin girdiği kutuyu boşaltıyoruz.

lboxTahminler.Items.Clear();
txtSayi.Text = "";

Rastgele sayı üretmek için aşağıdaki iki satırı kullanıyoruz.

   Random rastgele = new Random();
            sayi = rastgele.Next(1, 51);

Burada 1 ile 51 arasında sayı üretilir, 1 dahil 51 dahil değildir.  

Ardından LbTahminler listemize "Oyun Başladı" yazıyoruz ve artık kullanıcımızın sayı girebilmesi için metin kutusunu aktif yapıyoruz.

   lboxTahminler.Items.Add("Oyun başladı, bir sayı yazınız.");
            txtSayi.Enabled = true;

Aşağıda Başlat düğmesine basınca çalışan kodlar yer almaktadır.


  private void btnBaslat_Click(object sender, EventArgs e)
        {
            lboxTahminler.Items.Clear();
            txtSayi.Text = "";
 
            //Rastgele sayı üretiyoruz
            Random rastgele = new Random();
            sayi = rastgele.Next(1, 51);
          
 //1 ile 51 arasında üretiyor, 1 dahil 51 dahil değil
 
            lboxTahminler.Items.Add("Oyun başladı, bir sayı yazınız.");
            txtSayi.Enabled = true;
 
        }
 

Şimdi sıra geldi programın en önemli kısmına. btnBul() düğmesine tıklayıp Click() olayına aşağıdaki kodları yazıyoruz. Yukarıda btnBaslat düğmesine tıklayınca rastgele sayı üretilmişti, şimdi bu sayıyı kontrol edeceğiz.  

Bu kodlar Oğuzhan Taş'a ait web sitesinde yer almaktadır, emeğe saygı gösterip isim belirtmeden ve siteye link vermeden kodları kopyalamayınız. 

Önce girilenSayi değişkenimize metin kutusuna girilen bilgiyi alıyoruz ve üretilen sayıdan büyükse listemize "Büyük sayı girdiniz", küçükse "Küçük sayı girdiniz" yazıyoruz. Eşit ise kullanıcı, rastgele üretilen sayıyı bilmiştir. LBoxTahminler listemize TEBRİKLER yazımızı ekliyoruz. 

  private void btnBul_Click(object sender, EventArgs e)
        {
            int girilenSayi;
            girilenSayi = int.Parse(txtSayi.Text);
 
            if (girilenSayi > sayi)
                lboxTahminler.Items.Add("Büyük sayı girdiniz, küçük giriniz.");
 
            else if (girilenSayi < sayi)
                lboxTahminler.Items.Add("Küçük sayı girdiniz, büyük giriniz.");

            else if (girilenSayi == sayi)
                lboxTahminler.Items.Add("TEBRİKLER, bildiniz");
 
        }

Kodların tamamı aşağıda verilmiştir. 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace SayilBulOyun
{
    public partial class Form1 : Form
    {
        //sayi isimli bir genel değişken tanımlıyoruz.
        int sayi;
        public Form1()
        {
            InitializeComponent();
 
        }
 
        private void btnBaslat_Click(object sender, EventArgs e)
        {
            lboxTahminler.Items.Clear();
            txtSayi.Text = "";
 
            //Rastgele sayı üretiyoruz
            Random rastgele = new Random();
            sayi = rastgele.Next(1, 51);
         
 //1 ile 51 arasında üretiyor, 1 dahil 51 dahil değil
 
            lboxTahminler.Items.Add("Oyun başladı, bir sayı yazınız.");
            txtSayi.Enabled = true;
 
        }
 
        private void btnBitir_Click(object sender, EventArgs e)
        {
            lboxTahminler.Items.Add("Üretilen Sayı:" + sayi);
            txtSayi.Enabled = false;
        }
 
        private void btnBul_Click(object sender, EventArgs e)
        {
            int girilenSayi;
            girilenSayi = int.Parse(txtSayi.Text);
 
            if (girilenSayi > sayi)
                lboxTahminler.Items.Add("Büyük sayı girdiniz, küçük giriniz.");
 
            else if (girilenSayi < sayi)
                lboxTahminler.Items.Add("Küçük sayı girdiniz, büyük giriniz.");

            else if (girilenSayi == sayi)
                lboxTahminler.Items.Add("TEBRİKLER, bildiniz");
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            txtSayi.Enabled = false;
        }
    }
}
 
 
 


Bu programı daha da geliştirebilirsiniz, örneğin iki kullanıcı oynayabilir, siz her kullanıcıya başlangıç olarak 100 puan verirsiniz, her yanlış bilişinde 5 puan düşürebilirsiniz. Önce 0'a düşen yenilir.  

Mutlu Kodlamalar,
Oğuzhan TAŞ
Ocak 2017
 
Bookmark and Share