Hot Posts

6/recent/ticker-posts

ASP.NET Random Sayı Tahmin Oyunu (Random Number Prediction Game)

İlk defa PHP, JSP ve ASP.NET yazan kişilerin anlamakta en sıkıntı çektiği konulardan birisi hiç tartışmasız PostBack olayıdır.

PostBack dediğimiz varsayılan Form'un servera uğrayıp geri gelmesi işlemidir. Bu sırada kayıtların hepsi sıfırlanır veya silinir. Bu makalemizde bu değerleri tutmanın yolunu hep birlikte inceleyeceğiz.





Örnek Tanımlaması: ASP.NET üzerinden rastgele sayı üretip, butona basıldığı halde, rastgele değer hiç değişmeden sayıyı tahmin etmeye çalışmak.

Form'a Eklenecek Nesneler:

  1. İki tane Label
  2. 1 Tane Button
  3. 1 Tane TextBox
  4. 1 Tane HiddenField
Aşağıdaki görüntüyü elde etmeye çalışalım:



Kod yapısını detaylı anlatmayacağım ama iki şeyden bahsedersek konuyu halletmiş oluruz:

1- HiddenField:
Eğer ASP.NET ile ilk random projenizi yazıyorsanız muhtemelen HiddenField'ların bu projeye neden dâhil edildiğini anlayamamışsınızdır. HiddenField'lar Formlar arası geçiş yaparken veya Form örneğini Client'tan Server'a paslarken bazı verileri korumak amaçlı kullanılırlar. Bu projede bizler bir kere atanacak ve değişmemesi gereken random değerini korumak amaçlı kullanacağız.

2-PostBack:
Postback Form Client'tan, Server'a postalanması işlemi demek. Biz tam  bu postalanma sırasında Random değerimizi HiddenField üzerinde muhafaza edeceğiz. Böylece sayımız hiç değişmemiş olacak.

KOD:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class RandomValues : System.Web.UI.Page
{


    int Mainvalue;
    int RandomValue;
    static int KHak = -1;
    protected void Page_Load(object sender, EventArgs e)
    {
        KHak++;

        Random rnd = new Random();
        if(!Page.IsPostBack)
        {

            RandomValue = rnd.Next(50);
            HiddenField1.Value = RandomValue.ToString();
            

        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        
        int Txtvalue = int.Parse(TextBox1.Text);

        if(Txtvalue < int.Parse(HiddenField1.Value))
        {
            Label2.Text = "Daha büyük bir sayı giriniz";
        }
        else if(Txtvalue > int.Parse(HiddenField1.Value))
        {
            Label2.Text = "Daha küçük bir sayı giriniz";
        }
        else
        {
            Label2.Text = "Sayıyı Bildiniz";
        }
        Label3.Text ="Kullanılan Hak :" + KHak.ToString(); ;


    }
}

Post a Comment

0 Comments