Раунды в карточной игре

В игре 4 игрока. Каждый игрок по очереди становится царем карты после окончания раунда. Я сохранил карты, назначенные каждому игроку в векторах. Как бы я создавал раунды в этой игре? Могу ли я создать цикл в главной функции для запуска 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;
}

0

Решение

Чтобы делать раунды, у вас может быть петля с круглым индикатором, который бьет каждого игрока по порядку. Простой численный способ сделать это

int currentCzar = 0;
while(gameIsNotOver)
{
*Do game stuff*
currentCzar = (currentCzar+1) % numPlayers;
}

Так как currentCzar всегда меньше, чем numPlayers

(currentCzar+1) % numPlayers;

всегда будет возвращать значения с где

0 <= c <= numPlayers-1

Тогда просто попросите какой-нибудь другой флаг сказать вам, когда прекратить игру, как при условии победы. Также numPlayers будет размером массива.

РЕДАКТИРОВАТЬ:
Вы также можете изменить способ структурирования своих данных. Может быть, сделав игрока классом или структурой, чтобы вы могли иметь что-то вроде

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;
}

Тогда вы могли бы соединить игроков в их руки гораздо более прямым способом

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]