2014-11-04 38 views
-1

我正在尝试设置一张卡匹配游戏。我有一个载有16张独特牌的矢量。我试图让它随机化卡片矢量,但只选择前12张卡片,并为棋盘上的24个匹配对创建4x6网格。我有卡片矢量填充,但我不知道如何创建网格,以便卡片在网格内间隔开。我不知道如何洗牌矢量,所以每次都是不同的。另外,我正在使用Cocos2d-x 3.2。感谢您的任何建议。显示和随机化4x6网格中的精灵 - Cocos2d-x

std::vector<Sprite*> cards; 
std::vector<std::string> cardNames = { "0.png", "1.png", "2.png", "3.png", "4.png", "5.png", "6.png", "7.png", "8.png", "9.png", "10.png", "11.png", "12.png", "13.png", "14.png", "15.png" }; 

for (int n = 0; n < cardNames.size(); n++) 
{ 
    auto sprite = Sprite::create(cardNames.at(n)); 

    sprite->setPosition(cocos2d::Point((50 * (n + 1)), 20)); 
    sprite->setTag(n); 

    cards.push_back(sprite); 

    addChild(sprite); 
} 

回答

0
for (int n = 0; n <= 15; n++) 
      // ^^^^^^^ 

看起来非常错误的我来说,对传统的公约。

为什么不干脆

for (int n = 0; n < cardNames.size(); n++) 

呢?


关于如何洗牌,见std::shuffle et al请。

+0

酷,我的坏,我纠正了。 – khmer2040 2014-11-04 02:41:49

+0

我试过使用std :: shuffle,但无法让它为矢量工作。该洗牌适用于像原始图片,但我不知道如何将其用于精灵的cocos2dx矢量。 – khmer2040 2014-11-04 02:51:27