首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使对象数组成为Java

使对象数组成为Java
EN

Stack Overflow用户
提问于 2015-01-22 13:47:21
回答 5查看 91关注 0票数 1

我正在创建一个平台,我有一个名为platform的类,它接受x位置,y位置,宽度,高度和颜色,然后将它们设置在该平台内部。

代码语言:javascript
复制
platform = new Platform(100, 250, 100, 10, Color.BLUE);

就像这样。

我可以这样调用变量:

代码语言:javascript
复制
g.fillRect(platform.x, platform.y, platform.width, platform.height);

当我想要得到平台的颜色时,我会这样做:

代码语言:javascript
复制
g.setColor(platform.color);

我也有一个播放器,它的工作原理非常相似。

我有一个碰撞方法:

代码语言:javascript
复制
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;

我的问题是,我需要创建一整套额外的变量来表示第二个平台使用的边界。我想知道,为了将来的使用,如果我要使用更多的平台,我如何使用数组或类似平台的东西来简化它,然后我可以使用一些循环来绘制数组中的所有平台。

EN

回答 5

Stack Overflow用户

发布于 2015-01-22 14:08:10

我相信对于你将要使用的平台,你会创建一个新的平台对象。创建映射以创建平台名称作为关键字和平台对象作为值的映射。需要时按平台名称检索平台对象

代码语言:javascript
复制
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");

如果边界是可变的,我建议为每个平台创建一个具有公共逻辑的抽象类和一个特定于平台的类。

票数 0
EN

Stack Overflow用户

发布于 2015-01-22 14:08:41

代码语言:javascript
复制
Platform[] platforms = new Platform[N]

其中N是数组的大小。

如果在创建数组时没有数组的大小,最好使用

代码语言:javascript
复制
List<Platform>  platforms = new ArrayList<Platform>() 
票数 0
EN

Stack Overflow用户

发布于 2015-01-22 14:20:20

如果我理解你的问题,你有几个平台要画,但你也想画一些界限?O-O方法是为两者定义一个公共接口。

一种选择是定义一个接口,可能是带有getX(), getWidth(), getColor()RectangleLike,等。然后循环遍历RectangleLike的一个大数组(注意:最好使用列表)并调用适当的代码。

或者,最好是定义一个接口,也许可以用一个方法drawYourself(Graphics g)来定义CanDrawIntoGraphics,。循环遍历调用drawYourself().的列表

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28082020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档