Я делаю симы, как игра, и сейчас я пытаюсь выяснить, как я буду структурировать объекты.Как правильно создавать объекты игры
Прямо сейчас я имею в виду, чтобы создать класс под названием GameObject, то псевдо ниже
public class GameObject {
name:String
width:int
height:int
}
Таким образом, я мог бы создать такие объекты, как кусты, деревья и здания. Но потом я начал думать. что, если бы я хотел создать несколько зданий и деревьев того же типа? Мне пришлось бы делать экземпляры GameObject и давать ему новое имя, высоту и ширину. Свойства должны быть одинаковыми для того, чтобы я мог дублировать один объект. Это кажется немного утомительным. Тогда я думаю, может быть, это не правильный путь. Так я думал, я бы продлить GameObject, как показано ниже
public class Tree extends GameObject{
birdHouse:Boolean
}
public class Building extends GameObject{
packingGarage:Boolean
stories:Number
}
public class House extends GameObject{
garage:Boolean
stories:Number
}
Теперь этот путь, я могу просто создать несколько экземпляров дома или дерева, не создавая свойства, задающие, что это действительно дом или дерево. Это кажется более логичным, но в то же время кажется, что он выделяет больше памяти, потому что я создаю больше классов.
Мне просто нужно знать, что лучше всего подходит для таких объектов. Если кто-нибудь сможет мне помочь. также, если вы знаете какие-либо ресурсы для лучших практик снижения нагрузки на игры или любое приложение. Я также хочу использовать интерфейсы. вторая концепция представляется более разумным, и я думал о том, родительская реализовать интерфейс, как показано ниже
public class GameObject implement IGameObject {
name:String
width:int
height:int
}
Теперь этот способ я могу создать класс, который имеет метод, который свободно принимать принимает любой тип, который наследует GameObject.
Selector.loadObject(gObject:IGameObject);
В зависимости от того, какого типа это (то есть дерево, здание, дом), я могу использовать случай заявление, чтобы выяснить, какой тип оно и оценить его соответствующим образом.
Я также создал класс плитки, который пройдет через метод loadObject. Он также будет дочерним элементом класса GameOject. если аргумент case обнаруживает, что это тип Tile, он будет выделять любую Плитку в зависимости от того, какая моя мышь закончилась.
Мой второй вопрос заключается в том, что класс наследует класс, реализующий интерфейс, это класс-класс класса, который также считается объектом IGameObject. или он должен реализовать этот интерфейс напрямую.
все это звучит, как будто я иду в правильном направлении, насколько это касается организации.
Спасибо за вашу помощь, спасибо, ребята!