嘿,有男人和女孩。 这是我在这里发表的第一篇文章,如果可以,请保持温和。
我必须创建一个名为Pickomino的Java版本的棋盘游戏。在这个游戏中,你是一只鸡,你正在掷骰子,你正在从桌子上收集蠕虫。桌子上有16张牌。如果一个玩家选择了一张牌,他就把它放在他的堆栈中#34;并将其从桌子上移除。
在我的主要方法"我有这个代码从表中获得积分但是你会看到100%是正确的,所以我希望听到你的意见,也许有更好的解决方案。
if (player1.canIPick(pickedDice)){
switch (sumOfDice) {
case 21:
case 22:
case 23:
case 24:
player1.setPoints(1);
break;
case 25:
case 26:
case 27:
case 28:
player1.setPoints(2);
break;
case 29:
case 30:
case 31:
case 32:
player1.setPoints(3);
break;
case 33:
case 34:
case 35:
case 36:
player1.setPoints(4);
break;
}
}
在这段代码中我不喜欢2件事情,首先,如果有人从牌桌上拿到一张牌并得到积分,那么这是错误的原因,另一位玩家可以选择同一张牌。 也像我说的那样,它是我主要方法的一部分,我不喜欢这样,所以我想在另一个类中创建一个数组并可以从那里进入卡,但我有点麻烦。 还有其他建议你可以帮我吗? Array会工作还是错误的方式?
感谢您的时间。
答案 0 :(得分:1)
我不确定这个游戏到底是怎么玩的。 但我会建议创建一系列摆放在桌面上的牌,(就像你说的那样)。 并在新游戏开始时重置值。
ArrayList<Integer> cardsOnTable = new ArrayList<Integer>();
for(int i = minPoint; i<=maxPoint;i++) {
cardsOnTable.add(i);
}
当您取出卡片时,您可以检查该卡片是否仍在桌面上(在列表中)。
if (player1.canIPick(pickedDice)){
if(cardsOnTable.contains(sumOfDice)) {
/* check for points here*/
cardsOnTable.remove(sumOfDice));
}
}
或者您可以尝试使用带有整数和布尔值的HashMap,并使用布尔表示是否采用了卡。