pbs.bozok.edu.tr · web viewc#’ta bir metot tanımlandığı sınıfın dışında başka bir...

51
GÖRSEL PROGRAMLAMA 1 DERS NOTLARI Hazırlayan: Öğr. Gör. Fahri YILMAZ

Upload: others

Post on 17-Jan-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

GÖRSEL PROGRAMLAMA 1 DERS NOTLARI

Hazırlayan: Öğr. Gör. Fahri YILMAZ

Ocak, 2017

Page 2: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

İÇİNDEKİLER

GÖRSEL PROGRAMLAMA 1....................................................................................................................4

1. FORMLAR VE KONTROLLER................................................................................................................4

1.1 FORMLAR......................................................................................................................................4

1.1.1 FORMLAR ARASI GEÇİŞ..........................................................................................................5

1.1.2 FORM NESNESİNİN ÖZELLİKLERİ............................................................................................6

1.1.3 FORM NESNESİNİN OLAYLARI................................................................................................6

1.2 TEXTBOX KONTROLÜ....................................................................................................................8

1.2.1 TEXTBOX KONTROLÜNÜN ÖZELLİKLERİ.................................................................................8

1.2.2 TEXTBOX KONTROLÜNÜN METODLARI.................................................................................8

1.3 CHECKBOX KONTROLÜ...............................................................................................................11

1.3.1 CheckBox Kontrolünün Özellikleri........................................................................................11

1.4 Radio Button...............................................................................................................................14

1.5 Timer Kontrolü...........................................................................................................................15

1.6 PictureBox Kontrolü....................................................................................................................17

1.7 Combobox kontrolü....................................................................................................................20

2. METOTLAR........................................................................................................................................21

2.1 Metotların Tanımlanması...........................................................................................................21

2.2 METOD TÜRLERİ.........................................................................................................................22

2.3.1 Değer Döndürmeyen Metotlar............................................................................................22

2.3.2 Değer Döndüren Metotlar...................................................................................................22

2.3.3 Metotların Aşırı Yüklenmesi.................................................................................................22

2.4 Metotlarla İlgili Önemli Özellikler...............................................................................................23

2.5 Değişken Sayıda Parametre Alan Metotlar.................................................................................23

2.5.1 Değişken Sayıda Parametre Alan Metotlar..........................................................................24

2.6 Kendini çağıran (Recursive ) Metotlar.........................................................................................25

3. Karışık Uygulamalar..........................................................................................................................27

Page 3: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

Uygulama Listesi

Uygulama 1: Formlar arası geçişlerin kullanılması..................................................................................5Uygulama 2 Form nesnesinin olayları.....................................................................................................7Uygulama 3 Textbox kontrolüne ait metotların kullanımı......................................................................8Uygulama 4 TextBox kullanarak hesap makinası yapma......................................................................10Uygulama 5 CheckBox kontrolünün seçilip seçilmediğini kontrol etme...............................................11Uygulama 6 CheckBox kontrolünün olaylarını kullanma......................................................................11Uygulama 7 CheckListBox Kontrolünün Kullanımı................................................................................13Uygulama 8 RadioButton Kontrolünün Kullanımı.................................................................................14Uygulama 9 Timer kontrolü ile kronometre yapımı..............................................................................16Uygulama 10 Timer kullanarak nesneleri hareket ettirme...................................................................17Uygulama 11 PictureBox ile resim geçişi yapma...................................................................................18Uygulama 12 PictureBox Uygulaması...................................................................................................19Uygulama 13 Combobox Kullanımı.......................................................................................................21Uygulama 14 Metot kullanarak 4 işlem yapma....................................................................................26Uygulama 15 Metot Uygulaması..........................................................................................................27Uygulama 16 Bilgisayar toplama..........................................................................................................28Uygulama 17 Kontrolleri bir arada kullanarak kuvvet ve faktöriyel hesaplama....................................29Uygulama 18 Kontrollerin bir arada kullanılması..................................................................................30Uygulama 19 Öğrenci numarası üretme...............................................................................................31Uygulama 20 Form elemanlarının kullanımı.........................................................................................32Uygulama 21 Dizi elemanlarını sağa sola kaydırma..............................................................................32Uygulama 22 Mayın tarlası oyunu........................................................................................................33Uygulama 23 Sürükle bırak uygulaması................................................................................................36Uygulama 24 Sürükle bırak ile puzzle yapma.......................................................................................37Uygulama 25 Tick Tack Tao Oyunu.......................................................................................................39Uygulama 26 Kaydırarak resim yapma oyunu......................................................................................41

Page 4: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

GÖRSEL PROGRAMLAMA 1

1. FORMLAR VE KONTROLLER

Bütün Kontrollerde Aynı Olan Özellikler

Name : Nesnenin kodlama aşamasında kullanılacak ismidir.

Text : Nesnenin kullanıcı tarafından gösterilecek olan ismidir.

BackColor : Zemin rengini belirler.

ForeColor : Yazı rengini belirler.

Enabled : Nesnenin aktif ya da pasif olacağını belirler.

Font : Yazı tipi özelliklerini belirler.

Visible : Nesneyi görünür ya da görünmez yapar.

Location : Nesnenin konumunu belirler.

Size : Nesnenin boyutunu belirler.

1.1 FORMLAR

Windows uygulamalarında nesneler form üzerine yerleştirilerek kullanılırlar. Bir uygulamada birden fazla form kullanmak mümkündür. Formlar sisteme cs uzantılı olarak kaydedilirler. Form uygulamaları SDI (Single Document Interface) ve MDI (Multiple Document Interface) olarak iki ana biçimde gerçekleştirilebilir.

SDI Formlar : İçerisinde bir adet form penceresi bulunan uygulamalardır.

MDI Formlar : İçerisinde birden fazla form penceresi kullanabilen uygulamalardır.

Standart bir formun kod yapısı

İpucu : Form görsel arayüzünü kullanırken kod ekranına geçmek için F7, tekrar görsel ara yüze dönmek için Shift + F7 kuşları kullanılır.

Page 5: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

1.1.1 FORMLAR ARASI GEÇİŞProjemize yeni bir form eklemek için Solution Explorer‘a farenin sağ tuşuyla tıklanarak Add / Windows Formya da Project menüsünden Add / Windows Formseçeneği ile yeni bir form eklenebilir.

Formlar arası geçişte kullanılan metodlar

Metod ÖzellikShow Bir formun görünür hale gelmesi için kullanılır.Hide Bir formu gizlemek için kullanılır.Visible Bir formun görünürlüğünü değiştirmek için kullanılır.Show Dialog Formu diyalog penceresi olarak açmak için kullanılır. Bu metod kullanıldığında

alttaki forma ulaşılamaz.Dispose Formla ilgili hafızadaki bilgileri silmek için kullanılır.Close Formu tamamen kapatmak için kullanılır. Ana formda bu metod kullanıldığında

tüm uygulama kapanmış olur.

Uygulama 1: Formlar arası geçişlerin kullanılması

Uygulama Adımları

1. Projenize 2 adet form ekleyin. 2. Her bir forma 1 adet buton ekleyin.3. Birinci formdaki butonun Text özelliğini “Sonraki Form”, name özelliğini “btnSonrakiForm” olarak değiştirin.4. İkinci formdaki butonun Text özelliğini “Önceki Form”, name özelliğini “btnOncekiForm” olarak değiştirin.

5. Yukarıdaki metodları kullanarak uygulamanızı gerçekleştirin.

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

privatevoid btnSonrakiForm_Click(object sender, EventArgs e){Form2 frm2 = newForm2(); frm2.Show();}}

publicpartialclassForm2 : Form

Page 6: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

{public Form2(){ InitializeComponent();}

privatevoid btnOncekiForm_Click(object sender, EventArgs e){Form1 frm1 = newForm1(); frm1.Show();this.Close();}}

1.1.2 FORM NESNESİNİN ÖZELLİKLERİÖZELLİK GÖREVİAcceptButton Form üzerinde Enter tuşuna basıldığında çalıştırılacak olan butonu belirler.CancelButton Form üzerinde Esc tuşuna basıldığı zaman çalıştırılacak olan butonu belirler.VindowState Formun hangi boyutlarda ekrana geleceğini belirler. Üç adet seçeneği vardır,

Normal : Formu hangi boyutlarda ayarladıysak o boyutlarda gelmesini sağlarMinimized : Formun simge durumuna küçültülmüş olarak ekrana gelmesi sağlarMaximized : Formun tam ekran boyutunda ekrana gelmesini sağlar

FormBorderStyle Formun biçimi ile birlikte boyutunun değiştirilebilip değiştirilemeyeceğini ayarlarNone : Form üst köşesindeki tüm kontrolleri ve formun kenar çizgilerini siler.Fixed Single : Formun boyutunun değiştirilmesini engellerFixed3D : Forma 3 boyutlu görünüm vererek aynı zamanda boyutlarının değiştirilmesini engellerFixedDialog : Formun boyutları değiştirilemez ve aynı zamanda form simgesi görünmez.Sizable : Varsayılan görüntüleme ayarıdır.FixedToolWindow : Yalnızca kapatma butonu aktifdir. Formun boyutları değiştirilemezSizableToolWindow : FixedToolWindowdanfarklı olarak formun boyutları değiştirilebilinir.

1.1.3 FORM NESNESİNİN OLAYLARIOLAY GÖREVİBindingContextChanged

Bu olayla birlikte form görünür hale gelmeye başlar

Load Formun yüklenmesi olayıdırActivated Form aktifleştiğinde gerçekleşen olaydırVisibleChanged Form görüntülendiğinde gerçekleşen olaydırShown Formun görüntülenmesi bittiğinde gerçekleşen olaydırPaint Form ve form üzerindeki kontroller ekrana çizilip yerleştiğinde gerçekleşen

olaydırFormClosing Form kapatılırken gerçekleşen olaydırFormClosed Form kapatıldığında gerçekleşen olayDeactivate Form artık aktif olmadığında gerçekleşen olaydırKeyDown Form üzerinde herhangi bir tuşa basıldığında gerçekleşen olay

Page 7: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

Uygulama 2 Form nesnesinin olayları

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}privatevoid Form1_Load(object sender, EventArgs e){MessageBox.Show("Load Olayı");}privatevoid Form1_BindingContextChanged(object sender, EventArgs e){MessageBox.Show("BindingContextChanged Olayı");}privatevoid Form1_Activated(object sender, EventArgs e){// MessageBox.Show("Activated Olayı");}privatevoid Form1_VisibleChanged(object sender, EventArgs e){MessageBox.Show("VisibleChanged Olayı");}privatevoid Form1_Shown(object sender, EventArgs e){MessageBox.Show("Shown Olayı");}privatevoid Form1_Paint(object sender, PaintEventArgs e){//MessageBox.Show("Paint Olayı");}privatevoid Form1_FormClosing(object sender, FormClosingEventArgs e){MessageBox.Show("Form Closing Olayı");}privatevoid Form1_FormClosed(object sender, FormClosedEventArgs e){MessageBox.Show("Form Closed");}}

Page 8: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

1.2 TEXTBOX KONTROLÜİçeriği değiştirilebilecek bilgilerin görüntülenmesi için kullanılır. Bilgi girişi amacı ile kullanılabilinir.

1.2.1 TEXTBOX KONTROLÜNÜN ÖZELLİKLERİÖzellik GörevMultiline Bir satırdan daha fazla bilgiyi görüntülemek için kullanılır. Kullanmak için multiline

özelliği true yapılır.ScrollBars Textbox nesnesi multiline özelliğindeyken kaydırma çubuklarının görüntülenmesi

sağlanırNone : Kaydırma çubukları görüntülenmezVertical: Dikey kaydırma çubuğu eklenirHorizontal : Yatay kaydırma çubuğu eklenirBoth : Hem yatay hem dikey kaydırma çubuğu eklenir

PasswordChar

Textbox içerisine girilen bilgilerin şifrelenerek başkalarının görüntülemesini engellemek için kullanılır.

ReadOnly False olduğunda textbox içerisindeki bilgiler değiştirilemezFont Yazı tipini değiştirmek için kullanılırForeColor Yazı rengini değiştirmek için kullanılırBackColor Arka plan rengini değiştirmek için kullanılırText TextBox içerisine girilen değerler saklanır

1.2.2 TEXTBOX KONTROLÜNÜN METODLARIMetod GörevCut Seçili olan metni keserek taşınmak üzere hafızaya alıCopy Seçili olan metni kopyalanmak üzere hafızaya alırPaste Hafızada olan metni yapıştırırUndo Son yapılan işlemi geri alırClear TextBox içerisindeki yazıyı silmek için kullanılırDispose TextBox nesnesini silerAppendText

TextBox içerisinde mevcut olan yazı silinmeden yazı eklemek için kullanılır.Kullanımı : textBox.AppentText(“Eklenecek metin”)Bu metodun yerine textBox.Text= textBox.Text + “Eklenecek Metin ya datextBox.Text += “Eklenecek Metin”

Uygulama 3 Textbox kontrolüne ait metotların kullanımı

Page 9: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

privatevoid btnKes_Click(object sender, EventArgs e){if (txtYazi.SelectionLength> 0)txtYazi.Cut();elseMessageBox.Show("Seçili alan yok");}privatevoid btnKopyala_Click(object sender, EventArgs e){if (txtYazi.SelectionLength> 0)txtYazi.Copy();elseMessageBox.Show("Seçili alan yok");}privatevoid btnYapistir_Click(object sender, EventArgs e){txtYazi.Paste();}privatevoid btnGeri_Click(object sender, EventArgs e){txtYazi.Undo();}

privatevoid btnYaziTipi_Click(object sender, EventArgs e){if (fontDialog1.ShowDialog() == DialogResult.OK)txtYazi.Font = fontDialog1.Font;}privatevoid btnRenk_Click(object sender, EventArgs e){if (colorDialog1.ShowDialog() == DialogResult.OK)txtYazi.ForeColor = colorDialog1.Color;}privatevoid btnKalin_Click(object sender, EventArgs e){txtYazi.Font = newFont(Font, FontStyle.Bold);}privatevoid btnEgik_Click(object sender, EventArgs e){txtYazi.Font = newFont(Font, FontStyle.Italic);

Page 10: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

}privatevoid btnCizgili_Click(object sender, EventArgs e){txtYazi.Font = newFont(Font, FontStyle.Underline);}}

Uygulama 4 TextBox kullanarak hesap makinası yapma

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}privatevoid button1_Click(object sender, EventArgs e){int s1 = Convert.ToInt32(textBox1.Text);int s2 = Convert.ToInt32(textBox2.Text);int sonuc = s1 + s2; textBox3.Text = sonuc.ToString();}privatevoid button2_Click(object sender, EventArgs e){int s1 = Convert.ToInt32(textBox1.Text);int s2 = Convert.ToInt32(textBox2.Text);int sonuc = s1 - s2; textBox3.Text = sonuc.ToString();}privatevoid button3_Click(object sender, EventArgs e){int s1 = Convert.ToInt32(textBox1.Text);int s2 = Convert.ToInt32(textBox2.Text);int sonuc = s1 * s2; textBox3.Text = sonuc.ToString();}privatevoid button4_Click(object sender, EventArgs e){int s1 = Convert.ToInt32(textBox1.Text);int s2 = Convert.ToInt32(textBox2.Text);int sonuc = s1 / s2; textBox3.Text = sonuc.ToString();}}

Page 11: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

1.3 CHECKBOX KONTROLÜ

1.3.1 CheckBox Kontrolünün ÖzellikleriÖzellik GörevChecked Kontrolün seçili olup olmadığını gösterir. İşaretli olduğunda true değeri, işaretsiz

olduğunda false değeri alırCheckState Unchecked: İşaretsiz

Checked: İşaretliIndeterminate : Belirsiz

Uygulama 5 CheckBox kontrolünün seçilip seçilmediğini kontrol etme

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}privatevoid btnHesapla_Click(object sender, EventArgs e){double toplam = 0;if (cbDefter.Checked == true)toplam += 2;if (cbKalem.Checked)toplam += 1;if (cbSilgi.Checked)toplam += 0.5;

txtSonuc.Text = "Toplam Ücret " + toplam + " TL";}}

Uygulama 6 CheckBox kontrolünün olaylarını kullanma

Page 12: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}privatevoid cbKalin_CheckedChanged(object sender, EventArgs e){txtYazi.Font = newFont(txtYazi.Font.Name, txtYazi.Font.Size,txtYazi.Font.Style ^ FontStyle.Bold);}privatevoid cbItalik_CheckedChanged(object sender, EventArgs e){txtYazi.Font = newFont(txtYazi.Font.Name, txtYazi.Font.Size,txtYazi.Font.Style ^ FontStyle.Italic);}privatevoid cbCizgili_CheckedChanged(object sender, EventArgs e){txtYazi.Font = newFont(txtYazi.Font.Name, txtYazi.Font.Size,txtYazi.Font.Style ^ FontStyle.Underline);}}

1.3.2 CheckedListBox Kontrolünün ÖzellikleriÖzellik GörevItems İçerisindeki tüm elemanları temsil eder.CheckedItems ChecedListBox içerisindeki işaretlenmiş tüm elemanları temsil eder

1.3.2 CheckedListBox Kontrolünün MetodlarıItems özelliği aşağıdaki metodları içerir.

Özellik GörevAdd Belirtilen değeri listenin sonuna eklemek amacı ile kullanılırRemove Belirtilen değeri silmek amacı ile kullanılırRemoveAt Belirtilen index numaralı değeri silmek için kullanılırCount Eleman sayısını verirInsert Belirtilen değeri listenin istenilen bir yerine eklemek için kullanılırClear CheckedListbox içerisindeki elemanların hepsini silerContains Belirtilen eleman mevcutsa true sonucunu döndürür.CopyTo Belirtilen elemanı bir dizi içerisine kopyalayarak aktarma yapmak amacı ile

kullanılırSetItemChecked

Liste içerisindeki bir elemanın işaretini değiştirmek için kullanılır

Page 13: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

Uygulama 7 CheckListBox Kontrolünün Kullanımı

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

privatevoid button1_Click(object sender, EventArgs e){//Listeye eleman eklemek için checkedListBox1.Items.Add(textBox1.Text);}privatevoid button2_Click(object sender, EventArgs e){//Belirtilen elemanı listeden kaldırmak için checkedListBox1.Items.Remove(textBox1.Text);}privatevoid button3_Click(object sender, EventArgs e){//index numarasına göre silme yaparint index = Convert.ToInt32(textBox2.Text); checkedListBox1.Items.RemoveAt(index);}

privatevoid button4_Click(object sender, EventArgs e){//Eleman sayısıMessageBox.Show(checkedListBox1.Items.Count.ToString());}privatevoid button5_Click(object sender, EventArgs e){//Belirtilen konuma eleman eklemeint index = Convert.ToInt32(textBox2.Text); checkedListBox1.Items.Insert(index, textBox1.Text);}privatevoid button6_Click(object sender, EventArgs e){//Listedeki bütün elemanları temizler

Page 14: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

checkedListBox1.Items.Clear();}

privatevoid button7_Click(object sender, EventArgs e){//Aradığımız eleman var mı yok muif (checkedListBox1.Items.Contains(textBox1.Text))MessageBox.Show("var");elseMessageBox.Show("Yok");}privatevoid button8_Click(object sender, EventArgs e){//belirli bir elemanı seçili hale getirmek içinint index = Convert.ToInt32(textBox2.Text);if (checkedListBox1.GetItemChecked(index))//belirtilen eleman seçili mi? checkedListBox1.SetItemChecked(index, false);else checkedListBox1.SetItemChecked(index, true);}privatevoid button9_Click(object sender, EventArgs e){for (int i = 0; i < checkedListBox1.Items.Count; i++){ checkedListBox1.SetItemChecked(i, true);}}}

1.4 Radio ButtonUygulama 8 RadioButton Kontrolünün Kullanımı

Page 15: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}privatevoid rbKadin_CheckedChanged(object sender, EventArgs e){if(rbKadin.Checked==true){gbAskerlik.Enabled = false;rbMuaf.Checked = true;}elseif(rbErkek.Checked==true){gbAskerlik.Enabled = true;}}privatevoid btnKaydet_Click(object sender, EventArgs e){string mesaj = txtAd.Text + " " + txtSoyad.Text + " - Cinsiyet: ";if (rbErkek.Checked)mesaj += "Erkek - ";elsemesaj += "Kadın - ";

mesaj+="Askerlik: ";if (rbMuaf.Checked)mesaj += "Muaf";

Page 16: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

elseif (rbYapildi.Checked)mesaj += "Yapıldı";elsemesaj += "Tecilli";

listBox1.Items.Add(mesaj);}}

1.5 Timer Kontrolü

Interval: Mili saniye cinsinden süreyi belirtir. 1000 ms = 1 sn

Olay

Tick : İçerisine yazılan komutları belirtilen sürede çalıştırılmasını sağlar

Metod

Start, Stop

Uygulama 9 Timer kontrolü ile kronometre yapımı

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}privatevoid btnBaslat_Click(object sender, EventArgs e){ timer1.Start(); saat = DateTime.Now.Hour;//saat dakika = DateTime.Now.Minute;//dakika saniye = DateTime.Now.Second;//saniye}privatevoid btnDurdur_Click(object sender, EventArgs e){ timer1.Stop();}int saat = 0, dakika = 0, saniye = 0;privatevoid timer1_Tick(object sender, EventArgs e)

Page 17: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

{

saniye++;if (saniye == 60){saniye = 0; dakika++;}if (dakika == 60){dakika = 0; saat++;}if (saat == 24)saat = 0;

lblSaat.Text = saat.ToString(); lblDakika.Text = dakika.ToString();lblSaniye.Text = saniye.ToString();}}

Uygulama 10 Timer kullanarak nesneleri hareket ettirme

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}string yon = "";

privatevoid timer1_Tick(object sender, EventArgs e){if (yon == "SAG"){if (btnNesne.Left>= (panel1.Width - btnNesne.Width)) timer1.Stop();elsebtnNesne.Left += 5;}elseif (yon == "SOL"){if (btnNesne.Left<= 0)

Page 18: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

timer1.Stop();elsebtnNesne.Left -= 5;}elseif (yon == "YUKARI"){if (btnNesne.Top<= 0) timer1.Stop();elsebtnNesne.Top -= 5;}elseif (yon == "ASAGI"){if (btnNesne.Top>= (panel1.Height - btnNesne.Height)) timer1.Stop();elsebtnNesne.Top += 5;}

}privatevoid btnSol_MouseDown(object sender, MouseEventArgs e){yon = "SOL"; timer1.Start();}privatevoid btnYukari_MouseDown(object sender, MouseEventArgs e){yon = "YUKARI"; timer1.Start();}privatevoid btnAsagi_MouseDown(object sender, MouseEventArgs e){yon = "ASAGI"; timer1.Start();}privatevoid btnSag_MouseDown(object sender, MouseEventArgs e){yon = "SAG"; timer1.Start();}privatevoid btn_MouseUp(object sender, MouseEventArgs e){ timer1.Stop();}

}

1.6 PictureBox Kontrolü

Uygulama 11 PictureBox ile resim geçişi yapma

Page 19: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

Image[] resim = {global::PictureBox_Ornek1_.Properties.Resources.Koala,global::PictureBox_Ornek1_.Properties.Resources.Chrysanthemum,global::PictureBox_Ornek1_.Properties.Resources.Hydrangeas,global::PictureBox_Ornek1_.Properties.Resources.Desert,global::PictureBox_Ornek1_.Properties.Resources.Jellyfish,global::PictureBox_Ornek1_.Properties.Resources.Lighthouse,global::PictureBox_Ornek1_.Properties.Resources.Penguins,global::PictureBox_Ornek1_.Properties.Resources.Tulips};int index = -1;privatevoid button1_Click(object sender, EventArgs e){ index--; button2.Enabled = true;if (index >= 0 && index <resim.Length){ pictureBox1.Image = resim[index];}if (index == 0) button1.Enabled = false;}

privatevoid button2_Click(object sender, EventArgs e){ index++; button1.Enabled = true;if (index >= 0 && index <resim.Length){ pictureBox1.Image = resim[index];}if (index == resim.Length - 1) button2.Enabled = false;}

privatevoid timer1_Tick(object sender, EventArgs e){ index++; pictureBox1.Image = resim[index];if (index == resim.Length - 1) index =- 1;}}

Uygulama 12 PictureBox Uygulaması

Page 20: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}Image[] resim = {global::PictureBox_1.Properties.Resources.Chrysanthemum,global::PictureBox_1.Properties.Resources.Desert,global::PictureBox_1.Properties.Resources.Hydrangeas,global::PictureBox_1.Properties.Resources.Lighthouse,global::PictureBox_1.Properties.Resources.Tulips};int index = 0;privatevoid btnSonraki_Click(object sender, EventArgs e){ index++;if (index >= resim.Length) index = 0;

pictureBox1.Image = resim[index];}

privatevoid btnOnceki_Click(object sender, EventArgs e){ index--;if (index < 0) index = resim.Length - 1; pictureBox1.Image = resim[index];}

privatevoid timer1_Tick(object sender, EventArgs e){ index++;if (index >= resim.Length) index = 0;

pictureBox1.Image = resim[index];}

privatevoid Form1_Load(object sender, EventArgs e){

Page 21: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

timer1.Start();}

privatevoid btnRasgele_Click(object sender, EventArgs e){Random r = newRandom(); pictureBox2.Image = resim[r.Next(0, resim.Length)]; pictureBox3.Image = resim[r.Next(0, resim.Length)]; pictureBox4.Image = resim[r.Next(0, resim.Length)]; pictureBox5.Image = resim[r.Next(0, resim.Length)]; pictureBox6.Image = resim[r.Next(0, resim.Length)]; pictureBox7.Image = resim[r.Next(0, resim.Length)]; pictureBox8.Image = resim[r.Next(0, resim.Length)];}}

1.7 Combobox kontrolü

Uygulama 13 Combobox Kullanımı

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

privatevoid comboBox1_SelectedIndexChanged(object sender, EventArgs e){if (comboBox1.Text == "Siyah")this.BackColor = Color.Black;elseif (comboBox1.Text == "Beyaz")this.BackColor = Color.White;elseif (comboBox1.Text == "Mavi")this.BackColor = Color.Blue;elseif (comboBox1.Text == "Kırmızı")this.BackColor = Color.Red;elseif (comboBox1.Text == "Sarı")this.BackColor = Color.Yellow;}

privatevoid cmbIl_SelectedIndexChanged(object sender, EventArgs e){cmbIlce.Items.Clear();if(cmbIl.SelectedIndex==0){

Page 22: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

cmbIlce.Items.Add("Akdağmadeni");cmbIlce.Items.Add("Aydıncık");}elseif (cmbIl.SelectedIndex == 1){cmbIlce.Items.Add("Mamak");cmbIlce.Items.Add("Altındağ");}elseif(cmbIl.SelectedIndex==2){cmbIlce.Items.Add("Tuzla");cmbIlce.Items.Add("Beşiktaş");}}}

2. METOTLARProgramın herhangi bir yerinde kullanmak için belirli bir işi yerine getirmek amacıyla tasarlanmış alt programlara metotdenir. Temelde kullanım amacı birden fazla yazılan kodları tek bir kez yazdıktan sonra tekrar tekrar kullanmaktır. Metotlar aynı zamanda alt program veya fonksiyon olarak da isimlendirilir. Nesneye yönelik programlama dillerinde genellikle fonksiyonlar “metot” olarak isimlendirilirler.

Her çalışan C# programı bir ana fonksiyona (Main) sahiptir. Program çalışmaya bu fonksiyondan başlar. Tüm kodların bu fonksiyon içine yazılması çok uygun olmaz. Tüm programı main fonksiyonunun içerisine yazmak yerine metotlar kullanılır. Metotlar tek başlarına çalıştırılamazlar. Çalışmaları için ana metot içerisinden çağırılmaları gerekir.

Metodun iş yapması için kendisini çağıran metottan aldığı bilgilere parametre(argüman), kendisini çağıran fonksiyona döndürdüğü bilgiye ise geri dönüş değeri (return value)denir. C# ta bildirilen bütün metotlar bir sınıfın (Class) içerisinde yer almak zorundadır.

2.1 Metotların Tanımlanmasımetot tanımları şu şekilde yapılır.

[erişim belirteçleri]<dönüş değeri, void> metot ismi (parametre listesi)

{

metot gövdesi;

}

Erişim belirteçleri (public, private..) metoda nerelerden erişilebileceğini ayarlar.Belirtilmediği durumlarda “private” olarak kabul edilir. Yani sadece tanımlandığı sınıf içinde kullanılabilen bir metot olur. Geri dönüş değeri, metodun çağıran fonksiyona gönderdiği veririn türüdür. Parametreler ise metodun çalışırken ihtiyaç duyduğu çağıran fonksiyondan gönderilen bilgileridir.

Page 23: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

int MetotAdi (int a, int b)

{

return (a+b)

}

C#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne tanımlanır ve ‘.’ operatörü ile metot çağrılır. Static olarak tanımlanan metotlara erişmek için metodun içinde bulunduğu sınıf türünden bir nesne yaratmaya gerek yoktur. Static olarak tanımlanan metotlara sadece metodun adını yazarak erişilebilir.

2.2 METOD TÜRLERİMetotlar temelde aynı şekilde tanımlansa da, tanımlanma şekillerine göre 3'e ayrılır.

2.3.1 Değer Döndürmeyen MetotlarBu metotlarda return ifadesiyle geriye herhangi bir değer döndürülmez. metot çağrıldığında gövde kısmında yazılan programları çalıştırdıktan sonra tekrar çağrıldığı yere döner. Herhangi bir ek sonuç üretmez. Tanımlanma şekli şu şekildedir.

[erişim belirteçleri]void<metot ismi> (parametre listesi)

{

metot gövdesi;

}

2.3.2 Değer Döndüren MetotlarBu metotlar tanımlanırken bir dönüş türü belirtilir ve metodun sonunda başta belirtilen türde geriye bir değer döndürülmelidir. Tanımlanma şekli şu şekildedir.

[erişim belirteçleri]<dönüş türü><metot ismi> (parametre listesi)

{

metot gövdesi;

return <dönüş değeri>

}

Herhangi bir metot return ifadesiyle karşılaştığı andan itibaren geriye kalan kodları çalıştırmaz.

2.3.3 Metotların Aşırı YüklenmesiMetotların aşırı yüklenmesi tanımlanma biçimiyle ilgili değildir. Farklı türde veya farklı sayıda parametle belirleyerek aynı fonksiyonun birden fazla oluşturulmasına denir. Aynı isimli metotlardan hangisinin kullanılacağı, metodun çalıştırıldığı anda kullanılan parametre ile belirtilir. İlgili parametreler hangi fonksiyon ile eşleşiyorsa o fonksiyon çağrılarak işlem yapılır.

Page 24: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

Metotların aşırı yüklenmiş sayılabilmesi için, tanımlanırken parametre listesine kadar olan kısımların aynı olması gerekir.

2.4 Metotlarla İlgili Önemli Özellikler1- Metotlar isimlendirilirken, değişken isimlendirmede uyulması gereken kurallara uyulmalıdır. Ayrıca Main() isimli ikinci bir metot daha tanımlanamaz.

2- Eğer bir metot geriye değer döndürmeyecekse “void” olarak tanımlanır. Eğer giriş parametresi yoksa parantez içi boş bırakılır.

3- Geri dönüş değeri olmayan metotlarda (void ile belirtilmiş) return anahtar sözcüğünün yanında herhangi bir ifade olmadan da kullanılabilir. Geri dönüş değeri olmayan metotlarda return anahtar sözcüğünü bir ifade ile kullanmak yasaktır.

4-“return” anahtar sözcüğü ile geri değer döndürürken de türlerin uyumlu olmasına dikkat edilmelidir.

5- Metotlara parametre gönderirken tür dönüşümü kurallarına uyulmalıdır, uygun türler kullanılmalıdır.

6- Metot çağırırken parametreler eksiksiz girilmelidir. Eksik parametreli metot çağrıları geçersizdir.

7- Metotlar parametre almadan da tanımlanabilir.

8-Bir metot içerisinde başka bir metot bildirilemez.

9- Metot parametre parantezindeki değişkenlerin türlerinin tek tek belirtilmesi gerekir. ‘,’ ile ortak tür bildirimi yapılamaz.

10- Metotlar içinde tanımlanan değişkenler programın başından sonuna kadar durmaz. Bu değişkenler, programın akışı metoda geldiğinde tanımlanır. Metodun işlevi bittiğinde ise bellekten silinirler. Programın akışı tekrar metoda geldiğinde değişkenler yeniden tanımlanır ve sonunda yine bellekten silinir. Bu tür değişkenlere otomatik ömürlü nesneler denir.

11- Bir metodun geri dönüş değerini aynı metot için parametre olarak kullanabiliriz.

2.5 Değişken Sayıda Parametre Alan MetotlarMetotlara gönderilebilecek parametre sayısı bilinmediği zamanlarda değişik sayıda parametre alan metotlar tanımlanabilir. Bu metotlar parametreleri dinamik bir dizi içinde depolayarak kullanılmasını sağlarlar.Değişken sayıda parametre alan metot tanımlamak için params anahtar sözcüğü kullanılır.

using System;

class paramsa {

static int Toplam(params int* + sayılar) {

if(sayılar.Length==0)

Page 25: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

return 0;

int toplam=0;

foreach(int sayi in sayılar)

toplam+=sayi;

return toplam;

}

static void Main() {

Console.WriteLine(Toplam());

Console.WriteLine(Toplam(5));

Console.WriteLine(Toplam(5,10));

Console.WriteLine(Toplam(5,10,15));

Console.WriteLine(Toplam(5,10,15,30,50));

}

}

2.5.1 Değişken Sayıda Parametre Alan MetotlarMetodumuzda değişken parametre yanında bir ya da daha fazla normal sabit parametre de olabilir. Ancak değişken parametre mutlaka en sonda yazılmalıdır.

NOT: Değer döndüren metotlarımız mutlaka her durumda değer döndürmelidir. Örneğin metodumuzda sondaki else kullanılmazsa programımız derlenmez. Çünkü else'i kullanmasaydık birinci parametre yalnızca "carp" veya "topla" olduğunda metodumuz bir değer döndürecekti. Ve bu da C# kurallarına aykırı.

class Metotlar {

static int Islem(string a, params int[] sayilar)

{

if(a=="carp")

{ if(sayilar.Length==0) return 1;

int carpim=1;

foreach(int i in sayilar) carpim*=i;

Page 26: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

return carpim;

}

else if(a=="topla")

{ if(sayilar.Length==0) return 0;

int toplam=0;

foreach(int i in sayilar) toplam+=i;

return toplam;

}

else return 0;

}

static void Main()

{

Console.WriteLine(Islem("topla",3,4,7,8));

Console.WriteLine(Islem("carp",5,23,6));

}

2.6 Kendini çağıran (Recursive ) MetotlarKendi kendini çağıran metotlara özyineli( recursive) metot denilir. Bu metotlarda, çağrımı sonlandıran bir kontrol yapısı da olmalıdır.

static int Faktoriyel(int a) {

if(a==0)

return 1;

return a*Faktoriyel(a-1); //fonksiyon kendi içerisinde çağrıldı

}

Uygulama 14 Metot kullanarak 4 işlem yapma

Page 27: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}void IslemYap(string islemTuru){int s1 = Convert.ToInt32(txtSayi1.Text);int s2 = Convert.ToInt32(txtSayi2.Text);double sonuc = 0;if (islemTuru == "TOPLA") sonuc = s1 + s2;elseif (islemTuru == "CIKAR") sonuc = s1 - s2;elseif (islemTuru == "CARP") sonuc = s1 * s2;elseif (islemTuru == "BOL") sonuc = s1 / s2;

txtSonuc.Text = sonuc.ToString();}

privatevoid btnTopla_Click(object sender, EventArgs e){ IslemYap("TOPLA");}privatevoid btnCikar_Click(object sender, EventArgs e){ IslemYap("CIKAR");}privatevoid btnCarp_Click(object sender, EventArgs e){ IslemYap("CARP");}privatevoid btnBol_Click(object sender, EventArgs e){ IslemYap("BOL");}}

Uygulama 15 Metot Uygulaması

Page 28: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

void Aktar(string metin){string[] m = metin.Split(' '); listBox3.Items.Add(m[0]); listBox4.Items.Add(m[1]);}

privatevoid button1_Click(object sender, EventArgs e){ Aktar(listBox1.SelectedItem.ToString());}

privatevoid button2_Click(object sender, EventArgs e){ Aktar(listBox2.SelectedItem.ToString());}

}

3. Karışık Uygulamalar

Uygulama 16 Bilgisayar toplama

Page 29: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

- Her gruptan seçilen özellik seçilenler listesine eklenece.- Seçilenler listesinin 1. sıransında işlemci olacak ve sırasıyla Ram, Hdd, Ekran Kartı yer alacak- Seçimlerden biri değiştiğinde seçilenler listesi de değişecek- En altta seçilen ürünlerin toplam fiyatları görünecek

Uygulama 17 Kontrolleri bir arada kullanarak kuvvet ve faktöriyel hesaplama

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

privatevoid button1_Click(object sender, EventArgs e){if (string.IsNullOrEmpty(txtSayi1.Text) || string.IsNullOrEmpty(txtSayi2.Text))MessageBox.Show("Sayıların her ikisi de girilmiş olmalıdır");else{int s1 = 0, s2 = 0, sonuc = 1; s1 = Convert.ToInt32(txtSayi1.Text); s2 = Convert.ToInt32(txtSayi2.Text);for (int i = 0; i < s2; i++){ sonuc *= s1;}lblKuvvet.Text = "Sonuç = " + sonuc;}

Page 30: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

}privatevoid button2_Click(object sender, EventArgs e){if (string.IsNullOrEmpty(txtSayi1.Text))MessageBox.Show("Sayı1 girilmiş olmalıdır");else{int s1 = 0, s2 = 0, sonuc = 1; s1 = Convert.ToInt32(txtSayi1.Text);

for (int i = 1; i <= s1; i++){ sonuc *= i;}lblFaktoriyel.Text = "Sonuç = " + sonuc;}}}

Uygulama 18 Kontrollerin bir arada kullanılması

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

privatevoid btnAktar_Click(object sender, EventArgs e){string hata = "";if (string.IsNullOrEmpty(txtAd.Text))hata = "Ad alanı boş bırakılamaz\n";if (string.IsNullOrEmpty(txtKod.Text))hata += "Ders kodu boş bırakılamaz";

if (!string.IsNullOrEmpty(hata))MessageBox.Show(hata);else listBox1.Items.Add(txtAd.Text + " - " + txtKod.Text);}

Page 31: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

privatevoid btnSil_Click(object sender, EventArgs e){if (listBox1.SelectedIndex > -1) listBox1.Items.RemoveAt(listBox1.SelectedIndex);elseMessageBox.Show("Seçili eleman yok");}privatevoid btnTemizle_Click(object sender, EventArgs e){ listBox1.Items.Clear();}}

Uygulama 19 Öğrenci numarası üretme

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}int f1 = 0, f2 = 0, f3 = 0;privatevoid btnYeni_Click(object sender, EventArgs e){string numara = "";if (cmbFakulte.Text == "Akdağmadeni MYO")numara = "01";elseif (cmbFakulte.Text == "Mühendislik Fakültesi")numara = "02";elseif (cmbFakulte.Text == "Fen - Edebiyat Fakültesi")numara = "03";else{MessageBox.Show("Bir Fakülte Seçin");return;} numara += (DateTime.Now.Year%100).ToString();

if (cmbFakulte.Text == "Akdağmadeni MYO"){ f1++; numara +=string.Format("{0:0000}", f1);

}elseif (cmbFakulte.Text == "Mühendislik Fakültesi")

Page 32: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

{ f2++; numara += string.Format("{0:0000}", f2);}elseif (cmbFakulte.Text == "Fen - Edebiyat Fakültesi"){ f3++; numara += string.Format("{0:0000}", f3);}

txtNumara.Text = numara;}}

Uygulama 20 Form elemanlarının kullanımı

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

privatevoid button1_Click(object sender, EventArgs e){for (int sayac1 = 0; sayac1 < 10; sayac1++){for (int sayac2 = 0; sayac2 < 10; sayac2++){for (int sayac3 = 0; sayac3 < 10; sayac3++){ label1.Text = sayac1.ToString(); label2.Text = sayac2.ToString(); label3.Text = sayac3.ToString(); listBox1.Items.Add(sayac1.ToString() + sayac2 + sayac3);

label1.Refresh(); label2.Refresh(); label3.Refresh(); listBox1.Refresh();

System.Threading.Thread.Sleep(100);}}}}}

Uygulama 21 Dizi elemanlarını sağa sola kaydırma

publicpartialclassForm1 : Form{public Form1(){

Page 33: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

InitializeComponent();}

int[] dizi = { 1, 2, 3, 4, 5, 6, 7 };privatevoid Form1_Load(object sender, EventArgs e){ Yazdir();}privatevoid Yazdir(){ label1.Text = "";for (int i = 0; i <dizi.Length; i++){ label1.Text += dizi[i] + " - ";}}int tempDeger = 0;privatevoid btnSag_Click(object sender, EventArgs e){ tempDeger = dizi[dizi.Length - 1];for (int i = dizi.Length-1; i > 0;i--){dizi[i] = dizi[i-1];}dizi[0] = tempDeger; Yazdir();}

privatevoid btnSol_Click(object sender, EventArgs e){ tempDeger = dizi[0];for (int i = 0; i <dizi.Length-1; i++){dizi[i] = dizi[i + 1];} dizi[dizi.Length-1] = tempDeger; Yazdir();}}

Uygulama 22 Mayın tarlası oyunu

publicpartialclassForm1 : Form{

Page 34: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

public Form1(){ InitializeComponent();}int satir = 0, sutun = 0, bombaSayisi = 0, tiklama = 0;int[] bombaYeri; int[,] oyunTablo;privatevoid btnYeni_Click(object sender, EventArgs e){ YeniOyunHazirla();}void YeniOyunHazirla(){ tiklama = 0; satir = Convert.ToInt32(txtSatir.Text); sutun = Convert.ToInt32(txtSutun.Text); bombaSayisi = Convert.ToInt32(txtBomba.Text);

panel1.Width = 25 * sutun + 2; panel1.Height = 25 * satir + 2;

ButonlariYerlestir(); BombaAta(); BombalariYerlestir();}void BombalariYerlestir(){ oyunTablo = newint[satir, sutun];for (int i = 0; i < satir; i++){for (int j = 0; j < sutun; j++){ oyunTablo[i, j] = 0;}}

for (int i = 0; i <bombaYeri.Length; i++){int tempX = bombaYeri[i] / sutun;int tempY = bombaYeri[i] % sutun;

oyunTablo[tempX, tempY] = 1;}}void BombaAta(){ bombaYeri = newint[bombaSayisi];

for (int i = 0; i <bombaYeri.Length; i++) bombaYeri[i] = -1;

Random r = newRandom();bool bulundu = false;for (int i = 0; i <bombaYeri.Length; i++){do{bulundu = false;int temp = r.Next(0, satir * sutun);for (int j = i; j <bombaYeri.Length; j++){if (bombaYeri[j] == temp){bulundu = true;

Page 35: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

break;}} bombaYeri[i] = temp;}while (bulundu);}}void ButonlariYerlestir(){ panel1.Controls.Clear();

for (int i = 0; i < satir; i++){for (int j = 0; j < sutun; j++){Button b = newButton(); b.Location = newSystem.Drawing.Point(j * 25, i * 25);b.Name = "button-" + i + "-" + j; b.Size = newSystem.Drawing.Size(25, 25); b.Click += newSystem.EventHandler(btnBomba_Click);

panel1.Controls.Add(b);}}}privatevoid btnBomba_Click(object sender, EventArgs e){Button b = (Button)sender;int tempX = Convert.ToInt32(b.Name.Split('-')[1]);int tempY = Convert.ToInt32(b.Name.Split('-')[2]);b.Enabled = false;

if (oyunTablo[tempX, tempY] == 1){ EkraniSifirla();MessageBox.Show("Oyunu Kaybettin");}else{ tiklama++;b.Text = BombalariYazdir(tempX, tempY).ToString();}if (tiklama == (satir * sutun - bombaSayisi)){ EkraniSifirla();MessageBox.Show("Kazandın");}}void EkraniSifirla(){foreach (Button b2 in panel1.Controls){ b2.Enabled = false;}}privateint BombalariYazdir(int x, int y){int tempSayi = 0;if (y - 1 >= 0) tempSayi += oyunTablo[x, y - 1];//soldakiif (y + 1 < sutun) tempSayi += oyunTablo[x, y + 1];//sagdakiif (x - 1 >= 0)

Page 36: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

tempSayi += oyunTablo[x - 1, y];//üstif (x + 1 < satir) tempSayi += oyunTablo[x + 1, y];//altif (x - 1 >= 0 && y - 1 >= 0) tempSayi += oyunTablo[x - 1, y - 1];//sol üstif (x - 1 >= 0 && y + 1 < sutun) tempSayi += oyunTablo[x - 1, y + 1];//sağ üstif (x + 1 < satir && y - 1 >= 0) tempSayi += oyunTablo[x + 1, y - 1];//sol altif (x + 1 < satir && y + 1 < sutun) tempSayi += oyunTablo[x + 1, y + 1];//sağ alt

return tempSayi;}

privatevoid Form1_Load(object sender, EventArgs e){ YeniOyunHazirla();}

}

Uygulama 23 Sürükle bırak uygulaması

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}bool aktif = false; int ilkX = 0, ilkY = 0;int[,] koordinat = { { 10, 220 }, { 120, 220 }, { 230, 220 } };int[] nesne = { -1, -1, -1 };privatevoid pictureBox1_MouseMove(object sender, MouseEventArgs e){

Page 37: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

PictureBox pb = (PictureBox)sender;if (aktif == true){pb.Left += e.X - ilkX;pb.Top += e.Y - ilkY;}}privatevoid pictureBox1_MouseDown(object sender, MouseEventArgs e){PictureBox pb = (PictureBox)sender;pb.BringToFront();aktif = true; ilkX = e.X; ilkY = e.Y;}privatevoid pictureBox1_MouseUp(object sender, MouseEventArgs e){PictureBox pb = (PictureBox)sender;int index = Convert.ToInt32(pb.Tag);int sol = koordinat[index, 0];int yukari = koordinat[index, 1];

if ((pb.Left> sol - 20 && pb.Left < sol + 20)&& (pb.Top> yukari - 20 && pb.Top < yukari + 20)){pb.Left = sol;pb.Top = yukari;nesne[index] = 1;// OyunKontrol();}elsenesne[index] = -1;//aktif = false;}privatevoid OyunKontrol(){bool kazandin = true;for (int i = 0; i <nesne.Length; i++){if(nesne[i]==-1){ kazandin = false;break;}}if (kazandin == true)MessageBox.Show("Kazandın");}}

Uygulama 24 Sürükle bırak ile puzzle yapma

Page 38: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

bool aktif = false; int ilkX = 0, ilkY = 0;int[,] koordinat = { { 10, 10 }, { 110, 10 }, { 210, 10 }, { 10, 110 }, { 110, 110 }, { 210, 110 } };int[] nesne = { -1, -1, -1,-1,-1,-1 };privatevoid pictureBox1_MouseMove(object sender, MouseEventArgs e){PictureBox pb = (PictureBox)sender;if (aktif == true){pb.Left += e.X - ilkX;pb.Top += e.Y - ilkY;}}privatevoid pictureBox1_MouseDown(object sender, MouseEventArgs e){PictureBox pb = (PictureBox)sender;pb.BringToFront();aktif = true; ilkX = e.X; ilkY = e.Y;}privatevoid pictureBox1_MouseUp(object sender, MouseEventArgs e){PictureBox pb = (PictureBox)sender;int index = Convert.ToInt32(pb.Tag);int sol = koordinat[index, 0];int yukari = koordinat[index, 1];

if ((pb.Left> sol - 20 && pb.Left < sol + 20)&& (pb.Top> yukari - 20 && pb.Top < yukari + 20)){pb.Left = sol;pb.Top = yukari;nesne[index] = 1;// OyunKontrol();}

Page 39: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

elsenesne[index] = -1;//aktif = false;}privatevoid OyunKontrol(){bool kazandin = true;for (int i = 0; i <nesne.Length; i++){if (nesne[i] == -1){ kazandin = false;break;}}if (kazandin == true)MessageBox.Show("Kazandın");}}

Uygulama 25 Tick Tack Tao Oyunu

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

string sira = "X";privatevoid button_Click(object sender, EventArgs e){Button b = (Button)sender;b.Text = sira;int index = Convert.ToInt32(b.Tag);oyun[index] = sira;b.Enabled = false;if (sira == "X") sira = "O";else sira = "X";

OyunKontrol();//}privatevoid OyunKontrol(){bool bittiMi = false;string kazanan = "";if (oyun[0] != ""&& oyun[0] == oyun[1] && oyun[0] == oyun[2]){

Page 40: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

bittiMi = true;kazanan = oyun[0];}elseif (oyun[3] != ""&& oyun[3] == oyun[4] && oyun[3] == oyun[5]){ bittiMi = true;kazanan = oyun[3];}elseif (oyun[6] != ""&& oyun[6] == oyun[7] && oyun[6] == oyun[8]){ bittiMi = true;kazanan = oyun[6];}elseif (oyun[0] != ""&& oyun[0] == oyun[3] && oyun[0] == oyun[6]){ bittiMi = true;kazanan = oyun[0];}elseif (oyun[1] != ""&& oyun[1] == oyun[1] && oyun[1] == oyun[7]){ bittiMi = true;kazanan = oyun[1];}elseif (oyun[2] != ""&& oyun[2] == oyun[5] && oyun[2] == oyun[8]){ bittiMi = true;kazanan = oyun[2];}elseif (oyun[0] != ""&& oyun[0] == oyun[4] && oyun[0] == oyun[8]){ bittiMi = true;kazanan = oyun[0];}elseif (oyun[2] != ""&& oyun[2] == oyun[4] && oyun[2] == oyun[6]){ bittiMi = true;kazanan = oyun[2];}

if(bittiMi){MessageBox.Show("Kazanan=" + kazanan);// btnYeni_Click(null, null);foreach (Button b in panel1.Controls){b.Enabled = false;}}}

string[] oyun = newstring[9];privatevoid btnYeni_Click(object sender, EventArgs e){ panel1.Controls.Clear();

for (int i = 0; i < 9; i++){oyun[i] = "";}int isim = -1;//for (int i = 0; i < 3; i++)//sütun{for (int j = 0; j < 3; j++)//satır

Page 41: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

{isim++;//Button b = newButton(); b.Font = newSystem.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162))); b.Location = newSystem.Drawing.Point(j * 50, i * 50);//b.Name = "btn" + isim;// b.Size = newSystem.Drawing.Size(50, 50);b.Text = "";//b.Tag = isim; b.Click += newSystem.EventHandler(this.button_Click);

panel1.Controls.Add(b);}}}}

Uygulama 26 Kaydırarak resim yapma oyunu

publicpartialclassForm1 : Form{public Form1(){ InitializeComponent();}

privatevoid Form1_Load(object sender, EventArgs e){ btnYeni_Click(null, null);}

Image[] resim = { RastgeleSayi.Properties.Resources._0,

Page 42: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

RastgeleSayi.Properties.Resources._1,RastgeleSayi.Properties.Resources._2,RastgeleSayi.Properties.Resources._3,RastgeleSayi.Properties.Resources._4,RastgeleSayi.Properties.Resources._5,RastgeleSayi.Properties.Resources._6,RastgeleSayi.Properties.Resources._7,RastgeleSayi.Properties.Resources._8};int[,] oyunAlani = newint[3, 3];privatevoid btnYeni_Click(object sender, EventArgs e){int[] d = RastgeleSayiUret(0, 9, 9);int indis = -1;for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){indis++; oyunAlani[i, j] = d[indis];}}

ResimGoster();}

privatevoid ResimGoster(){int indis = -1;for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){indis++;PictureBox pb = (PictureBox)panel1.Controls.Find("pb" + indis, false)[0];pb.Image = resim[oyunAlani[i, j]];}}}

privateint[] RastgeleSayiUret(int baslangic, int bitis, int elemanSayisi){int[] d = newint[elemanSayisi];for (int i = 0; i < d.Length; i++)//Dizi elemanları başlangıç değerid[i] = -1;

Random r = newRandom();int sayi = -1;bool varMi = false;for (int i = 0; i < d.Length; i++){do{ varMi = false; sayi = r.Next(baslangic, bitis);for (int j = 0; j < i; j++){if (sayi == d[j]){ varMi = true;break;}}

Page 43: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne

}while (varMi == true);d[i] = sayi;}

return d;}

privatevoid pb_Click(object sender, EventArgs e){PictureBox pb = (PictureBox)sender;int index = Convert.ToInt32(pb.Tag);int x = index / 3;int y = index % 3;

if (y + 1 < 3 && oyunAlani[x, y + 1] == 8)//sağ kontrol{ oyunAlani[x, y + 1] = oyunAlani[x, y]; oyunAlani[x, y] = 8;}elseif (y - 1 >= 0 && oyunAlani[x, y - 1] == 8)//sol kontrol{ oyunAlani[x, y - 1] = oyunAlani[x, y]; oyunAlani[x, y] = 8;}elseif (x + 1 < 3 && oyunAlani[x+1, y] == 8)//aşağı kontrol{ oyunAlani[x+1, y] = oyunAlani[x, y]; oyunAlani[x, y] = 8;}elseif (x - 1 >=0 && oyunAlani[x - 1, y] == 8)//yukarı kontrol{ oyunAlani[x - 1, y] = oyunAlani[x, y]; oyunAlani[x, y] = 8;} ResimGoster(); BittiMi();}privatevoid BittiMi(){int index = -1;bool durum = true;for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){ index++;if(oyunAlani[i,j]!=index){durum = false;break;}}}if (durum == true)MessageBox.Show("Kazandın");}

}

Page 44: pbs.bozok.edu.tr · Web viewC#’ta bir metot tanımlandığı sınıfın dışında başka bir sınıftan kullanılacaksa metodun içinde bulunduğu sınıf türünden bir nesne