Ana içeriğe atla

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(); ;


    }
}

Yorumlar

Bu blogdaki popüler yayınlar

Arduino Buzzer için Örnek Müzik Kodları

Bugün ki yazımda programlaması tamamıyla bana ait olan bazı buzzer kodlarını yazımın devamında paylaşıyor olacağım. Öncelikle bağlantı şemasıyla başlayalım; Malzemeler: Arduino (Uno, Nano, Mega) 100 Ohm Direnç Breadboard Bağlama Tarifi: Buzzer'da iki bacak bulunur. Buzzer'ın üstüne baktığınızda bacaklardan birisinin hizasında (+) yazar. Bu bacağı 8 No.lu pine bağlayabilirsiniz. veya istediğiniz herhangi başka bir digital bacak da olabilir. Kodunuzu da ona göre düzenlemeniz gerekir. İkinci bacağı da direnç üzerinden GND (-) Toprak hattına bağlamak gerekir. Bağlantı Şeması: Yukarıdaki şemada siyah (-), kırmızı (+) ucu temsil etmektedir. Ben kodlara ilgili notaların frekanslarını ekledim. Örnek olarak da 2 adet müziği buraya ekleyeceğim. sizler diğer müziklerin notalarını öğrendikten sonra duraksamaları deneme yanılma yoluyla bulabilirsiniz. Takıldığınız yerde aşağıya yorum bırakırsanız seve seve yardımcı da olabilirim. Notalar: 1 2 3 4 5 6 7

16x2 LCD I2C (i2c) Hataları ve Çözümler

Merhaba arkadaşlar arduino I2C modülü kullanımında oluşan bazı hatalardan bahsetmek istiyorum. Öncelikle bu modülle görüntü alamıyorsanız arkasındaki potansiyometreyi sağa ve sola çevirerek uygun konstrata getirin bu sebeple yazılar görünmüyor olabilir. Bağladığınızda arduino kapanıyorsa kısa devre vardır lehim aralıklarını kontrol edin temas olabiliyor. Eğer tek karakter ekranda çıkıyor diğer karakterler çıkmıyorsa aşağıda verdiğim kütüpaneyi yükleyin sorununuz çözülecektir. Eğer buna rağmen görüntü alamıyorsanız LCD panel adresiniz farklı olabilir  LiquidCrystal_I2C lcd(0x27, 16, 2);  kod satırındaki " 27 " yi " 3f " yapın. Yani şöyle olmalı  LiquidCrystal_I2C lcd(0x3f, 16, 2);  Bu şekilde büyük olasılıkla görüntü alamama sorununuz çözülecektir. I2C Port bağlantıları şöyle olmalıdır: gnd-gnd vcc - 5 v sda- A4 scl-A5 pinine bağlanmalıdır. Örnek Kod: #include <Wire.h> #include <LiquidCrystal_I2C.h> // LCD adres 0x3f 16 kara

PID Algoritmalı Çizgi İzleyen Robot (PID Line Follower)

PID var olan bir problemin çözümünde  Oranı, integrali ve Türevi toplayarak bir hata oranı çıkarır ve bunu minimuma indirgemek için bir yol geliştirilir. Daha sonra PID'nin detaylı açıklamasını yaparım. Bu yazıdaki amacım hani hep gördüğünüz virajları çok hızlı dönen çizgi izleyenlerin nasıl yapıldıklarını nacizane göstermek. Malzemeler: Arduino Nano veya UNO Pololu QTR 8RC Kızıl ötesi sensör dizisi Pololu TB6612FNG Motor Sürücü 2 Adet Redüktörlü 6V DC Motor 9V Tercihen Duracell Pil (Arduino beslemesi için)  11.1V bir Li-Po pil (Motor sürücü için) Bağlantı Şeması: Kaynak Kodu: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #include <QTRSensors.h> #define Kp 0 // Kendi deneyimlerinizle bulmanız gerekli küçük bir değer ile başlayıp, büyütebilirsiniz en kararlı Kp değerini bulana kadar.. #