Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Тестирование. Рандомный выбор вопросов
Flash Zone Forum > Macromedia Flash > ActionScript
Alinamalina
Здраствуйте. У меня есть небольшое тестирование(всего 50 вопросов): на каждом кадре размещен вопрос и три кнопки, после прохождения теста выводится количество правильных, ошибочных и оценку.
подсчет идет вот так:
Код
//as2
stop(); // останавливаем воспроизведение
prav = b1+b2+b3+b4+b5+b6+b7+b8+...+b50; // подсчитываем кол-во верных ответов
error = 50-prav;
// считаем неправильные ответы
// Подсчёт оценки
if (prav>=45){
// если правильных ответов 40 и более,
oc = "5";
// оценка 5
} else if (prav>=35){
oc = "4";
} else if (prav>=25){
oc = "3";
} else { // в остальных случаях
oc = "2"; // оценка 2!
}

хотелось бы чтобы можно было рандомизировать вопросы(выводить в случайном порядке), установить время прохождения теста и выводились не все 50 вопросов, т.к. прохождение теста занимает довольно много времени, а 20. Как мне можно это сделать? Буду рада всему чем вы мне сможете помочь...
KirillWd
 попробуй создать массив с 2-мя внутренними массивами. один отвечает за сам вопрос, другой - за правильный ответ.
выводи рандомно элемент первого внутренного массива и, в соответствии с этим, элемент второго. и проверяй как ты уже делала выше.
вообще я попробую тебе сделать, если это ещё нужно. просто самому интересно стало smile.gif
MustLive
Alinamalina

На тему создания тестирования мы уже многократно на форуме писали (и обсуждали различные аспекты данных систем). Можешь ознакомиться с моей системой тестирования.

Цитата
чтобы можно было рандомизировать вопросы

Рандомизирование нужно проводить на двух этапах: отсортировать случайным образом вопросы и потом отсортировать варианты ответов при их выводе.

Рандомизирование можно реализовать разным способом, или как предлагал KirillWd, или другими путями.

Если на первом этапе нужно лишь сделать рандомную сортировку массива, в каждом из элементов которого находится массив с вопросами и правильным ответом (как стоит сделать и как я реализовал в своей системе тестирования). То на втором этапе делается лишь рандомный вывод вариантов ответа текущего элемента массива вопросов.

Цитата
установить время прохождения теста и выводились не все 50 вопросов

Для ограничения по времени используй таймер (о таймерах мы не раз писали на форуме).

А для ограничение в 20 вопросов из всего списка, задай в коде ограничение. К примеру, если рандомно отсортированный массив вопросов у тебя называется rand_mass, то AS код будет следующим:
Код
for (i=0;i<20;i++) {
// rand_mass[i] - текущий элемент массива вопросов, с которым ты работаешь
}
DJKOT
Кстатие, если уж речь зашла о рандоме, то есть ли возможозность выбирать случайное число из некоторой группы чисел без повторения предыдущих? И насколько сложно это реализовать?
KirillWd
DJKOT, я думаю можно. Но с этим не сталкивался, поэтому не знаю как.
но есть мыслишка - создать массив, загнать туда все возможные числа, выводить, потом (то, что уже вывели) удалять из массива Array.splice(), и заново!
попробуй так сделать smile.gif
DJKOT
 а массив внутри мувика станет работать?
KirillWd
 почему нет? будет. только вот смысла не вижу его внутрь мувика засовывать smile.gif
DJKOT
 смысл таков, что есть мувик, имитирующий звуки шагов. от 0 до 6 аттачатся разные звуки через random. но когда два одинаковых звука звучат подряд, становится уже некрасиво, и поэтому возникла потребность уже бывшие в употреблении звуки оттасоввывать (6 - число сравнительно небольшое, попасть дважды в одну цифру проще простого, и поэтому звучит какое-то барахло из одинаковых звуков, в основном повторяет 2, 3, и 4)
MustLive
Цитата
есть ли возможозность выбирать случайное число из некоторой группы чисел без повторения предыдущих?

DJKOT

Реализовать можно. И это совсем не сложно. Об этом мы уже ранее на форуме писали.

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

KirillWd, ты вполне правильно подсказал DJKOT-у решение, только твой алгоритм излишен.

Не нужно удалять ничего из массива. Нужно лишь пройтись, как я сказал выше, по этому массиву (рандомному). После того, как достигнут последний элемент массива, то можно поступить нужным образом (в зависимости от задачи): остановить работу, или продолжить, в последнем случае можно или начать заново с этим же массивом (тогда повторная "случайная выборка" будет идентичная предыдущей), или же заново рандомно отсортировать массив и начать проход с первого его элемента (тогда "случайная выборка" будет другой).

Цитата
а массив внутри мувика станет работать?

Будет работать. Ты можешь располагать код там, где тебе удобно. Но оптимально располагать его на главном таймлайне - так тебе будет удобнее работать. Так что в большинстве случаев нет смысла его вглубь засовывать (как уже тебе заметил KirillWd). Тем не менее, существуют случаи, когда код нужно именно внутри мувика задавать - в частности, когда нужно stop-ы проставить.
DJKOT
Цитата
Так что в большинстве случаев нет смысла его вглубь засовывать (как уже тебе заметил KirillWd). Тем не менее, существуют случаи, когда код нужно именно внутри мувика задавать - в частности, когда нужно stop-ы проставить.

это именно один из тех случаев)) ситуация просто критически требует использование мувика. Хотя и не только ради stop-a.
Интересно, с чем (чисто с технической стороны) связана эта тенденция запихивать весь код на киноленту? Вроде бы в старых версиях флеша такого не наблюдалось.
MustLive
DJKOT

В старых версиях флеша вообще код размещали на объектах (с использованием оператора on) и иногда внутри объектов. Потом, начиная с Флеш 6, когда AS официально получил имя "AS1", началась мода размещать код только на таймлайне (главном или в объектах), причём с уклоном в сторону размещения на главном таймлайне.

Что усилилось в Флеш 7 / AS2, где появились внешние классы (as-файлы), которые также начали использоваться, но больше всё же главный таймлайн. А с выходом Флеш 9 / AS3 началось активное движение в сторону использования внешних классов. Что особенно проявилось в Флексе (где весь код только во внешних as-файлах).

Необходимость в старых версиях флеша (до 9й версии) размещать AS код на главном таймлайне в том, что так удобнее работать с кодом. Не нужно долго и нудно искать код, размещённый во многократно-вложенном мувике. И если автор флешки знает (должен знать) где он разместил тот или иной код, то другой человек, впервые взглянув на исходник, будет долго с ним разбираться. Почитай форум и ты найдёшь много примеров, когда ламера скачали здоровенный исходник флеш-сайта, где разработчик умышленно позапихивал код глубоко (чтобы усложнить жизнь тем, кто будет с ним разбираться), а потом просят помощи с этим исходником smile.gif.
Русская версия IP.Board © 2001-2013 IPS, Inc.