Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Random LoadMovie (1,2,3.....10) без повторов? (http://www.flasher.ru/forum/showthread.php?t=34800)

Massimo 22.07.2002 13:33

Random LoadMovie (1,2,3.....10) без повторов?
 
random такой:
loadMovieNum ("../../directory/"+Math.ceil(Math.random()*30)+".swf", 1000);
как сделать чтобы он не повторял предыдущий, или лучше даже чтобы ещё следующи после него тоже не поторял....?
Вроде понятно изложил суть вопроса... :D :) :p

DeliMIter 22.07.2002 13:38

Делаешь массив имен, использованное имя метишь как пройденное в таком-то проходе. Если на него выпадает рандом, то рероллишь этот рандом. Счетчик проходов инкрементируешь, естесстна.

Egoritch 22.07.2002 13:53

Код:

masCount = 10; //cколько элементов надо расставить
a = new Array(masCount);
        for (i=0;i<masCount;i++){
        oo1=0;
        while (oo1==0){
                oo1=2;ooo=random(masCount);
                for (i1=0;i1<i;i1++)        if (a[i1]==ooo)oo1=0;
                }
        a[i]=ooo;
        }


заполняет массив a размерности masCount числами от 0 до masCount без повторов.

lexass 22.07.2002 13:54

DeliMIter, лично Я тЯ понял =)))

ИМХО
мо быть массив заполнили,
то что отЮзали выкинули ?

Massimo 22.07.2002 14:00

Ухх.. я не думал, что всё так трудно.... :cool:
Т.е. мне тот код нужно вставить после лоад муви, и всё заработает? :)

Egoritch 22.07.2002 14:14

послен выполнения того кода у тебя в массиве a будут лежать случайные числа от 0 до 9 неповторяющиеся

то есть что то типа

a[0]=4;
a[1]=2;
a[2]=9;
a[3]=0;

и т.п. как их заюзать - разбирайся ;-)) что-то типа в первом кадре, там пишешь этот код и i=0;

потом

loadMovieNum ("../../directory/"+a[i]+".swf", 1000);
i++;

;)

Nox Noctis 22.07.2002 14:47

по-моему надо быть проще ;)
самый рациональный вариант тебе сказал делимитер в самом начале... только я не понял причем тут счетчик рандомов :)

// предел рандома + массив уже использованных
limit=30, hits=[];
//
// там, где нужно запускать лоад пишешь три строчки:
while (hits[tmp=Math.ceil(Math.random()*limit)]) {}
hits[tmp] = true;
loadMovieNum("../../directory/"+tmp+".swf", 1000);


...и все собственно :)

только учти, что чем больше будет загружаться, тем дольше рандом будет искать неиспользованные ячейки - значит надо сразу задать предел в несколько раз больший чем количество твоих мультиков - просто чтоб не притормаживало...

DeliMIter 22.07.2002 14:49

2lexass

Эт здорово, что хоть ТЫ меня понял ;)))
В условии требовалось не повторять как минимум два предыдущих, но ничего не было про НЕ ПОВТОРЯТЬ ВООБЩЕ. Так что у меня все правильно :))
Код:

Track = new Array();

function Turn() {
 while (Track[_i = random(30)] + 2 > _turn);
 loadMovieNum(...);
 Track[_i] = ++_turn;
}

Так что Egoritch идет в угол за много лишнего кода.

Nox Noctis 22.07.2002 14:51

хе-хе-хе.... а я на две минуты раньше :p :p :p

DeliMIter 22.07.2002 14:53

Я заметил (мрачно)...


Часовой пояс GMT +4, время: 11:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.