Archive for C# programlama

Csharp ile oyun geliştirme yazı dizisine, yine küçük bir oyun olan mayın tarlası ile devam ediyoruz. Öncelikle diğer oyunlarda olduğu gibi oyunun uygulama dosyasının ve kaynak kodlarının indirme linklerini vereceğim. Ardından oyun ve kritik olabileceğini düşündüğüm kod bloklarının açıklamaları ile devam edeceğim. Oyunun uygulama dosyasını buradan indirerek hemen oynayabilir, kaynak kodlarını da buradan indirerek kodları inceleyebilirsiniz.

Uygulama ve kaynak kodları verdikten sonra oyunun gidişatı ile ilgili bilgiler vermek istiyorum. Kod aralarındaki yorum satırları ile açıklamalar yaptığım için kodların tamamı yerine kritik kod bloklarına değineceğim burada. Ama önce oyunun görüntülerine bir göz atalım. Oyun ilk açıldığında gelen ekran aşağıdaki gibi olacak ve hemen oynamaya başlayacaksınız:


read more »

Başlıktan da anlaşıldığı üzere, uygulama recursive fonksiyon kullanarak 10’luk tabanda girilen bir sayıyı 8’lik tabana çevirme işlemini gerçekleştiriyor. Sayı Main metodunda kullanıcıdan alınıyor ve aynı zamanda sayının, çevrildiğinde kaç basamaklı bir 8 tabanlı sayı olacağı hesaplanıyor. Basamak sayısı mod işlemlerinde kullanılacak olan diziye eleman sayısı olarak atanıyor. Sayı sürekli 8’e bölünerek küçültülüyor. Sayı 8’e bölünemeyecek bir duruma geldiğinde sayının son hali dizinin son elemanı olarak atanıyor. Daha sonra dizi sondan başa doğru yazdırılıyor.

Gerekli açıklamaları kod üzerinde de yaptım. Bu yüzden kod bloğu biraz uzadı ama korkacak bir şey yok, çoğu yorum satırı zaten:) Buyurun uygulamaya göz atabilirsiniz…

ÖNEMLİ! Hesapla fonksiyonunun static olmasının bu uygulamadaki tek nedeni read more »

Makalenin konusu, C#’ta çok boyutlu dizilere örnek olabilecek bir koordinat sistemi uygulaması. Programda kullandığım ve C#’ metodlarından Math sınıfında bulunan Sqrt fonksiyonunun kullanımına da değineceğim. Örnek uygulama, kullanıcı tarafından girilen x, y koordinatlarına sahip noktanın, koordinat düzleminde bulunan ve daha önceden belirlenmiş olan 5 noktaya olan uzaklıklarını tek tek hesaplayarak bu uzaklıklara göre noktaları yakından uzağa olacak şekilde sıralyor. Uygulama hakkındaki genel bilgiden sonra kod kısmına da değinelim.
Programın Main fonksiyonunda koordinat düzleminde hazır bulunacak 5 adet noktanın x ve y koordinatları çift boyutlu bir dizide read more »

Daha önce de yayınladığım Kaydır Doldur oyununun ikinci versiyonunu buradan indirip oynayabilirsiniz. Ayrıca oyunun kaynak koduna buradan erişebilir ve geliştirebilirsiniz.

Neler Yeni?

Kutu Hareketlerindeki Düzenlemeler

Kaydır doldur oyunun birinci versiyonundaki hareket tutarsızlıkları nedeni ile yaptığım çalışmanın ardından oyunu tam bir düzene soktum. Düzenlenen yerlerden bahsedeyim. Öncelikle kutuların hareketlerine bir standart getirdim. Kutular blok halinde hareket ediyor. Sona geldiklerinde ise baştan başlayarak geçirgen bir duvar edası veriyorlar. Bu işlemleri yine dizi bazlı yaptım. Örnek olarak sağa kaydırma kodunu açıklayacağım. Kaynak kod ile ilgilenenler zaten göreceklerdir kod kısmının kısaldığını. Birinci versiyona göre daha az kodla daha etkin bir iş yapıldığının farkına varacaklardır. read more »

Thread, bir programın kendini parçalara ayırıp eş zamanlı olarak bu parçaları farklı işlemcilerde ya da bir sistem içindeki farklı bilgisayarlarda çalıştırma olayıdır. Eğer tek işlemcili bir bilgisayarda thread’ li programlar zaman dilimleme tekniği ile çalışırlar. Şöyle ki, thread‘ler sırasıyla, çalıştır-duraklat mantığı ile birbirleri arasında geçiş yaparlar. Bu geçiş anı çok kısa bir zaman dilimi olduğu için gözle farketmemiz çoğu zaman mümkün olmayabilir.

Uygulamaya değinmeden önce belirtmek isterim ki csharp dilinde thread uygulaması yapabilmek için “System.Threading” namespace’ i eklenmelidir. Verilen ön bilgilerin ardından thread uygulamasına göz atalım.


read more »

Csharp dilinde oyun yapma vaktinin geldiğini düşünerek küçük bir oyun geliştirdim. Oyunun kod kısmı biraz uzun olduğundan, yalnızca kritik kod bloklarına değineceğim. Oyunun kaynak kodlarını buradan indirip kodlarında aşağıda anlatacağım yöntemlerle değişiklik yaparak oyun programlama mantığı hakkında bilgi sahibi olabilirsiniz. İsterseniz buradan oyunu bilgisayarınıza indirip hemen oynamaya başlayabilirsiniz. Eğer indirme ve deneme işlemini tamamladıysanız oyunun oluşturulma aşamalarını ayrıntılı bir şekilde inceleyelim. read more »

Dinamik programlama, problem çözüm yöntemlerinden biridir. Amaç, sıralı benzer işlemleri tekrarlayarak oluşan performans ve zaman kaybını en aza indirmektir.

Bir kodun kısa olması, programın daha performanslı çalışacağı anlamına gelmez. Daha çok alt parçadan oluşan ve daha uzun bir kod bloğuna sahip bir çözüm diğerine göre daha performanslı çalışabilir. Konunun örneği olarak geçen sene hazırladığım programı, dinamik programlama ile fibonacci serisi hesabı ödevini paylaşacağım.

Programı kısaca açıklamak gerekirse; girilen bir sayının fibonacci değerini, iki fonksiyona gönderiyorum. Bu fonksiyonlardan ilki problemi dinamik programlama yöntemi ile çözerken, diğeri recursive kavramı ile çözüyor. Aradaki performans farkı şu noktada oluşuyor: read more »

C#’ ta klasör oluşturma ve silme aşamalarını örnek kodlarla birlikte burada anlatmıştım. Bu yazının konusu da bir dökümandan veri okuma ve dökümana veri kaydetme işlemidir. Bu dökümanlar txt uzantılı bir text dosyası ya da doc uzantılı bir word dosyası olabilir. Öncelikle c sharpta dosya işlemleri yapabilmek için  “System.IO” namespace’ i eklenmeli. Konunun örneği için ben bir form uygulaması hazırladım. Form üzerindeki elemanları yandaki resimden görebilirsiniz. Kodda da karşılaşacağınız için öncelikle form elemanlarının isimlerini vermekte fayda var.

  • Okuma Dizinin Belirtildiği Textbox(Üstteki): txt_okumaYeri
  • Metnin Çekildiği Textbox (Ortadaki): txt_metinDuzeltmeAlani
  • Yazma Dizinin Belirtildiği Textbox(Alttaki): txt_kayitYeri
  • Metni Getir Butonu: btn_metniGetir;
  • Metni Getir Butonu: btn_metniKaydet

Kod kısmına kısaca değinecek olursak, System.IO kütüphanesinin getirdiği iki class okuma ve yazma işlemlerinde kullanılabilir. Bu classlardan “StreamReader”, okuma işlemini gerçekleştiren metodlar içerirken; “StreamWriter” , yazma işlemini gerçekleştiren metodları içinde barındırır. Bu metodların kod içindeki kullanımları da aşağıdaki gibidir. read more »

C#’ ta klasör oluşturma ve silme aşamalarını örnek kodlarla birlikte anlatacağım. Öncelikle c sharpta dosya işlemleri yapabilmek için  “System.IO” namespace’ i eklenmeli. Konunun örneği için ben bir form uygulaması hazırladım. Form üzerindeki elemanları yandaki resimden görebilirsiniz. Kodda da karşılaşacağınız için ben form elemanlarının isimlerini vereyim.

Textbox:txt_folderName ; Combobox:cB_folderWay; Oluştur Butonu:btn_save; Sil Butonu:btn_delete

Klasör işlemleri hakkında biraz bilgi verdikten sonra uygulamanın nasıl çalıştığına ve kod açıklamalarına değinmek istiyorum. Klasör oluşturmak için read more »

Visual Studio’ da C sharp ile bir veritabanı projesi yaptınız. Bu projenin başka bilgisayarlarda çalışabilmesi için veritabanının da setup içerisinde gömülü olması gerekir. Peki bir projenin setup’ ı nasıl oluşturulur? SQL veritabanı bu setup içine nasıl gömülür? Bu soruların cevaplarını resimli anlatımlarla, yazının devamında bulabilirsiniz.

Öncelikle basit bir veritabanı programı hazırlayarak işe başlayalım. Program, genel olarak  bir datagrid içeriyor ve veritabanındaki bilgileri, butonun “click event” inde datagride aktarıyor. Makale konusunun dışına çıkmamak için kod ayrıntılarına girmeyeceğim.

NOT: İlerde kullanılacak bazı sınıflar için formu içeren class içine şu namespace’ ler eklenmelidir.

using System.Diagnostics;   //Process sınıfı için eklediğim namespace

using Microsoft.Win32;      //Registry sınıfı için eklediğim namespace


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void button1_Click(object sender, EventArgs e)
{
    select();
}      

private void select()
{
    string connStr = @"Data Source=SEREF-PC\SQLEXPRESS;Initial Catalog=deneme;Integrated Security=True";
    SqlConnection conn = new SqlConnection(connStr);
    conn.Open();
    SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM tbl_temelBilgiler", conn);
           
    // DataSet nesnesi oluştur
    DataSet ds = new DataSet();
           
    //DataSet' i doldur
    adapter.Fill(ds, "MyTable");
           
    // this.dataGrid1.SetDataBinding(ds,"MyTable"); ya da
    this.dataGrid1.DataSource = ds.DefaultViewManager;
}

Projeye Bir Setup Projesi Eklemek

Projenin bir setup’ ını oluşturmak için öncelikle projeye bir setup projesi read more »