【发布时间】:2015-03-26 17:28:40
【问题描述】:
全部。我正在开发一个小游戏,其中创建了一个 2D 数组来容纳游戏“地图”的每个图块。游戏产生了一个玩家和一堆各种各样的物品。单元格如下所示:
private String [][] cells;
...
public void set(int cellX, int cellY, String str)
{
cells[cellX][cellY] = str;
}
每个字符串都说明每个地方的单元格的样子。例如,有时会生成一堵墙,有时会创建通道(这都是从文件中读取的)。所以问题是这样的:
如何在某些单元格上随机生成对象?例如,如果我总共有 36 个单元格 (6x6),但其中只有 23 个单元格可以被玩家“移动”,我如何随机生成每个单元格上产生相同机会的项目?
到目前为止我的代码是这样的。
public void draw()
{
for (int x = 0; x < cells.length; x++)
{
for (int y = 0; y < cells[w].length; y++)
{
if(cells[x][y] == "W"){
Cell wall = new Cell(config.wallImage());
wall.draw(config, x, y);
if(cells[x][y] == "P"){
Cell passage = new CellPassage(config.passageImage());
// This is where I need to check to see if the item is okay
// to be placed. If it is unable, nothing will be added to
// the Cell passage.
//passage.attemptToAdd(item);
passage.draw(config, x, y);
}
}
}
hero.draw();
}
【问题讨论】:
-
我已经阅读了您的描述两次,但我仍然不确定您要做什么,但作为一个附带建议,我可以肯定地说不要这样做:@ 987654323@。不要使用
==或!=比较字符串,因为这会比较对象相等,两个对象是否相同,这不是您想要的。您想要功能相等,因此使用equals(...)或equalsIgnoreCase(...)方法。所以改为if (cells[x][y].equals("W")) { -
你想生成迷宫吗?每个“通道”都应该可以从任何其他“通道”到达吗?
-
我同意@HovercraftFullOfEels。此外,您在第二个
if之前缺少一个结束}。你不是说第二个if中的cells[x].length吗? -
@HovercraftFullOfEels 谢谢,我改变了这个。我对java比较陌生,所以谢谢你的解释。我正在尝试绘制一个迷宫,在迷宫的某些位置,我需要诸如钥匙或宝石之类的“对象”来生成。
-
@DarronMartinez 对不起,但我仍然不知道你想要什么。你想在你的地图上插入一些随机的东西......好吧。那是你的问题吗?或者它是否因为某种限制而验证是否可以将东西放在某个单元格上?或者是别的什么?我很困惑。
标签: java multidimensional-array