4択問題のプログラムでランダムに出題する処理で困っています
現在私は画像のような4択の問題を解答し最後に何問正解していたかを表示するプログラムを作成しています。
解答を選択して「次の問題」ボタンをクリックすれば次の問題に移行する・・・というような流れです。
データテーブルに「問題(Question)」「選択肢(Answer1~4)」「解答(SelectAnswr)」「正解(CorrectAnswer」「正解の解説(Explanation)*今質問中では使用させません」を格納しています。
最終的な目標はデータテーブルに問題を300問用意しその中からランダムに100問出題して最後に結果を表示するプログラムを作成することです。
今どうすればランダムに出題しつつ同じ問題が出題されないようにするプラグラムを組めばいいのか壁にぶつかっています。
下記が「次の問題」ボタンのプログラムです。
Private Sub NextQuestion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NextQuestion.Click
' i が -1 のとき(つまり、初回のクリック)
If i = -1 Then
'選択肢を選択可能にする
GroupBox1.Enabled = True
'NextQuestionのテキスト変換
NextQuestion.Text = "次の問題"
' i が -1以外のとき(つまり、回答後のクリック)
Else
'正誤確認
If Answer1.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "ア"
ElseIf Answer2.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "イ"
ElseIf Answer3.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "ウ"
ElseIf Answer4.Checked = True Then
DataSet1.DataTable1(i).SelectAnswer = "エ"
End If
If DataSet1.DataTable1(i).SelectAnswer = DataSet1.DataTable1(i).CorrectAnswer Then
total = total + 1
End If
End If
i += 1 ' i をインクリメント(出題を次に進める)
' i が10になった = 回答が10問終わった
If i = 10 Then
MsgBox("あなたの正解数は10門中" & total & "問です!")
Me.Close()
Else
'問題の読み込み
Question.Text = DataSet1.DataTable1(i).Question
Answer1.Text = DataSet1.DataTable1(i).Answer1
Answer2.Text = DataSet1.DataTable1(i).Answer2
Answer3.Text = DataSet1.DataTable1(i).Answer3
Answer4.Text = DataSet1.DataTable1(i).Answer4
'ラジオボタンを初期位置に戻す
Answer1.Checked = True
End If
End Sub
*変数iはPublicで宣言しています。
*最終目標は100問出題なのですが今は10問で動くプログラムを作成しています。
わかるかたがいましたら知恵をかしてください。
お願いします。
補足
解答のほうありがとうございます。 画像をリソースに取り込んで、データテーブルに画像名を格納する列を追加で画像が必要な問題の場合はピクチャーボックスに画像を表示させる・・・というようなかんじで作成しようと考えているのですがうまくいきません。 下記のようなコードを作成したのですがもし別になにかいい方法があったら知恵をかしてください。よろしくお願いします。 PictureBox1.Image = My.Resources.from.DataSet1.DataTable1(0).QuestionImageName