Java-阻止分幅的更好方法(登录问题)

Java-阻止分幅的更好方法(登录问题),java,applet,2d,tiles,Java,Applet,2d,Tiles,好的,我有一个我正在制作的2D瓷砖RPG。。。。 这是一个实时小程序: 守则亦载于 无论如何,如果你检查代码,似乎我只能阻止瓦片24(这是墙) 你们当中有谁是非常聪明的java专家,他们认为我可以用什么方法来阻止多个tile 我已压缩了所需的文件,以便您可以在此处随意玩: 我希望我可以阻挡多个瓷砖…:) 感谢嗯,请创建一个已阻止的磁贴集合或阵列,并更改blocked()方法以查看给定磁贴是否在该集合中 更好的方法是,电路板不仅仅是整数,而是引用Tile类的实例,该类了解该类型的Tile的所有信

好的,我有一个我正在制作的2D瓷砖RPG。。。。 这是一个实时小程序:

守则亦载于

无论如何,如果你检查代码,似乎我只能阻止瓦片24(这是墙)

你们当中有谁是非常聪明的java专家,他们认为我可以用什么方法来阻止多个tile

我已压缩了所需的文件,以便您可以在此处随意玩:

我希望我可以阻挡多个瓷砖…:)


感谢

嗯,请创建一个已阻止的磁贴集合或阵列,并更改
blocked()
方法以查看给定磁贴是否在该集合中


更好的方法是,电路板不仅仅是整数,而是引用
Tile
类的实例,该类了解该类型的Tile的所有信息—其图像、是否被阻止以及任何其他相关信息。这样,您就可以将有关磁贴的信息封装在一个地方,然后以简单的方式询问有关特定磁贴的信息。

以下是问题的代码摘要:

int[][] board; // row tiles for ultimate mapping experience!

private static int BLOCKED = 24;

public boolean blocked(int tx, int ty) {
  return board[ty][tx] == BLOCKED;
}
它清楚地表明,您只阻塞了“24”。有几种方法可以做到这一点。看看你的代码,我同意Jon Skeet的观点,它不是非常面向对象的,最好使用封装和对象来帮助你的代码和设计。但要回答您的问题,您只需将被阻止的磁贴放入哈希集中,检查它们是否包含磁贴,然后将其作为“可阻止”返回即可。例如

private static final HashSet BLOCKED_TILES=new HashSet();
静止的{
加上(24);
堵塞的瓷砖。添加(1);
//在这里添加更多的瓷砖
}
公共布尔阻塞(int-tx,int-ty){
返回阻塞的_TILES.contains(board[ty][tx]);
}

我建议您在此处发布实际代码,而不是链接到它,或作为ZIP文件提供(实际上没有多少人会下载、解压缩和运行它)。您可能还想详细说明“只能阻挡瓷砖24(即墙壁)”的含义(我一点也不知道…)。
private static final HashSet<Integer> BLOCKED_TILES = new HashSet<Integer>();
static {
  BLOCKED_TILES.add(24);
  BLOCKED_TILES.add(1);
  //add more tiles here
}

public boolean blocked(int tx, int ty) {
  return BLOCKED_TILES.contains(board[ty][tx]);
}