所以我把Enum叫做Terrain
public enum Terrain {
DIRT(4, "res/imgs/DirtTile.png"), GRASS(5, "res/imgs/GrassTile.png");
private String filePath;
private Image image;
private boolean imageLoaded;
private int value;
Terrain(int val, String imagePath) {
value = val;
filePath = imagePath;
imageLoaded = false;
}
public Image getImage() {
if (!imageLoaded) {
loadImage();
}
return image;
}
public void loadImage() {
try {
image = ImageIO.read(new File(filePath));
} catch (IOException e) {
System.err.println("Failed to load image!");
e.printStackTrace();
}
imageLoaded = true;
}
}
我想要的是能够将一个int与terrain值进行比较,以便如果相等,则将地形绘制到屏幕上。
我在想类似
if(int==Terrain.value){}
但是我不太确定如何去做。如果有人可以帮我解决这个问题,我有一个int数组,我想将其与之比较;如果它确实等于该值,则将该图块存储在单独的图像数组中。
编辑:
对于所有说我应该使用getValue()方法的人,我想将我的值与所有Enums值进行比较,如果它等于(例如,等于4,则可以将我的图像设置为(污垢))。
我正在其他班级进行检查。
最佳答案
一种可能性是向Terrain枚举添加静态函数,如下所示:
static Terrain getTerrainFor(int val)
{
for (Terrain t : Terrain.values())
{
if (t.value() == val)
return t;
}
return t;
}
称之为(Terrain.getTerrainFor(int))做逻辑