Tôi hiện đang làm việc trên một trò chơi trong XNA và tôi không chắc chắn về cách tôi nên đi về cách làm như sau ...C# Subclass Thực hành tốt nhất
Tôi có một lớp cơ sở của tòa nhà như vậy
public 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; }
}
}
Sau đó tôi có nhiều lớp con cho các loại tòa nhà, ví dụ:
public class TownHall:BuildingsBase
{
public int foodHeld;
public TownHall()
{
foodHeld = 100;
woodRequired = 500;
}
}
Câu hỏi của tôi là cách tốt nhất để đặt giá trị mặc định để tạo lớp con. Ví dụ, woodRequired cho một townhall được đặt thành 500 nhưng ở những nơi khác nhau trong mã tôi cần phải truy cập vào giá trị này trước khi tôi có một thể hiện của townhall tuyên bố (Khi kiểm tra nếu có đủ gỗ để xây dựng).
Tôi hiện đang có một chuỗi toàn cầu các biến mặc định cho từng loại tòa nhà nhưng tôi tự hỏi liệu có cách nào tốt hơn để thực hiện việc này hay không.
if (Globals.buildingDefaults[BuildingType.Townhall].woodRequired < Globals.currentWood)
{
Townhall newTH = new Townhall();
}
Tại sao lưu ý lại? Tôi nghĩ đó là một câu hỏi hợp lệ. – Caramiriel
Tại sao không làm theo cách khác? Xây dựng đầu tiên, ví dụ: TownHall nội bộ và sau đó kiểm tra giá trị của 'woodRequired <= myCurrentWood' nếu không đủ gỗ có sẵn chỉ cần phá hủy đối tượng một lần nữa. Vâng, điều đó không nên được thực hiện nếu bạn có đối tượng khổng lồ với rất nhiều tính toán tất nhiên. Người dùng không biết rằng bạn đã giữ đối tượng và chỉ cần gọi .Show() hoặc một cái gì đó. –
Ý tưởng thứ hai là để thực hiện một 'int currentWood()' chức năng và chỉ cần kiểm tra nó trong constructor của các đối tượng, có bạn có thể ngừng tạo ra nếu không đủ gỗ có sẵn –