Son Haberler
Anasayfa / Yazılım / C# / Tic-Tac-Toe Oyunu Uygulaması – 2

Tic-Tac-Toe Oyunu Uygulaması – 2

Tic-Tac-Toe oyunu uygulaması Projemize devam edelim. Projemizde kullanacağımız komponentimiz kare şeklinde olacak. Ve bu kare üzerine tıklandığında sıra ile X ve O harflerini yazacak. Bu komponentin görünebilir olması için .NET’te bir grafik nesnesi oluşturup eklemem gerekiyor. Bunun için de System.Graphics class’ından bir nesne üretip, bu nesne üzerinde ihtiyacımız olan işlemleri, arka plan rengi verme, X ve O çizdirme gibi işlemleri yapabileceğim.

Arkaplan rengi oluşturabilmek için grafik nesnesinin FillRectangle metodunu kullanacağım. Bu metod sayesinde komponentin tamamını kaplayan dikdörtgen şeklindeki bir alana önceden yine tanımlayacağımız Brush nesnesi ile dolgu rengi uygulayacağız. Bu işlemlerin hepsini TicTacToe class’ının OnPoint metodunda yazacağız. OnPoint metodu UserControl classında tanımlı olduğundan bu kısımda override yapmamız gerekecek.

Metot override yani var olan metotların yeniden tanımlanması hususunda kısa bir açıklama yapmak gerekirse, olay şudur. Metodun ismi, parametre listesi ve geriye değer döndürme tipi değiştirilmeden, alt class tarafından ata sınıftaki bir metodun tekrar tanımlanması yani işlevinin değiştirilmesi işlemi metot override olarak bilinir. Şimdi kodlarımızı yazalım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;

namespace ClassTicTacToeOyun
{
public class TicTacToe : UserControl
{
private int Width;
private int Height;
//Form üzerine bırakılınca veya tıklanınca çalışacak kodlar
protected override void OnPaint(PaintEventArgs e)
{
Graphics grafik;
Brush dolgu_renk = new SolidBrush(Color.Blue);
grafik = this.CreateGraphics();   //Grafik nesnemizi oluşturuyoruz
this.Width = 100;  //Genişliği ayarlıyoruz
this.Height = 100; // Boyu ayarlıyoruz
grafik.FillRectangle(dolgu_renk, 0, 0, 100,100);  //Mavi arka plan rengi oluşturuyoruz.
}

private Graphics CreateGraphics()
{
throw new NotImplementedException();
}
}
}

Şimdi gelelim X ve O harflerinin çizimine. Mavi arkaplan rengini oluşturduk. Şimdi tıklanan komponent üzerine oyuncu sırasına göre X veya O harfi yazdıracağız. Bunu da Graphics classının DrawLine ve DrawEllipse metotları ile yapabiliriz. DrawLine çizgi çizer, DrawEllipse ise elips çizer. Tabi bu metodları kullanabilmek için de öncelikle bir Pen nesnesi oluşturmamız gerekiyor.

Şimdi komponente tıklayan oyuncunun da sırasını belirlememiz gerekiyor. Bunun için sira adında char tipinde bir değişken tanımlıyorum. Bu değişken birden çok metot tarafından kullanılacak. Dolayısı ile faaliyet alanı bütün bir classı kapsayacak şekilde tanımlanmalı. Programı test edebilmek için sira değişkenine ilk olarak ‘x’ değerini atama işlemi yapıyorum. Şimdi kodlarımız aşağıdaki gibi:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;

namespace ClassTicTacToeOyun
{
public class TicTacToe : UserControl
{
private char sira = 'x';  // çizim için kullanılacak olan ve X veya O değerini tutan değişkenimiz
private int Width;
private int Height;
//Form üzerine bırakılınca veya tıklanınca çalışacak kodlar
protected override void OnPaint(PaintEventArgs e)
{
Graphics grafik;
Brush dolgu_renk = new SolidBrush(Color.Blue);
Pen cizgi_kalemi = new Pen(Color.White, 10);
grafik = this.CreateGraphics();   //Grafik nesnemizi oluşturuyoruz
this.Width = 100;  //Genişliği ayarlıyoruz
this.Height = 100; // Boyu ayarlıyoruz
grafik.FillRectangle(dolgu_renk, 0, 0, 100,100);  //Mavi arka plan oluşturuyoruz.

//Yeşilin üzerine bayaz renke X veya O çizmek için kodlar:
if (this.sira == 'x')  // X yazdırma durumu kontrolü
{
grafik.DrawLine(cizgi_kalemi, 20, 20, 80, 80);  // sol üstten başlama..
grafik.DrawLine(cizgi_kalemi, 80, 20, 20, 80);  // sağ üstten başlama..

}
else if (sira == 'o') // O yazdırma durumu kontrolü
{
grafik.DrawEllipse(cizgi_kalemi, 15, 15, 70, 70);   //Çember çizdirme.
}

}

private Graphics CreateGraphics()
{
throw new NotImplementedException();
}
}
}

Yeri gelmişken Access Modifiers hakkında bilgi verelim. Bununla alakalı bir yazı yazmıştım daha önce ona da göz gezdirebilirsiniz.

Access Modifiers – Erişim Belirleyiciler

Access Modifiers, erişim belirleyici veya erişim belirtgeçleri olarak da anılırlar. Class yani sınıf tanımlamada kullanılabilirler. Amaçları sınıfların veya sınıf içerisinde yer alan metotların ya da değişkenlerin erişilebilirlik seviyelerini belirlemek için kullanılırlar. Public tipindeki bileşenlere her yerden ulaşılabilirken, protected bileşenlere yalnızca aynı sınıf içerisinden veya o sınıfın alt sınıfları tarafından ulaşılabilme imkanı söz konusudur. Private bileşenlere ise sadece kendi sınıfı içerisinden erişim sağlanabilir. Eğer kodlarımızda bir metod önünde, vaya bir değişken önünde herhangi bir erişim belirleyici kullanmamış isek bu bileşen private olarak kabul edilir. Daha detaylı bilgi için erişim belirleyiciler hakkında üstte yer alan linkteki yazıyı okumanızı öneririm. Şimdilik uygulamamızda ikinci bölüm bitti, bir sonraki yazıda devam edeceğiz.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir