Я не понимаю, что происходит. Предполагается обменять 3 карты на 4 человека. Если раунд равен 0, p [0] получает p [1] s карт, p [1] получает p [2] s карт, p [2] получает p [3] s карт, а p [3] получает p [0] ] карты. Если в качестве примера использовать раунд 0, то все отлично поменяется местами, за исключением того, что p [3] получает p [1] s 3 карты вместо p [0] s 3 карты. Я установил массив удержания для хранения p [0] 3-х номеров карт и 3-х типов карт, прежде чем они меняются местами, и когда я держу [0] [j] и удерживаю [1] [j], он отображает значения, которые они имеют. должен держать. Но когда я пытаюсь присвоить p [3] эти значения, он все равно присваивает им значения p [1] s. Есть идеи?
void send3(player p[], deck &deck, int& round){
srand(time(0));
int give[4][3];
cout << "Pick 3 cards to send.\n";
p[0].handdisp(deck);
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
if (i == 0) {
cin >> give[i][j];
while (give[i][j] > 13 || give[i][j] < 1) {
cout << "Number not in range. \n";
cin >> give[i][j];
}
give[i][j] -= 1;
}
else {
give[i][j] = rand() % 13;
for (int k = 0; k < 3; k++) {
if (k != j) {
while (give[i][j] == give[i][k]) {
give[i][j] = rand() % 13;
}
}
}
}
}
}
int hold[2][3];
for (int i = round; i < round+4; i++) {
for (int j = round; j < round+3; j++) {
if (i==round){
hold[0][j]=p[i % 4].hand[give[i % 4][j % 3]];
hold[1][j]=p[i % 4].type[give[i % 4][j % 3]];
p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[give[(i + 1) % 4][j % 3]];
p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[give[(i + 1) % 4][j % 3]];
}
else if (i==round+3){
cout << (i+1)%4 <<hold[0][j] <<" " << hold[1][j] << endl;
p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[hold[0][j]];
p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[hold[1][j]];
}
else {
p[i % 4].hand[give[i % 4][j % 3]] = p[(i + 1) % 4].hand[give[(i + 1) % 4][j % 3]];
p[i % 4].type[give[i % 4][j % 3]] = p[(i + 1) % 4].type[give[(i + 1) % 4][j % 3]];
}
}
}
}