1

今日は、ColdFusion、HTML、およびJavascriptを使用して作業するためのJeopardyスタイルのゲームを改善しようとしています。現在のところ、ゲームは質問ページに移動します。このページには、ユーザーが回答を入力するための回答ボックスとともに質問が表示されます。代わりに、これを多肢選択式のクイズに変更しようとしています。

私が達成したい主なことは、3つの可能な答えをランダムな順序で表示することです。ゲームがプルするデータベースには、次のように、これに関連する4つの属性があります。

MC_Question

MC_CorrectAnswer

MC_IncorrectAnswer1

MC_IncorrectAnswer2

質問ページ/ポップアップを表示したい:


MC_Question

ランダムに選択されたAnswer1

ランダムに選択された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は正しくありません。後で提出物などについて心配します-今のところ、DBから取得した質問と回答をフォームに表示したいだけです。

私は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 に答える