![]() |
Возможно ли организовать рациональную проверку?
Вложений: 1
Делаю экзаминационный тест.
Есть клип в который подгружаются картинки. Картинки грузятся в сгенерированные мувики перемешиваются в случайном порядке и выстраиваются на сцене, с левой стороны друг под другом по оси Y. Юзер должен перетащить каринки в область сцены справа и расположить их в определённом порядке. Пока ничего сложного для меня не было, прогонял через цикл и проверял расположение по оси Y относительно друг друга. Но вот заказчик изменил задание и теперь в папке с картинками лежит две пары картинок с разными именами, но абсолютно идентичных. Он просит не изменять их внешне, а при проверке сделать так, чтобы перемена их местоположения не учитывалась. Дело осложняется ещё и тем, что количество картинок мне заранее не известно. Оно прописывается заказчиком в конфигурационном файле ( текстовой файл). Вопрос - можно ли осуществить такую проверку используя цикл? Если да, то подскажите как. Чтобы было понятнее прикладываю изображение. http://picasaweb.google.com/tierex33...03893567905426 Заранее благодарю. |
Прочитать конфигурационный файл - LoadVars, onData
Картинкам присвойте имена, ну или хотя бы индексы - _root["mcPic"+i].idx = i; Тем картинкам, которые одинаковые присвойте одинаковые индексы. Если я правильно понял - пользователь должен единственно верно расставить картинки - значит задайте массив правильного расположеня, в который поместите присвоенные индексы - например [1, 2, 2, 2, 3, 4, 4, 4, 4, 5]. Проверяйте местоположения размещенных картинок на соответствие их индекса массиву. Сорри если непонятно. |
Спасибо за ответ.
Такое решение я уже обдумывал. Оно конечно же сокращает код. Но в этом случае мне придётся вручную создавать массив, тем более он будет заранее определён и заказчик не сможет его изменить. До этого, когда картинки были разные, массив создавался автоматически. Заказчик указывал в конфигурационном файле только их количество. Ну и "Проверяйте местоположения размещенных картинок на соответствие их индекса массиву." непонятно как? Извините может я туплю, но не могу пока въехать, как местоположения размещенных картинок сравнить с таким массивом. |
Пусть заказчик в конфигурационном файле задает адреса картинок, их индексы (одинаковые для условно одинаковых картинок), а так же "правильный" ответ в виде последовательности индексов. Читая "задачу" вы задаете всем мувикам _root["mc"+i"].idx = readidx; прочитанный индекс, читаете в массив правильный ответ, ну а далее я не знаю как у вас происходит процесс "решения" задачи, примерно так же как вы раньше проверяли верно ли расставлены мувики вы будете проверять их, только не их порядковые номера, а их .idx свойства на соответствие "правильному" массиву.
|
Да это всё понятно, но в таком случае невозможно организовать нормалную проверку. Т.к. индексы меняются местами т.е. при проверке Y idx_3 > Y idx_4 а в конце наоборот Y idx_4 > Y idx_3.
Проверяю так Код AS1/AS2:
Добавлено через 4 минуты P.S. Посмотрите внимательно на картинку. Это правильный ответ. |
Сложно что-то советовать не видя кода. Приведите хотя бы полную процедуру проверки правильности ответа в том виде как она сейчас у вас работает (для условия когда все картинки разные).
|
Пожалуйста, вот:
Код AS1/AS2:
Добавлено через 17 минут P.S. Вот трейс проверки с индексом : idx_0._y=124 platz_0._y=124 idx_1._y=148 platz_1._y=148 idx_2._y=161 platz_2._y=161 idx_3._y=172 platz_3._y=172 idx_4._y=184 platz_4._y=184 idx_5._y=189 platz_5._y=189 idx_3._y=172 platz_6._y=267 idx_2._y=161 platz_7._y=280 количество правильных решений=6 |
На счет idx_0._y я не понял, вероятно вы меня не так про индексы поняли.
Предлагаю сделать следующее: Заказчик задает количество картинок и указывает какие из них одинаковые. Я не знаю как у вас это делается, предполагаю что все картинки имеют имена типа "imageX.jpg", где X от 1 до N и N задается заказчиком. В этом случае чтобы указать какие картинки считабтся одинаковыми заказчик дополнительно должен задать их индексы, которые будут одинаковыми для одинаковых картнок, например [1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7] - массив из N элементов (*). Это же и будет являться правильным решением, как я понимаю. Вы создавая мувики _root["platz_"+i] дополнительно им присваиваете очередной индекс _root["platz_"+i].idx = indexes[i] из этого массива. Далее проверяем все мувики hitTest чтобы они все находились в заданной области, проверяем чтобы _y координаты не совпадали, это цикл в цикле - for (j=0; j<i-1; j++;) Можно попутно создавать массив объектов вида { y:_root["platz_"+i]._y, idx:_root["platz_"+i].idx }. Отсортировать массив по возрастанию по переменной y. Пройтись по массиву, проверить чтобы idx не уменьшался. Если все так - решение верное. Есть наверняка и более простой вариант. |
Вы всё правильно поняли насчет номеров картинок. Индекс в конфиге я сделал.
Насчет idx_0._y, idx_0 это имя переменной из idx_ и значения i в цикле, а далее = значение по оси _y. Вот это я не понял:"проверяем чтобы _y координаты не совпадали, это цикл в цикле - for (j=0; j<i-1; j++". Это как? Если не сложно - поясните пожалуйста. Сейчас я проверяю так: Код AS1/AS2:
|
Если loesung это и есть строка, содержащая "1,2,3,3,3,4,5,6,6,6,7", то код будет примерно такой:
Код AS1/AS2:
|
| Часовой пояс GMT +4, время: 18:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.