将java图像分配给不同的对象实例(扑克牌)

时间:2011-11-06 13:08:42

标签: java

我正在尝试编写一个applet来显示其他一些卡片。

我有一个包含52张卡片图片的文件夹。

我如何为Card对象的每个实例分配图像?

我是否需要在对象中创建一个52图像数组,然后为每张卡分配正确的索引?

由于

3 个答案:

答案 0 :(得分:2)

我建议卡片应该是一个不可变的对象。 因此,我会在建造卡片时定义卡片的图像:

例如:

public class Card {
    final int value;
    final Suit suit;
    final BufferedImage image;

    public Card(int value, Suit suit) throws IOException {
        this.value = value;
        this.suit = suit;
        File imageFile = new File("image-dir", suit + "-" + value + ".jpg");
        this.image = ImageIO.read(imageFile);
    }

    public enum Suit {
        Spades, Clubs, Diamonds, Hearts;
    }
}

然后您可以填充这样的套牌:

Set<Card> deck = new HashSet<Card>();
for (int value = 1 ; value <= 13 ; value++) {
    for (Suit suit : Suit.values()) {
        deck.add(new Card(value, suit));
    }
}

答案 1 :(得分:0)

是什么阻止您创建包含图像(image的实例或您用于UI的任何内容)本身的字段java.awt.Image

答案 2 :(得分:0)

你看过enums了吗?您可以向getImage()类添加Card方法,该方法会根据卡片RankSuite返回正确的图片。这当然意味着图像文件的一致命名约定,例如

private static final String IMAGE_DIR = // image directory

public BufferedImage getImage() {
    String fileName = suite + "_" + rank + ".jpg";
    File file = new File(IMAGE_DIR, fileName);
    return ImageIO.read(file);
}

您还应考虑缓存图像,以便每次需要时都不会从文件中读取图像。