由于This Post没有完全回答我的问题,我将开始一个新问题。
将元素从一个向量移动到另一个向量时,我遇到了一个问题。
原始矢量是一个简单的牌组,结束矢量应该代表玩家手中的牌。
我正在使用Hand.push_back(Deck.back())
复制“顶部”卡片,然后使用Deck.pop_back()
将其从卡片矢量中移除。
奇怪的是,虽然下次我打电话给抽奖卡功能时,它“画出”应该在上一轮被移除的同一张卡。
我猜这是调整矢量大小的问题?我应该在每个Deck.resize(Deck.size() - 1)
之后尝试pop_back()
吗?
void Player::DrawStartingHand(int num)
{
for(int i = 0; i < num; i++)
{
Hand.push_back(Deck.back());
Deck.pop_back();
}
}
void Player::DrawCard()
{
std::cout<< "Drawing next card..." << std::endl;
if(Deck.size() >= 1)
{
//copy card from top of deck
//place at front of hand
Hand.push_back(Deck.back());
//remove care from top of deck
Deck.pop_back();
}
else
{
std::cout<< "No cards left to draw\n";
}
}
编辑::上述每个功能目前只在一个地方被调用,而不是在任何极端情况下或任何奇怪的情况下。只是非常基本,简单的电话。