我正在用C++创建一个游戏Big 2游戏,我已经创建了一副52张牌,四手牌对象,一个将洗牌并将这些牌发到手牌对象的发牌者对象。此部分已完成。现在,拥有钻石3的玩家将在开始时开始游戏。然后轮到玩家2、玩家3、玩家4。但如果玩家2拥有它,那么将由玩家2开始游戏,轮到玩家3,玩家4和玩家1。
有很多可能性,因为每轮比赛后都会有一名新选手获胜。我找不到一种方法来循环并再次使用代码,直到手中的牌数为0,这是玩家获胜的条件。对于四名玩家来说,很难控制这种流量,如果是两名玩家,那就很容易了,但四名玩家意味着这些玩家在很多情况下都是对象类型的。请给我一些实现Big 2游戏流程的想法,因为如果我们完成这一部分,我们就可以完成游戏!
注意:玩家当前的牌局与上一位玩家的牌局匹配!
如果我错了,请原谅我,但你问的是如何跟踪每轮玩家的顺序,对吗?
如果是这种情况,听起来应该将Player对象按逆时针顺序存储在数组中。现在你只需要跟踪最后一个玩家作为索引,下一个玩家应该是下一个索引。我假设你的卡片存储为整数,从低到高的顺序,但这是另一种猜测。根据规则,钻石、红心、球杆、黑桃,钻石最低。对于每一套衣服,3是最低的,2是最高的,中间的所有声音标准为"3,4,5,…J,Q,K,A,2"。
void startRound(void)
{
// six cards created during deal
if(kitty.hasThree())
{
int lowestCard = -1;
for(int i = 0; i < 4; i++)
{
int playerLowestCard = players[i].getLowestCard();
if(playerLowestCard < lowestCard)
{
startPlayer = i;
lowestCard = playerLowestCard;
}
}
}
else
{
for(int i = 0; i < 4; i++)
{
if(players[i].hasThree())
{
startPlayer = i;
break;
}
}
}
}
我想我很理解你的问题和大比分的比赛。
编辑:如果你想知道如何循环下一个玩家…
void goToNextPlayer(void) {
startPlayer++;
if(startPlayer >= 4) {
startPlayer = 0;
}
}
我不知道为什么要把索引称为startPlayer
——它应该是playerIndex
之类的。