1

今天,我正在尝试使用 ColdFusion、HTML 和 Javascript 改进 Jeopardy 风格的游戏。就目前而言,游戏导航到一个问题页面,该页面显示问题以及一个答案框,供用户输入他们的回答。我们正在尝试将其更改为多项选择测验。

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

MC_问题

MC_CorrectAnswer

MC_IncorrectAnswer1

MC_IncorrectAnswer2

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


MC_问题

随机选择答案1

随机选择的答案2

随机选择的答案3

提交按钮


我用一些随机生成的数字创建了一个很小的 ​​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中的多项选择题

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

4

2 回答 2

2

使用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>
于 2011-05-26T16:37:08.250 回答
0

orangepips 解决方案应该可以正常工作。或者,您可以随机选择答案。具体如何取决于您使用的数据库。

于 2011-05-26T16:46:22.443 回答