Big 2游戏控制(控制游戏流程)

时间:2016-04-19 14:21:32

标签: c++

我正在用C ++创建一个游戏Big 2游戏,我创建了一副52张牌,四手牌对象,一个经销商对象,​​它将洗牌并将这些牌交给手牌。这部分完成了。现在,拥有3颗钻石的玩家将在游戏开始时开始游戏。然后它将是玩家2,玩家3,玩家4的转弯。但是如果玩家2拥有它,则玩家2将开始游戏并且玩家3轮到玩家4和玩家1。

有很多可能性,因为每轮比赛后新玩家将成为赢家。我找不到一种方法来制作循环并再次重复使用代码,直到手中的牌数为0,这是玩家获胜的条件。对于四个玩家来说很难控制这个流程,如果是2个玩家则很容易,但是4个玩家意味着这些玩家属于对象类型的许多条件。 请告诉我实施Big 2游戏流程的一些想法,因为如果我们完成这部分,我们将能够完成游戏!

注意:玩家当前的游戏与之前玩家的游戏卡匹配!

1 个答案:

答案 0 :(得分: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;
            }
        }
    }
}

我想我很了解你的问题和Big Deuce的游戏。

编辑:如果您想知道如何循环播放下一个播放器......

void goToNextPlayer(void) {
    startPlayer++;
    if(startPlayer >= 4) {
        startPlayer = 0;
    }
}

我不知道为什么我要将该索引startPlayer称为playerIndex或其他内容。