Şu anda XNA bir oyun üzerinde çalışıyorum ve ben şu yapmayı gitmeli nasıl emin değilim ...C# Subclass İyi Uygulama
Böyle
olarak binaların bir taban sınıf varpublic class BuildingsBase
{
private int _hp;
public int hp
{
get { return _hp; }
set { _hp= value; }
}
private int _woodRequired;
public int woodRequired
{
get { return _woodRequired; }
set { _woodRequired = value; }
}
}
Örneğin yapı türleri için birden fazla alt sınıfa sahip oldum.
public class TownHall:BuildingsBase
{
public int foodHeld;
public TownHall()
{
foodHeld = 100;
woodRequired = 500;
}
}
Sorum şu ki, alt sınıflar oluşturmak için varsayılan değerleri belirlemenin en iyi yolu nedir?
Örneğin, bir townhall için woodRequired 500 olarak ayarlanır ancak kodda çeşitli yerlerde ben (yapmak için yeterince odun var ise kontrol ederken) townhall örneğidir ilan var önce bu değeri erişmek gerekir.
Şu anda her bina türü için genel bir varsayılan değişken dizisi var, ancak bunu yapmanın daha iyi bir yolu olup olmadığını merak ediyorum.
if (Globals.buildingDefaults[BuildingType.Townhall].woodRequired < Globals.currentWood)
{
Townhall newTH = new Townhall();
}
Neden düşüş yok? Bence geçerli bir soru. – Caramiriel
Neden başka bir şey yapmıyorsunuz? İlk önce ör. TownHall dahili ve daha sonra yeterli odun kullanılabilir değilse sadece 'woodRequired <= myCurrentWood' değerini kontrol tekrar nesneyi yok et. Tabii ki, çok fazla hesaplamayla büyük bir nesneye sahipseniz, bu yapılmamalıdır. Kullanıcı, zaten nesneyi tuttuğunuzu ve sadece .Show() veya bir şey çağırdığını bilmez. –
İkinci fikir, int currentWood() 'işlevinin implementa olduğunu ve sadece nesnelerin yapıcısını kontrol etmektir, eğer yeterli odun yoksa, yaratmayı durdurabilirsiniz –