Форум 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=105492)

ambuddy 17.12.2007 12:04

проблемы с рандомом
 
Добрый день, флэшеры. Надеюсь, правильно раздел выбрал :)

Суть вот в чем. По ссылке http://dn1.ru/kiprino есть игрулька. Там надо выбрать рецепт и потом словить необходимые для него продукты. Сейчас продукты выпадают по рандому. Т.е. у каждого продукта есть номер, который и выбирается случайным образом. Кстати, попутно вопрос: как-нибудь улучшить рандомность Math.random() существует возможность? А то часто очень повторяются номера. Вернемся к продуктам. В некоторых рецептах бывает нужно большое количество определенных продуктов, например 4 яйца или 8 картошек. Очень вероятно, что за 2 минуты нужное их кол-во вообще не выпадет. Теперь вопрос. Как сделать так, чтобы необходимое кол-во нужных продуктов непременно выпало за 2 минуты, но все равно сохранить рандомность их выпадения? Т.е. помино нужных продуктов выпадали еще и ненужные. В принципе нужен наверное сам алгоритм выпадения, но если что можно и код необходимый привести - буду признателен. Мой код таков:
Код:

productInt = setInterval(makeProducts,ingFallFreq);
function makeProducts() {
        // Выбор номера продукта делается здесь от 0 до 14:
        prodNum = Math.floor(Math.random() * ingTotalNum);
        prod_X = Math.floor(Math.random() * (430 - 30)) + 30;
       
        var newIng:MovieClip = ingCont.attachMovie("ing_"+prodNum,"newIng_"+ingCont.getNextHighestDepth(),ingCont.getNextHighestDepth());
        newIng.id = prodNum;
        newIng._x = prod_X;
        newIng._y = -20;
        newIng.onEnterFrame = function() {               
                this._y = this._y + ingFallSpeed;
                if(this.hitTest(RAT.kastrulya)) {
                        catchSnd.start();                       
                        ingCatchArr[this.id]++;
                        catchProduct(this.id);
                        this.removeMovieClip();               
                }
                if(this._y > ingFallBorder) {
                        this.removeMovieClip();
                }
        }       
}


Chas 17.12.2007 12:47

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

ambuddy 18.12.2007 13:03

UP
А кто-нить еще способ знает. Мне кажется рандомность выпадения в таком случае будет еще меньше...


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

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