Посоветуйте, как хранить данные

Посоветуйте, как хранить данные

Здравствуйте!
Попросили написать онлайн покер. Интересует, в каком виде держать "колоду карт" в самом скрипте (52 шт. 4 масти) чтобы можно было отсортировать или перемешать.
Помоему найлучший вариант в массиве вида $koloda[$mast][$karta], но вот перемешкой проблемка.
Подскажите варианты.
Заранее спасибо.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Cделать 2й массив, ссылающийся на 1й.
PHP:
$cards_heap=array();
foreach ($koloda as &$suit) foreach ($suit as &$card) $cards_heap[]=&$card;
Юзать 1й или 2й - где как удобней :)
Перемешать: shuffle($cards_heap);

P.S. Я специально не задавался причиной данного вопроса и корректностью подхода задачи. Просто почему бы не ответить ...
 

Solid

Drosera anglica
Curly-fingers
Я бы лучше посоветовал хранить данные в таком формате:
PHP:
$cards[] = array('suit'=>CARD_SUIT_DIAMONDS, 'type'=>CARD_TYPE_QUEEN);
 
А потом кого-нибудь другого попросят проспамить про этот покер... знаем мы вас
Не попросят. Я сам проспамлю...

Solid
Я пробовал способ хранения который предложил grigori, но это слишком сложно со ссылками, а вот способ что Вы предложили очень хорош и примерно также я думал хранить. Осталось перемешать shuffle()`ом массив. Спасибо огромное.
 

dacuan

Новичок
Curly-fingers
Бери массив натуральных чисел от 0 до 51. Каждое число кодирует отдельную карту:

Код:
// Пусть $code - код карты [0..51]

// Масть
// 0 - чирвы
// 1 - бубны
// 2 - пики
// 3 - трефы
$suit = $code % 4;

// Карта
// 0 - 2
// 1 - 3
// ...
// 12 - Туз
$card = floor($code / 4);
При этом перемешивать можно как угодно не заморачиваясь с отдельными массивами ключей и карт.
 

DvR

Новичок
Гениально! :) 2 бита для мастей и 6 битов для номинала.
 
dacuan
Спасибо, конечно, за ответ, но я уже определился с хранением. Самый идеальный вариант это что писал Solid.
 
Сверху