Implemented Fisher–Yates shuffle. Assumes RNG function is in form getNumber(min,max), with min and max inclusive (Did not find documentation on function)
This commit is contained in:
parent
ed5f02bf7a
commit
2ad09399f4
1 changed files with 5 additions and 5 deletions
|
@ -43,14 +43,14 @@ Server_CardZone::~Server_CardZone()
|
||||||
|
|
||||||
void Server_CardZone::shuffle()
|
void Server_CardZone::shuffle()
|
||||||
{
|
{
|
||||||
QList<Server_Card *> temp;
|
for (int i = cards.size() - 1; i > 0; i--){
|
||||||
for (int i = cards.size(); i; i--)
|
int j = rng->getNumber(0, i);//Assuming i is inclusive, i + 1 if exclusive (end result should be a number between 0 and i [0 and i included])
|
||||||
temp.append(cards.takeAt(rng->getNumber(0, i - 1)));
|
cards.swap(j,i)
|
||||||
cards = temp;
|
}
|
||||||
|
|
||||||
playersWithWritePermission.clear();
|
playersWithWritePermission.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Server_CardZone::removeCardFromCoordMap(Server_Card *card, int oldX, int oldY)
|
void Server_CardZone::removeCardFromCoordMap(Server_Card *card, int oldX, int oldY)
|
||||||
{
|
{
|
||||||
if (oldX < 0)
|
if (oldX < 0)
|
||||||
|
|
Loading…
Reference in a new issue