我正在用C ++创建一个游戏Big 2游戏,我创建了一副52张牌,四手牌对象,一个经销商对象,它将洗牌并将这些牌交给手牌。这部分完成了。现在,拥有3颗钻石的玩家将在游戏开始时开始游戏。然后它将是玩家2,玩家3,玩家4的转弯。但是如果玩家2拥有它,则玩家2将开始游戏并且玩家3轮到玩家4和玩家1。
有很多可能性,因为每轮比赛后新玩家将成为赢家。我找不到一种方法来制作循环并再次重复使用代码,直到手中的牌数为0,这是玩家获胜的条件。对于四个玩家来说很难控制这个流程,如果是2个玩家则很容易,但是4个玩家意味着这些玩家属于对象类型的许多条件。 请告诉我实施Big 2游戏流程的一些想法,因为如果我们完成这部分,我们将能够完成游戏!
注意:玩家当前的游戏与之前玩家的游戏卡匹配!
答案 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
或其他内容。