【问题标题】:Hi I would like to create a Quiz with actionscript嗨,我想用 actionscript 创建一个测验
【发布时间】:2015-05-08 22:45:50
【问题描述】:

所以我有的是,我有20个问题和这些问题的5个答案,我想要实现的就是得到唯一的答案,会有

" a , b , c, d, e " 

为每个问题选择。

每次用户进入测验,所有的问题和答案都将被唯一加载。

我的主要问题是我无法获得独特的答案,
例如,对于问题 1

What is the day

我得到了相同的答案

a )  monday   b) tuesday c) monday d)thursday e) saturday.....  

我无法加载不同的唯一答案..

这怎么可能,我试过拼接数组,但它只会把事情搞砸。

【问题讨论】:

  • 创建一个答案数组,以及一个从数组中随机选择5个答案的函数。
  • 你能告诉我们失败的代码吗?

标签: actionscript-3 actionscript


【解决方案1】:

你可以这样做..

var anwers:Array = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
var selectedAnswers:Array = new Array(5);       // array for selected answers
var tmp:Number = Math.floor(Math.random*5);
var correct:String  = answers[0];               // let "Monday" be the correct answer
selectedAnswers[tmp] = correct;                 // correct answer set to a random position 

for(var i:Number=0; i<5; i++){
    tmp=Math.floor(Math.random*5);
    if(selectedAnswers[i].equals(correct)) continue;  //skip  for the correct answer
    if(selectedAnswers.indexOf(answers[tmp])<0){      // set answer if not present already
        selectedAnswers[i] = answers[tmp];
    } else {
        i--;                                          // loop again if answer is set earlier
    }
}

以上将是完全随机的,但可能需要一些时间来选择最后一个元素..


以下方法会很快,但不是完全随机的

var anwers:Array = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
var selectedAnswers:Array = new Array(5);       // array for selected answers
var tmp:Number = Math.floor(Math.random*5);
var correctIndex:Number = 0;                    // let "Monday" be the correct answer
var correct:String  = answers[correctIndex];                
selectedAnswers[tmp] = correct;                 // correct answer set to a random position 
var j:Number = correctIndex;                    // temporary index
var offset:Number = 2;                          // unique for this answer set
                                                // so that the answers won't overlap for 5 choices

for(var i:Number=0; i<4; i++){                  // not completely random (yet give random answers for specific cases)
    tmp++;      
    if(tmp==5) tmp = 0;
    j += offset;
    if(j>answers.length) j -= answers.length;
    selectedAnswers[tmp] = answers[j];
}

这会从随机索引开始分配从answersselectedAnswers 的值;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多