我目前正在研究eclipse中的一个小型Java游戏,并且在几千行代码中深陷其中。现在,我特意尝试使用String的内容来绘制图像,我想知道是否可能。如果是这样,每个图像至少会为我节省几百行个别变量。
由于长度的原因,整个程序的粘贴很可能会产生相反的效果,因此我只会证明我的目标是什么。
我正在尝试做什么:
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);
如果可能的话。这样可以使我不必单独写入每个图像项目。
答案 0 :(得分:2)
将每张图片放入由字符串
键入的Map
中
imageMap.put("ladder", new ImageIcon (getClass ().getResource ("ladder.png")));
//...
imageMap.get(floorContents [currentX] [currentY]).paintIcon (this, g, 0, 0);
当然,您应该先键入以查看地图是否包含该键,或者返回的值是否为空...
if (imageMap.containsKey(floorContents [currentX] [currentY]) {
//....
}
的
ImageIcon image = imageMap.get(floorContents [currentX] [currentY]);
if (image != null) {
//...
}
但这取决于你
答案 1 :(得分:1)
if (floorContents [currentX] [currentY] != "none")
应该更像是:
if (!floorContents [currentX] [currentY].equals("none"))
有关详细信息,请参阅String comparison in Java(和about 500 more)。
答案 2 :(得分: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);
}
}