使用CF/Javascript/HTML随机化DB中MC答案的显示顺序



今天,我试图使用ColdFusion、HTML和Javascript改进《危险边缘》风格的游戏。现在,游戏导航到一个问题页面,该页面显示问题以及一个供用户键入答案的答案框。我们试着把它改成多项选择题测验。

我想实现的主要目标是让三个可能的答案按随机顺序显示。游戏从中提取的数据库有4个与此相关的属性,如下所示:

MC_问题

MC_正确应答

MC_修正答案1

MC_纠正应答2

我希望问题页面/弹出窗口显示:


MC_问题

随机选择的答案1

随机选择的Answer2

随机选择的Answer3

提交按钮


我用一些随机生成的数字创建了一个小小的html,这可能会让你更好地了解我的想法。

<HTML>
<HEAD>
<TITLE>Question</TITLE>
<script>
    var num=Math.floor(Math.random()*3); 
    var num1=Math.floor(Math.random()*3); 
    do{
    num1=Math.floor(Math.random()*3); 
    }while (num == num1) 
    var num2=Math.floor(Math.random()*3); 
    do{
    num2=Math.floor(Math.random()*3); 
    }while (num == num2 || num1 == num2)
</script>
</HEAD>
<BODY>
<H1>Question here!</H1>
<P>
<FORM>
    <INPUT type="radio" name = "Answer" value="num" />
    <script>document.write("Answer " + num);</script><br />
    <INPUT type="radio" name = "Answer" value="num1" />
    <script>document.write("Answer " + num1);</script><br />
    <INPUT type="radio" name = "Answer" value="num2" />
    <script>document.write("Answer " + num2);</script><br />
    <br>
    <input type="submit" value="Submit" />
</FORM>
</BODY>
</HTML>

我的问题是:如何将我的数据库答案与随机生成的数字联系起来,以混淆答案?在上面的示例代码中,答案0将等于MC_CorrectAnswer,答案1和2将是不正确的答案。我以后会担心提交的东西等等——现在我只想让表格显示从数据库中提取的问题和答案。

我是Javascript和CF的新手,非常感谢您的任何意见。如果我的做法完全错误,请告诉我。

我还看了一下这个Q和a,为了解决这个问题,我想说,如果必要的话,我很乐意为答案创建一个单独的表,其中包含错误/正确的标志等,但我真正想要的是前端代码和逻辑,以便在页面上随机化我的问题。后端的好处甚至还不存在。

php 中的随机化-记住随机化-多项选择题

非常感谢您的时间和专业知识!

使用java.util.Collections.shuffle(list)

<!--- simulate a database <cfquery>SELECT id, answer FROM answers</cfquery> call --->
<cfset answers = QueryNew("id,answer","integer,varchar")>
<cfloop from="1" to="3" index="idx">
    <cfset queryAddRow(answers)>
    <cfset querySetCell(answers, "id", idx)>
    <cfset querySetCell(answers, "answer", "Answer #idx#")>
</cfloop>
<cfset rownumbers = []>
<cfloop from="1" to="#answers.recordcount#" index="rowNumber">
    <cfset arrayAppend(rowNumbers, rowNumber)>
</cfloop>
<cfset createObject("java", "java.util.Collections").shuffle(rowNumbers)>
<cfdump var="#rowNumbers#">
<cfoutput>
<body>
<h1>Question here!</h1>
<p>
<form>
    <cfloop array="#rowNumbers#" index="rowNumber">
        <input type="radio" name="answerId" value="#answers.id[rowNumber]#" />#answers.answer[rowNumber]#<br />
    </cfloop>
</form>
</body>
</cfoutput>

猩猩溶液应该可以正常工作。或者,您可以按随机顺序选择答案。具体方式取决于您使用的数据库。

相关内容

最新更新