是否可以创建随机提问的多选游戏?或任何问题随机出现的问答游戏,只使用flash和actionscript 3.0?任何答案都将非常感谢。
答案 0 :(得分:0)
首先,只要随机化测验,你应该创建一个存储测验句等内容的数组。并且这个数组使用以下的algorthims进行洗牌。
var quiz:Array =
[
"1+1 = ?",
"2+2 = ?",
"3+3 = ?",
"4+4 = ?",
"5+5 = ?"
];
function shuffleArray($arr:Array):Array
{
var l:Number = $arr.length - 1;
for (var it:uint = 0; it<l; it++)
{
var r:int = Math.round(Math.random() * l);
var tmp:String = $arr[it];
$arr[it] = $arr[r];
$arr[r] = tmp;
}
return $arr;
}
var refreshQuiz:Array = shuffleArray(quiz);
trace(refreshQuiz);
如果您想构建一个真正的测验游戏,请参阅以下骨架代码。此代码向用户显示随机测验。在文本字段中输入每个答案,然后输入正确答案,正确答案。否则,它显示错误的答案是一个简单的游戏。
var quizModel:Array = [{q:"1+1 = ?", a:"2"}, {q:"5+5 = ?", a:"10"}, {q:"2+2 = ?", a:"4"}, {q:"6+6 = ?", a:"12"},{q:"8-7 = ?",a:"1"}];
var user_ans:Array = new Array();
var newQuizModel:Array = shuffleArray(quizModel);
stage.addEventListener(KeyboardEvent.KEY_DOWN, go);
function shuffleArray(arr:Array):Array
{
var l:Number = arr.length - 1;
for (var it:uint = 0; it<l; it++)
{
var r:int = Math.round(Math.random() * l);
var tmp:Object = arr[it];
arr[it] = arr[r];
arr[r] = tmp;
}
return arr;
}
var index:int = 0;
questions_txt.text = newQuizModel[index]["q"];
var userAnswer:String = "";
function go(k:KeyboardEvent):void
{
if (k.keyCode != Keyboard.ENTER)
{
return;
}
userAnswer = answers_txt.text;
if (userAnswer == newQuizModel[index]["a"])
{
answers_txt.text = "Your answer is correct!";
}
else
{
answers_txt.text = "Your answer is wrong";
return;
}
index++;
index%= quizModel.length;
showQuiz(index);
}
function showQuiz(idx:int):void
{
questions_txt.text = newQuizModel[idx]["q"];
}
showQuiz(index);
答案 1 :(得分:0)
所以你的问题归结为随机排序一个数组是AS3。关于此问题还有另一个detailed answer,但摘要是:
var arr:Array = [ item1, item2, item3, item4, ... ];
arr.sort(function():int { return Math.random()<.5 ? -1 : 1; });
其中arr是你的问题项目数组 - 可能是字符串,可能是带有问题和答案细节的对象,但这是对数组进行随机排序的一种方法。