我正在制作类似模拟人生的游戏,现在我正在思考如何构建我的对象结构。
目前我考虑创建一个名为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
}
现在我可以创建多个 house 或 tree 实例,而无需创建指定它是 house 或 tree 的属性。这似乎更合理,但同时似乎会分配更多的内存,因为我正在创建更多的类。
我只需要知道处理这种对象的最佳实践。如果有人能帮我解决这个问题。如果您知道有关减少游戏或任何应用程序负载的最佳实践资源,请也告诉我。我还想使用接口。第二个概念似乎更合理,我考虑让父类实现以下接口。
public class GameObject implement IGameObject {
name:String
width:int
height:int
}
现在我可以创建一个类,它具有一个方法,可以松散地接受任何继承自GameObject的类型。
Selector.loadObject(gObject:IGameObject);
根据类型的不同(例如树、建筑物、房屋),我可以使用case语句来确定它的类型并相应地评估它。
我还创建了一个Tile类,它将通过loadObject方法传递。如果case语句发现它是Tile类型,则会突出显示任何Tile,具体取决于我的鼠标停留在哪个Tile上。
我的第二个问题是,如果一个类继承了一个实现接口的类,那么该类的子类也被认为是一个IGameObject吗?或者它必须直接实现该接口。
这一切听起来像是我在正确的方向上前进了,关于组织方面的问题。
谢谢你们的帮助,谢谢!