Просмотр полной версии : выборка с рэндома и ограничения на рэндом
DJ_Baton
02.08.2005, 22:59
И так, делаю сейчас блэк джек, нужна ваша помощь :)
Что б сильно не нагружать вас подробностями спрашу только детали. В общем есть у меня мувик, в нём 52 карты (без джокеров), я на первом кадре установил gotoAndPlay(random(52)); но допустим у меня там сто кадров, как делать выборку из рендома, то есть задавать кадры или первый и последний кадр рендома из которых он будет выбирать ?
Вопрос второй, у меня появляется мувик с именем Z1, потом такой же с именем Z2, Z3, Z4, Z5. а теперь главная проблема, раз это колода карт, и используется для неё 1 мувик, как задать, что бы в каждом новом мувике была проверка что-то по типу _currentframe нового мувика не должен быть таким же как у предыдущих при выборке рендомом из 52 карт...? А то запарился уже, буду знать это сделаю блэк джек :(
Сделай по аналогии:
arrayA = new Array ("A", "B", "C", "D", "E", "F", "G");
arrayB = new Array (0, 1, 2, 3, 4, 5, 6);
for (i = 0; i < arrayA.length; i++) {
rnd = Math.floor (Math.random () * arrayB.length);
del = arrayB.splice (rnd, 1);
value = arrayA[del];
trace (value);
}
В общем есть у меня мувик, в нём 52 карты (без джокеров), я на первом кадре установил gotoAndPlay(random(52)); но допустим у меня там сто кадров, как делать выборку из рендома, то есть задавать кадры или первый и последний кадр рендома из которых он будет выбирать ?
gotoAndPlay(random(52)) + номер "первого" кадра (из выборки).
Вопрос второй, у меня появляется мувик с именем Z1, потом такой же с именем Z2, Z3, Z4, Z5. а теперь главная проблема, раз это колода карт, и используется для неё 1 мувик, как задать, что бы в каждом новом мувике была проверка что-то по типу _currentframe нового мувика не должен быть таким же как у предыдущих при выборке рендомом из 52 карт...?
Ну сделай например массив, из которого будут удалятся выбрнные ранее карты
DJ_Baton
02.08.2005, 23:29
Да, совсем забыл, вот ещё третий вопрос, я создал мувик, типа выскакивание карты из колоды, но так как последующие карты появляются со сдвигом вправо, то и анимация сдвигается, делать кучу мувиков не хочется разных, вот и хочу узнать, можно ли первую точку моушн твина сделать фиксированной относительно позиции _x и _y по руту, то есть координатам главного мувика, тогда где бы мувик не находился карта всегда вылетала бы из колоды.
Заранее благодарен !
DJ_Baton
02.08.2005, 23:37
iNils, расскажи подробнее про это, распиши пожалуйста, а то я не силён в этих вещах, по ходу это массив ? как он работает, принцип, как его привязать к моему мувику ?
>>Ну сделай например массив, из которого будут удалятся выбрнные ранее карты
расскажи подробно как это делать и как массив обнулять для каждой новой сдачи, распиши подробнее, а то я не очень силён в скрипте... у меня большая часть игры построена на логике...
расскажи подробно как это делать и как массив обнулять для каждой новой сдачи, распиши подробнее, а то я не очень силён в скрипте... у меня большая часть игры построена на логике...
Хм... Открой в помощи словарь и посмотри "Array" (массив) - там куча про него написано. Сюда это будет слишком долго всё расписывать
В твоем случаи:
arrayB = new Array ();
num = 52;
for (i = 0; i < num; i++) {
arrayB[i] = i + 1;
}
for (i = 0; i < num; i++) {
rnd = Math.floor (Math.random () * arrayB.length);
// данное значение это номер кадра с картой
value = arrayB[rnd];
del = arrayB.splice (rnd, 1);
trace (value);
}
DJ_Baton
03.08.2005, 01:05
В твоем случаи:
arrayB = new Array ();
num = 52;
for (i = 0; i < num; i++) {
arrayB[i] = i + 1;
}
for (i = 0; i < num; i++) {
rnd = Math.floor (Math.random () * arrayB.length);
// данное значение это номер кадра с картой
value = arrayB[rnd];
del = arrayB.splice (rnd, 1);
trace (value);
}
Огромное спасибо за готовый скрипт, если можешь напиши как его использовать в случае который опишу ниже.
в руте находится мувик CARDS1, содержащий раздачу в 5 карт для меня и второй мувик CARDS2 содержащий раздачу в 5 карт для крупье, структура у них одинаковая.
Структура мувиков CARDS:
в начале 1 пустой кадр со стопом, потом твин вылета первой карты из колоды, stop();, второй и стоп, третьей и так далее на стопе стоит наш мувик с рендомным выбором одной из 52 карт, который я буду копи пастить в CARDS1 и CARDS2 меняя Instance name, Z1, Z2 и т.д. то есть я их даже генерить не буду, просто вставлю пять таких мувиков в CARDS1 и 5 в CARDS2, может просто можно прописать для постоянной обработки, с обнулением в конце каждой партии -
onClipEvent(enterFrame){
//тут както перечислить все мои инстансы
_root.CARDS1.Z1
_root.CARDS1.Z2
_root.CARDS1.Z3
_root.CARDS1.Z4
_root.CARDS1.Z5
_root.CARDS2.Z6
_root.CARDS2.Z7
_root.CARDS2.Z8
_root.CARDS2.Z9
_root.CARDS2.Z10
}
и как-то привязать к ним функцию, чтоб у этих Z-ов не было одинаковых _currentframe при рендомном выборе ?
DJ_Baton
03.08.2005, 03:10
Исходник дать не могу, извени, просто примета плохая показывать незаконченную работу, да и вообще... столько работы проделано уже...
В общем вот скрипт мне предложили для моей ситуации, оцени плиз:
var RandNums;
var i;
var goodrand;
var num;
var nameCard;
RandNums = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
for (i=1; i<11; i++) {
goodrand = 0;
while (goodrand == 0) {
num = (random(52))+1;
if ((num != RandNums[0]) && (num != RandNums[1]) && (num != RandNums[2]) && (num != RandNums[3]) && (num != RandNums[4]) && (num != RandNums[5]) && (num != RandNums[6]) && (num != RandNums[7]) && (num != RandNums[8]) && (num != RandNums[9])) {
if (i<6) {
nameCard = eval("_root.CARDS1.Z"+i);
} else {
nameCard = eval("_root.CARDS2.Z"+i);
}
nameCard.gotoAndStop(num);
goodrand = 1;
} else {
goodrand = 0;
}
}
}
DJ_Baton
03.08.2005, 03:40
закинул этот скрипт в первый фрэйм, в рут, потом по идее всё работает так, нажимаю кнопку и она играет мувик CARDS1, снимая его с паузы и запуская появление первой карты, после проигрывания анимации появляется мувик Z1 на тайм лайне, нажимаю опять кнопку "Ещё", идёт анимация появления карты и на тайм лайне в CARDS1 появляется карта с инстансом Z2, и так нажимая кнопку "Ещё" мы доходим до карты Z5, в общем как на зло выпадало то 2 десятки червовые, то ещё что :(
з.ы. напомню, что каждый из этих Z - это мувик в 52 карты, в начале которого скрипт gotoAndPlay (random(52)); и в каждом кадре стоит пауза :(
DJ_Baton
03.08.2005, 06:18
ВОТ ИСХОДНИК СТРУКТУРЫ =)
нужно чтоб массив отслеживал все значения Z в обоих мувиках и записывал их _currentframe в массив
DJ_Baton
03.08.2005, 17:00
вот...
ОГРОМНОЕ СПАСИБО!!!! ВСЁ РАБОТАЕТ !!! :D , а нельзя ли как-то обойтись без функции _global ? а то у меня такая история... в общем дома виндовс МЕ, а флэш седьмой работает только под ХР, шестой ставил, но по истечению триала он само блокировался, да так что уже и креками никакими не поможешь, работаю дома в пятом флэше, а пятый функцию _global не понимает... если никак, буду мучать шестой, может удасться установить :(
DJ_Baton
03.08.2005, 17:03
во тебе ещё....
спасибо, но я не просил давать мне чужие исходники Блэк Джека, это не рулезно перекрасить чужой и менять карты, у меня полностью свой, сделаный с нуля, при этом он ещё будет с горкой, то есть выиграл и пирамиду пробиваешь =)
DJ_Baton
03.08.2005, 17:19
поменяй _global на _root
Поменял на _root все глобалы в скрипте, вообще перестало работать :(
DJ_Baton
03.08.2005, 17:23
Совсем забыл спросить, всё-таки скрипт есть, но хотелось бы разобраться как работает это чудо, ведь он ссылается на _root.razdacha но мувика и instance такого нет, как я понял это переменная, и при этом в самом скрипте не указаны ни мувики _root.CARDZ1 _root.CARDZ2 и так же нигде нет ссылок на Z+i, не понимаю как ты добился того чтоб скрипт обрабатывал именно данные Z-ов в мувиках _root.CARDZ1 и _root.CARDZ2
KidsKilla
03.08.2005, 17:57
_global = Object.prototype
глобал оставь, допиши вначале
DJ_Baton
03.08.2005, 18:01
_global = Object.prototype
глобал оставь, допиши вначале
ничё не понял, пятый флэш не понимает функции _global, то есть ты предлагаешь ввести тот же _global как переменную, и приравнять её к - Object.prototype ?
KidsKilla
03.08.2005, 18:16
угу..
ток я те соврал
Object.prototype._global = Object.prototype
http://proto.layer51.com/d.aspx?f=512
DJ_Baton
03.08.2005, 18:24
угу..
ток я те соврал
Object.prototype._global = Object.prototype
http://proto.layer51.com/d.aspx?f=512
ага, то есть прописать эту строчку перед скриптом и всё, он будет обрабатывать всё нормально в пятом флэше =) класс ;)
слушай, а можешь скачать poker.zip с предыдущей страницы и сказать как iNils написал скрипт который отлично работает и при этом не ссылается на мои мувики, я лазил по исходнику, вроде кроме самого добавления скрипта он ничего не менял, не понимаю в упор =) Да и ещё какую функцию нужно задать кнопке чтоб обнулять этот массив для последующей раздачи карт ?
Я внутри мувика с картами в первый кадр поставил код:
this.gotoAndStop (_global.razdacha ());
Для обнуления массива надо вызвать _global.init();
DJ_Baton
03.08.2005, 18:56
Я внутри мувика с картами в первый кадр поставил код:
this.gotoAndStop (_global.razdacha ());
Для обнуления массива надо вызвать _global.init();
всё, теперь окончательно всё понял, то есть если я захочу использовать в игре (когда человек горку пробивать будет) тот же скрипт, только перебить значение с раздачи например на RAZDACHA2 и вставить эту строчку в начало новой коллоды карт. Огромное тебе спасибо за помощь, как закончу игру скину ссылочку ;)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.