ОБСУЖДЕНИЕ

Карты не повторялись

19 сообщений0 просмотровОткрыта
#1
Здарова парни.
Пишу свой очередной говно-скрипт и не догоняю одну вещь.
У меня есть 3 карты которые мне дают рандомно из таблицы через функцию order by rand () и на каждой карте своя переменная сделана через mysql_query, мне нужно сделать так, чтобы карты не повторялись, т.е не было такого: Дама Черви | Туз Пики | Дама Черви.
Посоветуйте как это реализовать.
#2
У меня вопрос.
1.Почему это всё делается через бд?
2.Не хотел ли ты просто написать рандом целочисленный ?
#3
если уж такое замутил, тогда проверяй предыдущие значения и исключай с выдачи

т.е к order by rand () добавляй еще WHERE `id`!='".(int)$id_предыдущей выдачи."'

AND `id`!='".(int)$id_предыдущей выдачи."' разумеется передвдущей, и предпредвдущей)) Че имел виду думаю поймеш
#4
Мне показалось что так будет очень удобно.
А через переменные мазгов не хватило бы это все реализовать.
#5
Valen, Я так думаю что там целая головоломка, не стоило мне писать карты и выносить их через таблицу?
#6
та никакой там в принципе нет особой головоломки вот смотри
PHP

$karta1 = mysql_result(mysql_query("SELECT `id` FROM `koloda` ORDER BY RAND()"),0);
$karta2 = mysql_result(mysql_query("SELECT `id` FROM `koloda`   WHERE `id`!='".$karta1."' ORDER BY RAND()"),0);
$karta3 = mysql_result(mysql_query("SELECT `id` FROM `koloda`   WHERE `id`!='".$karta1."' AND `id`!='".$karta2."' ORDER BY RAND()"),0);



Как то так, если больше карт, тогда там можно что то по иному придумать, пока не стал этим замарачиваться
#7
Valen, Я не много одного не понял, если я после SELECT напишу id, я ведь не смогу вывести с таблицы karts саму карту и ее значения например
#8
это для примера показал, не знаю же какая там структура у тебя

используй тогда массив
PHP
$karta=mysql_fetch_array(mysql_query("Select * from `koloda` ORDER BY RAND()"));
$karta2=mysql_fetch_array(mysql_query("Select * from `koloda` WHERE  `id`!='".$karta['id']." ORDER BY RAND()"));
$karta3=mysql_fetch_array(mysql_query("Select * from `koloda` WHERE  `id`!='".$karta['id']." AND `id`!='".$karta2['id']." ORDER BY RAND()"));
#9
Valen, Помогло, спасибо за помощь большое
#10
$kards[] = 'Туз';
if(!in_array($new_karta, $kards)) $kards[] = 'Валет';

Логика ясна думаю..
#11
Тему покв не буду крыть, будут вопросы, суда обращусь :)
#12
PHP

//рандом
function randomize() {
$int=abs(int(time)/rand(5,1000));
for ($i = 1; $i <= 3; $i++) {
while ($int>кол.карт && $int>1 || $card[$i]==$card[abs($i-1)] || $card[$i]==$card[abs($i-2)])
{
$int=abs($int/abs(sqrt(int(time())/$i)));
}
$card[$i]=$int;
}
}


что то типо того...но нужно думать)
#13
У меня практически все на if { } , если масти одинаковые, то складываем и т.п.
#14
nx_prO, Общее в колоде 28 карт-от 8-ки до туза, от вальта до короля карты имеют значения 10-ть туз 11, остальные понятны значения.
Рандомно выпадают 3 карты и если масти савпали, то складываем карты те, которые савпали, если же нет, то считаем карту которая самая большая из 3-х карт и выдаем число
#15
используя мой random это элементарно :D
только тогда в двумерный массив и вначале определяем масть тем же рандомом :)
и уже в конце легко будет сосчитать :)
#16
nx_prO, Я нихрена не учил функции, думал не поналабятся, видно ошибался.
#17
я имею ввиду массивы и циклы,больше ничё не надо :)
дальше методом пузырька ищем совпадения ставим флаг совпадения цикл на складывание и готово :)
#18
Актуально.
Теперь мне нужно тоже самое только с масивами и rand().
P.s не стал нажимать кнопку апа т.к вопрос не много поменял
#19
Масив не использовал, как сделать чтоб карты не повторялись если я писал все почти через rand(), общее в колоде 28 карт из них раздается по 3 карты на партию