C++ 使用矢量每个玩家发5张牌
我试图将向量牌组中的5个元素推回向量玩家1手牌,然后将这些元素推回以减少向量玩家2手牌组中的5个元素,以此类推。我可以使用玩家1手牌的当前代码推回向量牌组中的5个元素。Player2_手推相同的元素,因此我无法弹出输出中显示的元素: 混洗甲板 308 309 302 102 211 312 313 414 306 402 113 203 413 206 104 305 314 404 407 304 105 111 412 403 103 112 204 208 109 110 214 405 213 114 210 106 411 205 202 108 310 311 307 207 408 212 410 303 107 409 209 玩家1卡 308 309 302 102 211 312 玩家2张牌 308 309 302 102 211 312 这是我的密码:C++ 使用矢量每个玩家发5张牌,c++,push-back,C++,Push Back,我试图将向量牌组中的5个元素推回向量玩家1手牌,然后将这些元素推回以减少向量玩家2手牌组中的5个元素,以此类推。我可以使用玩家1手牌的当前代码推回向量牌组中的5个元素。Player2_手推相同的元素,因此我无法弹出输出中显示的元素: 混洗甲板 308 309 302 102 211 312 313 414 306 402 113 203 413 206 104 305 314 404 407 304 105 111 412 403 103 112 204 208 109 110 214 405
class deck
{
private:
int x;
vector <int> deck_of_cards
{
102,103,104,105,106,107,108,109,110,111,112,113,114,
202,203,204,205,206,207,208,209,210,211,212,213,214,
302,303,304,305,306,307,308,309,310,311,312,313,314,
402,403,404,405,406,407,408,409,410,411,412,413,414
};
public:
vector <int> player1_hand;
vector <int> player2_hand;
int shuffle_deck()
{
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
shuffle(deck_of_cards.begin(), deck_of_cards.end(), default_random_engine(seed));
cout << "shuffled deck\n";
for (int x = 0; x < deck_of_cards.size(); x++)
{
cout << deck_of_cards.at(x) << " ";
}
return 0;
};
int deal()
{
cout << "\nPlayer1 cards\n";
for (int d = 0; d < 6; d++)
{
int& element = deck_of_cards[d];
player1_hand.push_back(deck_of_cards[d]);
deck_of_cards.pop_back();
cout << player1_hand.at(d) << " ";
}
cout << "\nPlayer2 cards\n";
for (int e = 0; e < 6; e++)
{
int& element = deck_of_cards[e];
player2_hand.push_back(deck_of_cards[e]);
deck_of_cards.pop_back();
cout << player2_hand.at(e) << " ";
}
return 0;
}
};
int main()
{
deck d;
d.shuffle_deck();
d.deal();
return 0;
};
类甲板
{
私人:
int x;
向量卡片组
{
102,103,104,105,106,107,108,109,110,111,112,113,114,
202,203,204,205,206,207,208,209,210,211,212,213,214,
302,303,304,305,306,307,308,309,310,311,312,313,314,
402,403,404,405,406,407,408,409,410,411,412,413,414
};
公众:
矢量播放器1_手;
矢量播放器2_手;
int shuffle_deck()
{
unsigned seed=std::chrono::system_clock::now();
洗牌(牌组中的牌。开始(),牌组中的牌。结束(),默认的随机引擎(种子));
coutpop_back()删除向量的最后一个元素,而不是第一个元素。因此,每次你向玩家的手上抽牌时,你都会从牌组中移除最后一张牌,而不是你给他的那张
要删除第一个元素,可以使用“擦除”
deck_of_cards.erase(deck_of_cards.begin() )
您还需要将push_back()行更改为使用0作为索引,而不是d和e,因为每次删除第一个元素时,整个向量都会向后移动一个索引。pop_back()擦除向量的最后一个元素,而不是第一个。因此,每次你向玩家的手部抽牌时,你都会从牌组中移除最后一张牌,而不是你给他的那张
要删除第一个元素,可以使用“擦除”
deck_of_cards.erase(deck_of_cards.begin() )
您还需要将push_back()行更改为使用0作为索引,而不是d和e,因为每次删除第一个元素时,整个向量都会向后移动一个索引。请考虑这些行
for (int d = 0; d < 6; d++)
{
int& element = deck_of_cards[d]; // <- Unused variable
player1_hand.push_back(deck_of_cards[d]);
// ^ The FIRST 6 cards of the deck are added
// to the player hand
deck_of_cards.pop_back();
// ^^^^ The LAST cards of the deck are removed
cout << player1_hand.at(d) << " ";
}
for(int d=0;d<6;d++)
{
int&element=deck_of_cards[d];//考虑这些行
for (int d = 0; d < 6; d++)
{
int& element = deck_of_cards[d]; // <- Unused variable
player1_hand.push_back(deck_of_cards[d]);
// ^ The FIRST 6 cards of the deck are added
// to the player hand
deck_of_cards.pop_back();
// ^^^^ The LAST cards of the deck are removed
cout << player1_hand.at(d) << " ";
}
for(int d=0;d<6;d++)
{
int&element=deck_of_cards[d];/“考虑以下因素:”
enum Card_Suit{心形、梅花、钻石、黑桃};
结构卡
{
卡丁套装;
int值;
};
向量组;
标准::矢量播放器1_手;
在上面的代码中,一个struct
用于为一张卡建模。一张card
有一套套装和一个值。易于阅读
一副卡片由std::vector
表示
玩家的手用std::vector
表示
一个好主意是你可以将一张牌从牌组
移动到玩家的手上
您可以通过添加以下方法来扩充卡
结构:
构造、复制、销毁、输入(从用户)和输出(到用户),
以及比较(排序和相等)
其他涉及纸牌的功能取决于您正在玩的游戏。请考虑以下几点:
enum Card_Suit{心形、梅花、钻石、黑桃};
结构卡
{
卡丁套装;
int值;
};
向量组;
标准::矢量播放器1_手;
在上面的代码中,一个struct
用于为一张卡建模。一张card
有一套套装和一个值。易于阅读
一副卡片由std::vector
表示
玩家的手用std::vector
表示
一个好主意是你可以将一张牌从牌组
移动到玩家的手上
您可以通过添加以下方法来扩充卡
结构:
构造、复制、销毁、输入(从用户)和输出(到用户),
以及比较(排序和相等)
其他涉及纸牌的功能取决于你正在玩的游戏。OT:IMHO,你应该创建一个struct
来模拟一张纸牌
:套装和数字。这比你的方案可读性好得多。OT:IMHO,你应该创建一个struct
来模拟一张纸牌
:套装和数字。这是一个更具可读性的方法比你的计划更糟糕。