我正试图为我的二十一点游戏制作一个计数器。计数器应该计算ACE',以便它可以计算玩家的积分(Ace为1或11)。
如果玩家拥有ACE且超过21点,则应减去10点“setPointsPC(13)”。但它应该只减去它以前没有做过。如果玩家有2个Ace,它应该是这样的:
玩家命中 - >超过21 - >得分为10分 - >播放机 再次点击 - >再次超过21 - >再减去10分 (现在没有更多的Ace'es价值11) - >玩家再次点击 - > 超过21 - >玩家放松了比赛。
经过长时间的工作,它仍然无法正常工作。它不会减去任何积分。这是代码:
int acees1 = 0;
if (event.getSource() == bHit) {
random = getRandom();
CardsPL1.add(getCard(random));
setPointsPL(random);
int counter = 0;
for(int a = 0; a < CardsPL1.size(); a++){
if (CardsPL1.get(a).contains("A") && getPointsPL() > 21) {
counter++;
//ACE'es get count here
}
}
if (CardsPC.contains("A") && getPointsPC() > 21 && acees1 < counter){
setPointsPC(13);
acees1++;
//Points get subtracted here if points exceed 21 and acees1
//counts how many times it subtracted so it shouldn't do it
//again if there are more "acees1" than "counter" counted
}
}
答案 0 :(得分:0)
我认为你总是会重新计算这组卡的积分(在拿到新卡之后)。我的功能如下所示,其中CharSequence s
代表卡片顺序为&#39; 2-9&#39;编号,A = ace,其他=面或10。
static public int blackjackPoints(CharSequence s) {
int sum = 0;
int aces = 0;
for (int i=0; i < s.length(); ++i) {
char c=s.charAt(i);
if (c >= '2' && c <= '9') sum+=c-'0';
else if (c=='A') ++aces;
else sum+=10; //other fig
}
if (aces>0) {
if (sum==0 && aces==2) return 21; //not sure
sum+=aces;
while (aces>0 && sum+10<=21) {sum+=10; --aces;}
}
return sum;
}
你可以根据你的游戏进行调整。