我不明白最新情况。这应该与4人交换3张卡。如果round是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个卡类型,然后交换它们,当我cout按住[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]];
}
}
}
}