Проблема с отбором.

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
wapifz
Сообщения: 19
Зарегистрирован: 10 окт 2011, 14:33

Проблема с отбором.

Сообщение wapifz »

Всем привет. Пишу небольшое приложение для детей (попросили по учебе). Столкнулся с проблемой. Попробую объяснить коротко.

Приложение - что-то вроде "Кто хочет стать миллионером". Дается 6 вариантов ответа. 1 из них правильный - остальные 5 выбираются рандомным образом. Все варианты ответа берутся из одного массива.

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

Как быть? Может быть кто подскажет? Буду ну очень признателен ;) Если нужен полный исходник - скину полный.

Код: Выделить всё

 //_trueButton - номер кнопки правильного ответа (все кнопки в массиве)//_btns - массив, в котором хранятся кнопки.//AnimalsList.ANIMALS_EASY - массив, в котором хранятся варианты ответа private function randomButtons(_trueButton: Number, _btns: Array): void {            _btns[_trueButton].label = AnimalsList.ANIMALS_EASY[currentAnimal - 1].animalName; // сразу пишу правильный ответ на правильной кнопке                for (var i:int = 0; i<_btns.length; i++){                if (i != _trueButton){                    var rand:Number = Math.floor(Math.random()*AnimalsList.ANIMALS_EASY.length);                    _btns[i].label = AnimalsList.ANIMALS_EASY[rand].animalName;                    trace ("rand"+rand);                }            }            trace("=====");        } 
Аватара пользователя
alexandr_ratush
Сообщения: 94
Зарегистрирован: 05 мар 2014, 21:47

Re: Проблема с отбором.

Сообщение alexandr_ratush »

Привет!
Я бы перемешал массив с ответами, и выбрал бы первые элементы сколько мне нужно.
Вот пример перемешивания:

Код: Выделить всё

var arr : Array = [0,1,2,3,4,5,6,7,8,9]; function randomize ( a : *, b : * ) : int {    return ( Math.random() > .5 ) ? 1 : -1;} trace( arr.sort( randomize ) );
Далее просто копируем часть массива, к примеру 4 ответа, и все:

Код: Выделить всё

mass[0] = arr.slice(0, 3);
wapifz
Сообщения: 19
Зарегистрирован: 10 окт 2011, 14:33

Re: Проблема с отбором.

Сообщение wapifz »

Массив с ответами - статический. Его вроде как перемешать не удастся.

Если честно - не очень понял ваш код. Можете немного подробнее?
Аватара пользователя
alexandr_ratush
Сообщения: 94
Зарегистрирован: 05 мар 2014, 21:47

Re: Проблема с отбором.

Сообщение alexandr_ratush »

Массив с ответами - статический. Его вроде как перемешать не удастся.
Тогда скопируйте его :) . Тут читать.

Вот набросал пример работы (писал в кадре). Киньте на сцену кнопку.

Код: Выделить всё

import flash.events.MouseEvent; // Предположим что это статический массивvar answerArrayStatic:Array = ["one", "three", "two", "four", "five", "six"]; // Копируем массивvar copyAnswer:Array = answerArrayStatic.slice(); // Вывод в трейс 4 случайных эллемента массиваfunction getRandomValue():void {    var randomValue:Array;        // Перемешиваем массив    copyAnswer.sort(randomize);        // Копируем первые 4 эллемента, и выводим    randomValue = copyAnswer.slice(0, 4);    trace(randomValue);} // Служебная ф-ция для сортировки массиваfunction randomize(a:*, b:*):int {    return (Math.random() > .5) ? 1 : -1;} // Кнопка на сцене btnResbtnRes.addEventListener(MouseEvent.CLICK, onClick);function onClick(e:MouseEvent):void {    getRandomValue();} 
wapifz
Сообщения: 19
Зарегистрирован: 10 окт 2011, 14:33

Re: Проблема с отбором.

Сообщение wapifz »

Спасибо большое :) помогли
Ответить