为了账号安全,请及时绑定邮箱和手机立即绑定

计算 cardSum (Hands of Strings)

计算 cardSum (Hands of Strings)

白板的微信 2021-10-13 10:23:01
我正在尝试创建一个二十一点游戏。游戏本身非常简单(至少是我的版本)。玩家从洗好的一副牌中抽出一张牌,并计算已抽出的牌的总和。我有一个字符串类型的卡片组列表,这对我来说现在是一个大问题。我不知道如何计算总和,因为它们是字符串类型。你对我能做什么有什么指导方针吗?我想出的唯一解决方案真的很糟糕,就是将卡片与字符串进行比较并给它一个值。例如,drawnCard.equals("Four of hearts") = "4";    public class Player {    private String nickName;    private int playerNumOfCards;    ArrayList<Card> playerHand = new ArrayList<>();    public Player (String name){        this.nickName = name;    }    public String getNickName() {        return nickName;    }    public void addCard(Card aCard){        playerHand.add(aCard);        this.playerNumOfCards++;    }    public void getHandSum(){    }    public void getPlayerHand(){        for(Card cards: playerHand){            System.out.println(cards.toString());        }    }  }
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

创建一个枚举来表示 Face


enum Face {

    Ace(number), //I don't know what number is for Ace and others.

    Deuce(number),

    Three(3),

    Four(4),

    Five(5),

    Six(6),

    Seven(7),

    Eight(8),

    Nine(9),

    Ten(10),

    Jack(number),

    Queen(number),

    King(number);


    private final int number;


    Faces(int number) {

        this.number = number;

    }


    public int getNumber() {

        return number;

    }

}

将面的类型从字符串更改为面。


class Card {


    private Face face;

    private String suit;


    public Card (Face cardFace, String cardSuit){card's face and suit

        this.face = cardFace;

        this.suit = cardSuit;

    }


    public String toString(){

        return face + " of " + suit;

    }


    public int getNumber() {

        return face.getNumber();

    }

}

添加一个从卡片类中获取人脸号码的方法,然后相应地使用它。您还需要更改其他部分或您的项目,但我会将其留给您。


还建议对 Suit 使用 enum。


查看完整回答
反对 回复 2021-10-13
?
撒科打诨

TA贡献1934条经验 获得超2个赞

我在那里看不到牌组列表,但是如果您的卡片字符串始终遵循相同的命名约定(即“四颗心”),您可以通过将每个字符串按“字符串中获取数字的第一个单词(或对应的 10 表示国王/王后等。)


 String cardName = "four of hearts" (or whatever the variable name is);

   String[] parts = string.split(" ");

   String number = parts[0];

因此数字将仅等于“四”,而不必比较“四颗心”以返回数字 4。


希望有帮助


查看完整回答
反对 回复 2021-10-13
  • 2 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信