匹配游戏 - setCard方法

时间:2014-09-26 13:13:11

标签: java arraylist

尝试创建方法,接受“数字”然后使用该数字,它会进入全局arraylist <string>并将位置“数字”的图标更改为某个图标使用一系列if-else语句。

问题是我不知道如何拨打该位置。

没有方法,我会像这样编码;

card1.seticon(a);

我会手动为所有if-else语句和arraylist中的所有项目执行此操作。

如何让它变得动态,以便'card'之后的数字在同一方法中不断变化?

到目前为止,这是我的方法&amp;我想用变量或动态的东西替换那些

 public void setCards(int cardNumber) { 
        String temp = cards.get(cardNumber);
        switch (temp) {
            case "0":
                card1.setIcon(a);
                break;
            case "1":
                Card1.setIcon(b);
                break;
            case "2":
                Card1.setIcon(c);
                break;
            case "3":
                Card1.setIcon(d);
                break;
            case "4":
                Card1.setIcon(e);
                break;
            case "5":
                Card1.setIcon(f);
                break;
            case "6":
                Card1.setIcon(g);
                break;
                case "7":
                Card1.setIcon(h);
                break;
        }
}

2 个答案:

答案 0 :(得分:1)

为您的所有实例创建一个继承树。

abstract class Card {
    protected String icon;

    public Card(String icon) {
         this.icon = icon;
    }

    public String getIcon() {
         return this.icon;
    }
}

以下是子类的示例:

class CardA extends Card {
   public CardA() {
        super("Icon A");
   }
}

用你的所有牌做同样的事。之后你可以这样做:

List<Card> cardList = new ArrayList<Card>();
cardList.add(new CardA());
cardList.add(new CardB());

并且假设您要迭代它:

for(Card card : cardList) {
    System.out.println(card.getIcon());
}

那将打印:

 Icon A
 Icon B

如您所见,通过此过程,您可以创建和添加任何子类,而不必修改以前创建的类。

答案 1 :(得分:0)

构建Map<String, Icon>,密钥为"0", "1"..."7", "whatever",值为icon a, b, c...h..anyIcon

然后你只需card1.setIcon(map.get(cards.get(cardNumber)))

(上述行中省略了验证。)