Подскажите условие
1.
mix (01.02.2012 / 05:19)
как в rand(1111,9999); сделать условие, чтобы 4 числа были уникальными(т.е. не повторялись)?
2.
Дмитрий (01.02.2012 / 06:44)
range мб?
3.
Дмитрий (01.02.2012 / 06:55)
вернее range + array_rand
4.
mix (01.02.2012 / 15:34)
не знаю, поподробней можно?
Добавлено через 03:17 сек.
я тоже щас попытаюсь точнее объяснить ситуацию:
вообщем 4 игрока и 32 карты, 4 масти и 8 карт в одной масти(7,8,9,10,J,Q,K,A).
нужно 32 карты разделить 4ем игрокам, чтобы все карты были уникальными
5.
Удаленный (01.02.2012 / 15:38)
mt_rand
6.
mix (01.02.2012 / 15:39)
MaZaHaKeR (1 Февраля 2012 / 15:38)
mt_rand
Покажи, пожалуйста, на моем примере
7.
Удаленный (01.02.2012 / 15:40)
Твои числа записываются куда нибудь?
8.
mix (01.02.2012 / 15:41)
я еще игру не написал, но планирую числа в бд хранить
9.
Удаленный (01.02.2012 / 15:43)
Тогда тебе функция нужна которая проверяет выпавшее число со всеми остальными и если есть совпадение то идет генерация другого числа. Написать код не могу
10.
Дмитрий (01.02.2012 / 15:45)
32 Карты занеси в массив,, выбираешь рандомно 1 ячейку в массиве сохраняешь ее в массив для 1 игрока и из массива с картами удаляешь эту ячейку так до 8, потом для игрока 2 тоже также, но массив у тебя все тот с 32 картами должен стать 32-8 после 2 игрока 32-8-8 и т.д У всех игроков карты будут уникальны
11.
Дмитрий (01.02.2012 / 20:25)
Когда то делал поднобное, использовал foreach и перемешивал shuffle
12.
KOZZ (01.02.2012 / 20:35)
в файл пиши числа выпадающие, потом проверяй на наличие в файле
13.
Дмитрий (01.02.2012 / 20:58)
Как то так
<?
function array_shuffle($array)
{
$i = count($array);
while(--$i) {
$j = mt_rand(0, $i);
if ($i != $j) {
$tmp = $array[$j];
$array[$j] = $array[$i];
$array[$i] = $tmp;
}
}
return $array;
}
$cards = range(1, 32);
$cards = array_shuffle($cards);
print_r($cards);
Функция перемешает 32 карты уникально, там уже раздавай их на четверых
14.
mix (01.02.2012 / 21:04)
MECHANIC (1 Февраля 2012 / 20:58)
Как то так
<?
function array_shuffle($array)
{
$i = count($array);
while(--$i) {
$j = mt_rand(0, $i);
if ($i != $j) {
$tmp = $array[$j];
$array[$j] = $array[$i];
$array[$i] = $tmp;
}
}
return $array;
}
$cards = range(1, 32);
$cards = array_shuffle($cards);
print_r($cards);
Функция перемешает 32 карты уникально, там уже раздавай их на четверых
Хорошо, спасибо, попробую, если что напишу
15.
Дмитрий (01.02.2012 / 21:11)
Я так понял ты "козёл" пишешь?
У меня были исходники когда то... забросил, вот нашел если понадобится сравнения
<?
$card_name = array(
'масть' => array( 'червы', 'пики', 'бубны', 'крести' ),
'достоинство' => array( 'двойка', 'тройка', 'четверка', 'пятерка', 'шестерка', 'семерка', 'восьмерка', 'девятка', 'десятка', 'валет', 'дама', 'король', 'туз'),
);
function card($num) { return array( (int)(($num - 1) % 13), (int)(($num - 1) / 13)); }
// проверка:
foreach( range(1,52) as $num ) {
list($dostoinstvo,$mast) = card($num);
echo $mast.": ".$card_name['масть'][$mast] ."; ";
echo $dostoinstvo.": ".$card_name['достоинство'][$dostoinstvo]."\n";
}
// проверка сравнения:
list($card1_dost, $card1_mast) = card( 5 ); // карта 1
list($card2_dost, $card2_mast) = card( 18 ); // карта 2
if ( $card2_dost == $card1_dost ) echo "карты одного достоинства\n";
16.
mix (01.02.2012 / 21:44)
не, эт армянская карточная игра, "блот" называется
17.
mix (01.02.2012 / 22:13)
MECHANIC (1 Февраля 2012 / 21:11)
Я так понял ты "козёл" пишешь?
У меня были исходники когда то... забросил, вот нашел если понадобится сравнения
<?
$card_name = array(
'масть' => array( 'червы', 'пики', 'бубны', 'крести' ),
'достоинство' => array( 'двойка', 'тройка', 'четверка', 'пятерка', 'шестерка', 'семерка', 'восьмерка', 'девятка', 'десятка', 'валет', 'дама', 'король', 'туз'),
);
function card($num) { return array( (int)(($num - 1) % 13), (int)(($num - 1) / 13)); }
// проверка:
foreach( range(1,52) as $num ) {
list($dostoinstvo,$mast) = card($num);
echo $mast.": ".$card_name['масть'][$mast] ."; ";
echo $dostoinstvo.": ".$card_name['достоинство'][$dostoinstvo]."\n";
}
// проверка сравнения:
list($card1_dost, $card1_mast) = card( 5 ); // карта 1
list($card2_dost, $card2_mast) = card( 18 ); // карта 2
if ( $card2_dost == $card1_dost ) echo "карты одного достоинства\n";
если есть свободное время, то зайди в асю поговорим немного
18.
mix (04.02.2012 / 16:56)
короче у меня выводятся ид иб карты в виде:
0: 25
2: 10
3: 9
... и т.д.
как щас мне добавить к каждой карте ид юзера и занести в БД?
19.
Дмитрий (04.02.2012 / 17:04)
implode() мб?
20.
mix (04.02.2012 / 17:05)
мб, щас почитаю об этой функции
21.
mix (04.02.2012 / 17:23)
не, implode() не помог
Добавлено через 08:48 сек.
а если создать 32 запроса таким способом:
mysql_query("INSERT INTO `cards` SET `usid` = '1' `card_id` = '".$cards[0]."'");
и так далее до $cards[31] это будет большая нагрузка на бд?
22.
Николай (04.02.2012 / 19:40)
21.
shavo, нее не стоит так точно)))
23.
mix (04.02.2012 / 20:37)
ritlen (4 Февраля 2012 / 19:40)
21. shavo, нее не стоит так точно)))
уже разобрался
URL:
https://visavi.net/topics/29031