我正在创建一个平台,我有一个名为platform的类,它接受x位置,y位置,宽度,高度和颜色,然后将它们设置在该平台内部。
platform = new Platform(100, 250, 100, 10, Color.BLUE);
就像这样。
我可以这样调用变量:
g.fillRect(platform.x, platform.y, platform.width, platform.height);
当我想要得到平台的颜色时,我会这样做:
g.setColor(platform.color);
我也有一个播放器,它的工作原理非常相似。
我有一个碰撞方法:
int LXOff = (platform.x - player.width); // boundaries
int LYOff = (platform.y - player.height); // boundaries
int RXOff = (platform.x + platform.width); // boundaries
int RYOff = (platform.y + platform.height); // boundaries
int LXOff2 = (platform2.x - player.width);
int LYOff2 = (platform2.y - player.height);
int RXOff2 = (platform2.x + platform2.width);
int RYOff2 = (platform2.y + platform2.height);
if(x <= 5 || y <= 29) // numbers are specific to the perfect border of the screen
{
return true;
}
if(x >= 495 - player.width || y >= 495 - player.height) // numbers are specific to the perfect border of the screen
{
return true;
}
if(x >= LXOff && y >= LYOff && x <= RXOff && y <= RYOff)
{
return true;
}
if(x >= LXOff2 && y >= LYOff2 && x <= RXOff2 && y <= RYOff2)
{
return true;
}
return false;
我的问题是,我需要创建一整套额外的变量来表示第二个平台使用的边界。我想知道,为了将来的使用,如果我要使用更多的平台,我如何使用数组或类似平台的东西来简化它,然后我可以使用一些循环来绘制数组中的所有平台。
发布于 2015-01-22 06:08:10
我相信对于你将要使用的平台,你会创建一个新的平台对象。创建映射以创建平台名称作为关键字和平台对象作为值的映射。需要时按平台名称检索平台对象
Platform android = new Platform(....);
Platform windows = new Platform(....);
Map<String, Platform> map = new HashMap<String, Platform>();
map.put("android", android);
map.put("windows", windows);
//for retrieval
map.get("android");
如果边界是可变的,我建议为每个平台创建一个具有公共逻辑的抽象类和一个特定于平台的类。
发布于 2015-01-22 06:08:41
Platform[] platforms = new Platform[N]
其中N是数组的大小。
如果在创建数组时没有数组的大小,最好使用
List<Platform> platforms = new ArrayList<Platform>()
发布于 2015-01-22 06:20:20
如果我理解你的问题,你有几个平台要画,但你也想画一些界限?O-O方法是为两者定义一个公共接口。
一种选择是定义一个接口,可能是带有getX(), getWidth(), getColor()
的RectangleLike,等。然后循环遍历RectangleLike的一个大数组(注意:最好使用列表)并调用适当的代码。
或者,最好是定义一个接口,也许可以用一个方法drawYourself(Graphics g)
来定义CanDrawIntoGraphics,。循环遍历调用drawYourself().
的列表
https://stackoverflow.com/questions/28082020
复制相似问题