2

我目前正在 Eclipse 中开发一个小型 Java 游戏,并且已经深入研究了几千行代码。现在,我正在专门尝试使用字符串的内容来绘制图像,并且想知道这是否可能。如果是这样,它将为每个图像节省至少几百行单独的变量。

由于篇幅太长,粘贴整个程序很可能会适得其反,所以我只会展示我正在尝试的内容。

我正在尝试做的事情:

ImageIcon ladder = new ImageIcon (getClass ().getResource ("ladder.png"));
floorContents [currentX] [currentY] = "ladder";

public void paint (Graphics g)
{
     if (floorContents [currentX] [currentY] != "none") // painting item where standing
     {
         floorContents[currentX][currentY].paintIcon (this, g, 0, 0);
     }
}

本质上,我试图让程序看到这一行:

floorContents[currentX][currentY].paintIcon (this, g, 0, 0);

像这样:

ladder.paintIcon (this, g, 0, 0);

如果可能的话。这将使我不必分别写入每个图像项。

4

3 回答 3

2

将每个图像放在一个Map由字符串键入的键中

imageMap.put("ladder", new ImageIcon (getClass ().getResource ("ladder.png")));

//...

imageMap.get(floorContents [currentX] [currentY]).paintIcon (this, g, 0, 0);

当然,你应该先key看map是否包含key,或者返回的值是否为null……

if (imageMap.containsKey(floorContents [currentX] [currentY]) {
    //....
}

ImageIcon image = imageMap.get(floorContents [currentX] [currentY]);
if (image != null) {
    //...
}

但这取决于你

于 2013-02-05T22:35:53.507 回答
1
 if (floorContents [currentX] [currentY] != "none")

应该更像:

 if (!floorContents [currentX] [currentY].equals("none"))

有关详细信息,请参阅Java 中的字符串比较(以及大约 500 多个)。

于 2013-02-05T22:40:37.950 回答
1

我会完全停止使用字符串。null如果我见过,“无”就是代码气味。为什么甚至完全匹配String

ImageIcon[][] floorContents;
ImageIcon ladder = new ImageIcon (getClass ().getResource ("ladder.png"));
floorContents[currentX][currentY] = ladder;


public void paint (Graphics g) {
   if (floorContents [currentX] [currentY] != null) {
      floorContents[currentX][currentY].paintIcon (this, g, 0, 0);
   }
}
于 2013-02-05T22:45:07.893 回答