Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Про рандом (http://www.flasher.ru/forum/showthread.php?t=85965)

flastar 04.10.2006 18:53

Про рандом
 
водлопиаа... ой о чем это я?
Добрый день, господа flash'еры!!!;)
Просьба помочь в такой ситуации!!!!
У меня на сцене 12 ящиков. При нажатии на ящик(любой) появляется
число. И снова. И снова. Проблема в том, как при загрузке сцены эти числа
(в ящиках) менялись местами, т.е. я запустил мою флэшку 1-ый раз и в ящике 6 (например) число 10000, а при 2-ом запуске в ящике 3 (например)
число 10000.
Помогите плз!!!!!!!!!!!!!!!!!

Storm[pfp] 04.10.2006 19:38

в чем проблема !? рандоино при запуске выбирай ящик и помещай туда число

D12 05.10.2006 01:07

Задача не так проста , тебе нужно работать с масивом и проверять варианты совпадения ...

P.S. Попробую сделать что небудь ... завтра , а сейчас спать =)

iNils 05.10.2006 02:31

Код:

function getUnique (array:Array) {
        var len:Number = array.length;
        var arrayA:Array = array.concat ();
        var arrayB:Array = new Array ();
        for (var i:Number = 0; i < len; i++) {
                arrayB.push (arrayA.splice (Math.floor (Math.random () * arrayA.length), 1)[0]);
        }
        return arrayB;
}
////
var array:Array = new Array (0, 1, 2, 3, 4, 5, 6);
////
trace (getUnique (array));
trace (getUnique (array));
trace (getUnique (array));
trace (getUnique (array));
trace (getUnique (array));


ASp 05.10.2006 11:51

1) если нужно просто размещеть произвольные числа, то можно просто обойтись random(max_value+1);
2) iNils в принципе правильный код подсказал, но зачем так городить? Тем более он зафиксировать тип возвращаемого функцией значение, так что в трейсе вылетят ошибки.
3) вот код, получившийся у меня:

Код:

function getUnique (array:Array): Number {
        var arr_length:Number = array.length;
        var rand_index:Number = random(arr_length);
        var element:Number = array[rand_index];

        array.splice(rand_index, 1);
        return element;
}
var array:Array = [0, 1, 2, 3, 4, 5, 6];
trace(getUnique(array));

Данная функция работает без повторов значений из массива, т.е. число ящиков, по идее, должно не превышать кол-во эл-тов массива array, иначе будет одна пустота.
iNils - каким образом помещать текст кода в сообщениях, чтобы он был в отдельном окне?

etc 05.10.2006 13:10

ASp, тегами code.

D12 06.10.2006 00:13

Спасибо =)


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

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