Просмотр полной версии : викторина. начисление баллов за ответы.
FreeLion
21.06.2010, 01:04
Здравствуйте, у меня такой вопрос: я сейчас пишу викторину в флэш и встала такая задача, это начисление баллов за ответы. Пока совершенно не представляю как реализовать такую функцию. Может кто подскажет?
Juice_Green
21.06.2010, 07:59
Множество вопросов, у каждого вопроса подмножество ответов и вес ответа в баллах (0/1 или как там у вас будет). Как реализовать - только ваше предпочтение - самое простое массивы.
FreeLion
21.06.2010, 11:34
Ну у меня был самый просотой вариант -это назначать за правельный ответ 1 балл и минусовать на 1 балл за не правельный. Но мои познания в коди совершенно нулевые...поэтому даже "массив" мне не о чем не говорит. Если не сложно подскажте как это сделать подробнее.
П.с. У меня на каждый ответ стаит баттон видимо на который нужно вешать или + или - балла.
вообще-то тестов с отрицательными результатами я не видел, так что неправильный ответ=0, правильный =+1
теперь к задаче - нужно текстовое поле с вопросом и 4 кнопки ответов (с динамическим текстом внутри
массив вопросов и массив ответов
var question:Array=["Вопрос 1","Вопрос 2",...,"Вопрос последний"];
var answers:Array=["ответ 1.1","ответ 1.2","ответ 1.3",...,"Вопрос последний"];
//ответов в 4 раза больше чем вопросов
шаг первый задать вопрос из списка и показать варианты ответов
шаг второй по нажатию на кнопку проверить правильный ответ или нет и перейти к следующему вопросу (шаг первый)
Вот мое виденье викторины:
Juice_Green
21.06.2010, 14:23
fessor, непонятно каким образом хранится массив ответов - все ответы на все вопросы в одномерном массиве?
первое что приходит на ум - сделал бы вот так:
var tests:Array = [
["Question1", [{answer:"Answer1_1", flag:0}, {answer:"Answer1_2", flag:0}, {answer:"Answer1_3", flag:1}]],
["Question2", [{answer:"Answer2_1", flag:0}, {answer:"Answer2_2", flag:1}]],
["Question3", [{answer:"Answer3_1", flag:1}, {answer:"Answer3_2", flag:0}, {answer:"Answer3_3", flag:0}, {answer:"Answer3_4", flag:0}]]
];
for (var i:Number=0;i<tests.length;i++){
var question:String = tests[i][0];
var asnwersArray:Array = tests[i][1];
trace("Вопрос: " + question);
for (var j:Number=0; j<asnwersArray.length;j++){
trace(" Вариант ответа: "+asnwersArray[j].answer+" (правильный "+(asnwersArray[j].flag==1 ? "ДА" : "НЕТ" )+")");
}
}
и как результат:
Вопрос: Question1
Вариант ответа: Answer1_1 (правильный НЕТ)
Вариант ответа: Answer1_2 (правильный НЕТ)
Вариант ответа: Answer1_3 (правильный ДА)
Вопрос: Question2
Вариант ответа: Answer2_1 (правильный НЕТ)
Вариант ответа: Answer2_2 (правильный ДА)
Вопрос: Question3
Вариант ответа: Answer3_1 (правильный ДА)
Вариант ответа: Answer3_2 (правильный НЕТ)
Вариант ответа: Answer3_3 (правильный НЕТ)
Вариант ответа: Answer3_4 (правильный НЕТ)
FreeLion
21.06.2010, 16:13
У меня два вопроса к Вам, дорогие профи :)
1. Это все же как реализовать всю туже функцию начисления баллов в данной среде
2. Есть ли возможность оптимизации данного проекта в более компакный и упрощенный вид
Вот ссылка на сам файл http://narod.ru/disk/22090403000/Viktorina.fla.html
Заранее спасибо за любые ответы и предложения.
Если что вот мой скайп : "magic_mag_"
Juice_Green огромное спасибо за код, теперь я знаю как без многострочного объявления добавлять вложенные переменные в массив!
FreeLion посмотрел исходник... вам будет сложно понять что от вас тут хотят. Судя по коду в кнопках (в каждой из нескольких десятков) и отдельным кадрам - вопросам с вариантами ответов о программировании есть только отдаленное представление.
//в самом первом кадре объявите переменную
var win:Number=0;
//потом, ТОЛЬКО в кнопках правильных ответов (одна на слайд) напишите
win++
//в конце теста сделайте проверку на прохождение теста
if(win>10){
//переходим к экрану для победителей
gotoAndPlay(150)
}else{
//переходим к экрану для проигравших
gotoAndPlay(170)
}
и начните читать хоть какие-нибудь учебники по программированию (объектно-ориентированное не пробуйте - это следующий шаг)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.