我正在研究一个测试项目,后来我将其纳入一个更大的工作,这是一个简单的问答游戏。我用我的问题做了一个数组:
var questions1:Array=["nitrogen dioxide","sulfur hexafluoride",..."]
在第二层我制作了一个随机循环问题的按钮。
import flash.events.MouseEvent;
var qno=0;var rnd1;
function change_question(){
rnd1=Math.ceil(Math.random()*questions1.length)-1;
q.text=questions1[rnd1];
if(questions1[rnd1]=="X"){change_question();}
questions1[rnd1]="X";
}
change_question();
next_b.addEventListener(MouseEvent.CLICK, ButtonAction1);
function ButtonAction1(eventObject:MouseEvent){
qno++;change_question();
}
这部分很有用,因为我正在学习一个教程。文本显示在我创建的动态文本框中。本教程教导每次选择时将数组的值更改为X,并在每次遇到X时忽略选择不同的问题
在循环遍历所有问题后,我基本上在flash的输出部分得到一个无限循环,因为它找不到更多的非X值。我希望有人有关于如何按下按钮的信息,将阵列更改回默认设置,以便教师(因为这是它的用途)有一种方法可以在文件到达测验结束时重置文件
谢谢大家!
答案 0 :(得分:1)
根据我的理解,您希望随机化您的问题,并在显示您想要重置问题的所有问题之后。
根据您的代码,您会得到一个随机问题,并通过推送值'X'
来更新相同的数组。而不是这样做你需要做的是保持数组只随机化它的位置。这样,一旦涵盖了所有问题,就可以使用相同的值
我在这里添加了代码。
import flash.events.MouseEvent;
var qno=0;var rnd1;
var questions1:Array=["nitrogen dioxide","sulfur hexafluoride","carbon dioxide","carbon monooxide"];
var nAttmeptedCount = 0;
var shuffledLetters:Array;
function change_question()
{
if(qno == questions1.length)
{
qno = 0;
resetQuestion()
}
else
{
q.text = questions1[shuffledLetters[qno]];
qno++;
}
}
function resetQuestion()
{
shuffledLetters = new Array(questions1.length);
for(var i=0;i<shuffledLetters.length;i++)
{
shuffledLetters[i] = i;
}
shuffledLetters.sort(randomize);
}
function randomize ( a : *, b : * ) : int {
return ( Math.random() > .5 ) ? 1 : -1;
}
resetQuestion()
change_question();
next_b.addEventListener(MouseEvent.CLICK, ButtonAction1);
function ButtonAction1(eventObject:MouseEvent){
change_question();
}
在显示所有问题后的上述解决方案中,我自动重置了问题。您可以根据您的要求修改代码。如果您想执行重置问题,可以在按钮单击时为您添加代码qno = 0;resetQuestion()
。
希望以上解决方案适合您。