Popüler Yayınımıza da Göz Atabilirsiniz
C# Puan Tablosu Oluşturma
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Merhaba arkadaşlar bugün sizlere bir menajer oyununda takımların puan tablosunu ve doğru biçimde sıralamayı nasıl yapacağımızı göstereceğim. Tabi bildiğimiz üzere ligde takımlar puanına göre sıralanıyor eşit olması durumunda ise averaj ve atılan gollere bakılıyor.Bizde bu sisteme göre yapacağız.
Öncelikle böyle büyük çaplı bir menajer oyununda classları kullanmamız şarttır. Bize bir "Takım" adında class lazım , hemen oluşturalım. Bu oluşturduğumuz Takım class'ına IComparable interface'ni uygulayalım bu yapının bize verdiği CompareTo komutuyla işlemlerimizi kolaylıkla gerçekleştireceğiz. Eğer isterseniz hazırlamış olduğum football manager youtube serisinide kanalımdan izleyebilirsiniz.
https://www.youtube.com/playlist?list=PLw919wW8ikxenpnSTVecZ-oWZjXbPwEDl
public class Takim:IComparable
{
string takim_adi;
int Puan;
int Atilan_gol;
int Yenen_gol;
public int CompareTo(object obj)
{
}
}
Evet görüldüğü gibi classımızın urumu bu şekilde şuan CompareTo komutunun içine sıralama algoritamızı yazacağız. İlk olarak puana göre
Takim t = (Takim)obj; //Karşılaştıraln takımın birini alıyoruz diğerinide this komutu sayesinde alacağız.
//this.puan ile takımın birinin puanını alıyoruz t.puan ile de diğerini puanı alıp karşılaştırıyoruz.
if (this.puan > t.puan)
{
return -1;//ilk takımın puanı fazla 1.takımı üste çıkar
}
else if (this.puan < t.puan)
{
return 1;//ikinci takımın puanı fazla 2.takımı üste çıkar
}
Bu komutla 2 takım birbirine üstünlük sağlıyorsa peki puanları eşitse. Altına yazmaya devam ediyoruz.
else
{
//2 takım averajını karşılaştırıyoruz.
if (this.atilan_gol - this.yenilen_gol > t.atilan_gol - t.yenilen_gol)
{
return -1;
}
else if (this.atilan_gol - this.yenilen_gol < t.atilan_gol - t.yenilen_gol)
{
return 1;
}
else
{
//Averajlar eşitse durumu
//Kim fazla gol atmışsa ona bakacağız.
}
}
Bunuda gösterdikten sonra algoritmanın tamamını paylaşıyorum bu mantıkla iç içe koşullar ile devam ediyor.
public int CompareTo(object obj)
{
Takim t = (Takim)obj;
//Puanları karşılaştır.
if (this.puan > t.puan)
{
return -1;
}
else if (this.puan < t.puan)
{
return 1;
}
else
{
//Puanlar eşitse averajlara bak
if (this.atilan_gol - this.yenilen_gol > t.atilan_gol - t.yenilen_gol)
{
return -1;
}
else if (this.atilan_gol - this.yenilen_gol < t.atilan_gol - t.yenilen_gol)
{
return 1;
}
else
{
//Averaj eşitse atılan gollere bak
if (this.atilan_gol > t.atilan_gol )
{
return -1;
}
else if (this.atilan_gol < t.atilan_gol)
{
return 1;
}
else
{
return 0;
}
}
}
return 0;
}
Evet şimdi bu algoritmayı çalıştırmaya geldi sıra. Öncelikle ligdeki takımları bir listede topluyalım
List<Takim> takimlar = Data.Takimlar; //Data Takimlar yerine kendi takımlarınızı vereceksiniz.
takimlar.Sort(); //Diyoruz bu sayede düzgün biçimde sıralandı
Bunda sonra tabloya aktarmak kaldı. Ben hazırladığım datagridview'e aktaracağım.Bir for döngüsü sayesinde takımı ve puan gibi istatistiklerini puan tablosuna aktarıyorum
for (int i = 0; i
{
Takim t = takimlar[i];
dataGridView1.Rows.Add(i+1,t.takim_adi, t.Puan,t.Atilan_gol-t.Yenen_gol, t.Atilan_gol, t.Yenen_gol);
}
i+1 dememizin sebebi de listemiz 0 dan başlıyor ama lig tablomuzda 1 2 3 ... diye sıralanıyor bu yüzden i+1 olarak kullanıyoruz.
Öncelikle böyle büyük çaplı bir menajer oyununda classları kullanmamız şarttır. Bize bir "Takım" adında class lazım , hemen oluşturalım. Bu oluşturduğumuz Takım class'ına IComparable interface'ni uygulayalım bu yapının bize verdiği CompareTo komutuyla işlemlerimizi kolaylıkla gerçekleştireceğiz. Eğer isterseniz hazırlamış olduğum football manager youtube serisinide kanalımdan izleyebilirsiniz.
https://www.youtube.com/playlist?list=PLw919wW8ikxenpnSTVecZ-oWZjXbPwEDl
public class Takim:IComparable
{
string takim_adi;
int Puan;
int Atilan_gol;
int Yenen_gol;
public int CompareTo(object obj)
{
}
}
Evet görüldüğü gibi classımızın urumu bu şekilde şuan CompareTo komutunun içine sıralama algoritamızı yazacağız. İlk olarak puana göre
Takim t = (Takim)obj; //Karşılaştıraln takımın birini alıyoruz diğerinide this komutu sayesinde alacağız.
//this.puan ile takımın birinin puanını alıyoruz t.puan ile de diğerini puanı alıp karşılaştırıyoruz.
if (this.puan > t.puan)
{
return -1;//ilk takımın puanı fazla 1.takımı üste çıkar
}
else if (this.puan < t.puan)
{
return 1;//ikinci takımın puanı fazla 2.takımı üste çıkar
}
Bu komutla 2 takım birbirine üstünlük sağlıyorsa peki puanları eşitse. Altına yazmaya devam ediyoruz.
else
{
//2 takım averajını karşılaştırıyoruz.
if (this.atilan_gol - this.yenilen_gol > t.atilan_gol - t.yenilen_gol)
{
return -1;
}
else if (this.atilan_gol - this.yenilen_gol < t.atilan_gol - t.yenilen_gol)
{
return 1;
}
else
{
//Averajlar eşitse durumu
//Kim fazla gol atmışsa ona bakacağız.
}
}
Bunuda gösterdikten sonra algoritmanın tamamını paylaşıyorum bu mantıkla iç içe koşullar ile devam ediyor.
public int CompareTo(object obj)
{
Takim t = (Takim)obj;
//Puanları karşılaştır.
if (this.puan > t.puan)
{
return -1;
}
else if (this.puan < t.puan)
{
return 1;
}
else
{
//Puanlar eşitse averajlara bak
if (this.atilan_gol - this.yenilen_gol > t.atilan_gol - t.yenilen_gol)
{
return -1;
}
else if (this.atilan_gol - this.yenilen_gol < t.atilan_gol - t.yenilen_gol)
{
return 1;
}
else
{
//Averaj eşitse atılan gollere bak
if (this.atilan_gol > t.atilan_gol )
{
return -1;
}
else if (this.atilan_gol < t.atilan_gol)
{
return 1;
}
else
{
return 0;
}
}
}
return 0;
}
Evet şimdi bu algoritmayı çalıştırmaya geldi sıra. Öncelikle ligdeki takımları bir listede topluyalım
List<Takim> takimlar = Data.Takimlar; //Data Takimlar yerine kendi takımlarınızı vereceksiniz.
takimlar.Sort(); //Diyoruz bu sayede düzgün biçimde sıralandı
Bunda sonra tabloya aktarmak kaldı. Ben hazırladığım datagridview'e aktaracağım.Bir for döngüsü sayesinde takımı ve puan gibi istatistiklerini puan tablosuna aktarıyorum
for (int i = 0; i
{
Takim t = takimlar[i];
dataGridView1.Rows.Add(i+1,t.takim_adi, t.Puan,t.Atilan_gol-t.Yenen_gol, t.Atilan_gol, t.Yenen_gol);
}
i+1 dememizin sebebi de listemiz 0 dan başlıyor ama lig tablomuzda 1 2 3 ... diye sıralanıyor bu yüzden i+1 olarak kullanıyoruz.
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Bu blogdaki popüler yayınlar
C# örnekleri oyun nasıl yapılır
C# örnekleri oyun nasıl yapılır Merhaba arkadaşlar bugün sizler c# ile yaptığım oyunları göstereceğim isterseniz bunları indirebilirsiniz. Projelerin kodlarını videonun açıklama kısmından ulaşabilirsiniz. 1.Kim Milyoner Olmak İster Oyun Yapımı - Bilgi Yarışması Oyun Yapımı 3 videoluk bu seride bilgi yarışması nasıl yapılır onu anlattık. 2.Yılan Oyun Yapımı Tek videoda basit bir şekilde yılan oyunu nasıl yapılır bundan bahsettik. 3.Var Mısın Yok Musun Oyun Yapımı 4 videoluk var mısın yok musun oyunumuz 4.Football Manager Oyun Yapımı Uzun bir seri olan bu oyunun yapımı halen devam etmektedir. 5.Mayın Tarlası Oyun Yapımı Tek videoda nasıl yapılır açıklayıcı bir şekilde anlattık. 6.Adam Asmaca Oyun Yapımı 7.Uzay Savaşı Oyun Yapımı 2D 8.Araba Yarışı Oyun Yapımı 2D
C# ile List İçinde Değer Arama ve Bulma Find ve FindAll Komutu
C# derslerinde koleksiyon yapısı olan List'in dizilerden farklı olarak içindeki bir değeri ya da değer aralığını birden çok değeri arayıp bulmayı sizinle göreceğiz. Find ve FindAll komutlarından yararlanacağız. İsterseniz kendi oluşturmuş olduğunuz bir class değerini de arayabilirsiniz. Referans olarak using System.Collections.Generic; using System.Linq; bu referans kütüphaneler kullanıyoruz. Eğer ekli değilse class dosyamızın en üst satırlarına ekleyebiliriz. List < string > texts = new List < string >(); texts.Add( "RehaStudio" ); Mesela yukarıda bir texts adında List koleksiyonu oluşturduk ve "RehaStudio" adında bir eleman ekledik. string deger = texts .Find( value => value == "RehaStudio" ); Burada list ifademize Find komutunu yazıyoruz ve içine ise bir şart ifadesi girebiliri...
Yorumlar
Yorum Gönder