纸牌游戏中的回合
Rounds in a card game
游戏有4位players.Each玩家在回合结束后轮流当卡沙皇。我已经将分配给每个玩家的卡片存储在向量中。我将如何在这个游戏中创建回合?我会在主函数中创建一个循环 运行 4 次并清除向量并在循环中调用我的函数吗?
这是我的主要功能:
int main()
{
vector<string> player;
vector<string> blackCards;
vector<string> whiteCards;
vector<string> CardCzar;
vector<string> player2;
vector<string> player3;
vector<string> player4;
int sz = 0;
int i = 0;
string n;
for(i=0;i<4;i++)
{ cout<<"Enter name for player"<<" "<< i+1 << " : "<<" ";
cin>> n;
player.push_back(n);
}
BlackCards(blackCards);
WhiteCards(whiteCards);
order(player);
sz = player.size();
cout<<" "<<endl;
cout<<"*"<<player[sz - 4]<<" , you are the card czar for this round *" <<endl;
assign_bcards(blackCards , CardCzar, player);
assign_wcards(whiteCards, player2, player3, player4, player);
return 0;
}
要进行回合,您可以使用一个循环指示器按顺序击中每个玩家。一个简单的数字方法是
int currentCzar = 0;
while(gameIsNotOver)
{
*Do game stuff*
currentCzar = (currentCzar+1) % numPlayers;
}
因为 currentCzar 总是小于 numPlayers
(currentCzar+1) % numPlayers;
将始终 return a 值 c 其中
0 <= c <= numPlayers-1
然后让其他标志告诉您何时停止游戏,就像获胜条件一样。 numPlayers 也是数组的大小。
编辑:
您可能还想更改构建数据的方式。也许通过让玩家成为 class 或结构,这样你就可以拥有类似
的东西
class Player{
vector<string> whiteCards;
vector<string> wonBlackCardsl
//Boilerplate class code
}
vector<Player> players;
*assign cards and create players*
int currentCzar = 0;
while(gameIsNotOver)
{
*Do game stuff*
//Have players[currentCzar] choose a black card
//Have every other player put down a white card
currentCzar = (currentCzar+1) % numPlayers;
}
然后你可以以更直接的方式将玩家与他们的手联系起来
游戏有4位players.Each玩家在回合结束后轮流当卡沙皇。我已经将分配给每个玩家的卡片存储在向量中。我将如何在这个游戏中创建回合?我会在主函数中创建一个循环 运行 4 次并清除向量并在循环中调用我的函数吗? 这是我的主要功能:
int main()
{
vector<string> player;
vector<string> blackCards;
vector<string> whiteCards;
vector<string> CardCzar;
vector<string> player2;
vector<string> player3;
vector<string> player4;
int sz = 0;
int i = 0;
string n;
for(i=0;i<4;i++)
{ cout<<"Enter name for player"<<" "<< i+1 << " : "<<" ";
cin>> n;
player.push_back(n);
}
BlackCards(blackCards);
WhiteCards(whiteCards);
order(player);
sz = player.size();
cout<<" "<<endl;
cout<<"*"<<player[sz - 4]<<" , you are the card czar for this round *" <<endl;
assign_bcards(blackCards , CardCzar, player);
assign_wcards(whiteCards, player2, player3, player4, player);
return 0;
}
要进行回合,您可以使用一个循环指示器按顺序击中每个玩家。一个简单的数字方法是
int currentCzar = 0;
while(gameIsNotOver)
{
*Do game stuff*
currentCzar = (currentCzar+1) % numPlayers;
}
因为 currentCzar 总是小于 numPlayers
(currentCzar+1) % numPlayers;
将始终 return a 值 c 其中
0 <= c <= numPlayers-1
然后让其他标志告诉您何时停止游戏,就像获胜条件一样。 numPlayers 也是数组的大小。
编辑: 您可能还想更改构建数据的方式。也许通过让玩家成为 class 或结构,这样你就可以拥有类似
的东西class Player{
vector<string> whiteCards;
vector<string> wonBlackCardsl
//Boilerplate class code
}
vector<Player> players;
*assign cards and create players*
int currentCzar = 0;
while(gameIsNotOver)
{
*Do game stuff*
//Have players[currentCzar] choose a black card
//Have every other player put down a white card
currentCzar = (currentCzar+1) % numPlayers;
}
然后你可以以更直接的方式将玩家与他们的手联系起来