تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مساعدة في كود عدم تكرار استدعاء نفس السؤال من المصفوفة
#3
جرب هذا التصحيح

كود :
Dim Nran As New Random()
Dim Questions As New List(Of String)
Dim Reponses As New List(Of String)
Dim UsedQuestions As New List(Of String) ' قائمة لتخزين الأسئلة المستخدمة

Qus = {"كم عدد الجيوب الأنفية في أنف الإنسان؟", "ما هو اسم اعلى جبل في قارة افريقيا؟", "ما هو ناتج ضرب 9 و 2 ؟"}
Rep = {"8 * 6 * 7 * 9", "كليمنجارو * مزالة * غورونغوسا * آير", "18 * 20 * 14 * 16"}

Questions.AddRange(Qus)
Reponses.AddRange(Rep)

Sub LoadQuestion()
   If Questions.Count = 0 Then
       ' إعادة تعيين الأسئلة عند انتهاء القائمة
       Questions.AddRange(UsedQuestions)
       UsedQuestions.Clear()
   End If

   Dim Nq = Nran.Next(0, Questions.Count)
   lqus.Text = Questions(Nq)
   UsedQuestions.Add(Questions(Nq)) ' إضافة السؤال إلى القائمة المستخدمة
   Questions.RemoveAt(Nq) ' إزالة السؤال من القائمة

   ' تقسيم الإجابات
   Rarr = Reponses(Nq).Split("*")
   lcurct.Text = Rarr(0)

   ' ترتيب عشوائي للإجابات
   Dim shuffledAnswers = Rarr.OrderBy(Function() Nran.Next()).ToArray()

   For i = 1 To 4
       Me.Controls(String.Format("lans{0}", i)).Text = shuffledAnswers(i - 1)
   Next

   ' إزالة الإجابات من القائمة
   Reponses.RemoveAt(Nq)
End Sub

او هذا 

PHP كود :
Dim Nran As New Random
Dim Qus
(), Rep(), Rarr() As String
Dim Questions
Reponses As New List(Of String' تم تغيير ArrayList إلى List(Of String) لسهولة الإدارة
Dim LabPos, picPos, TxtBox As New ArrayList

تعريف الأسئلة والأجوبة
Qus 
= {"كم عدد الجيوب الأنفية في أنف الإنسان؟""ما هو اسم اعلى جبل في قارة افريقيا؟", ...} ' الأسئلة هنا
Rep = {"8 * 6*7 * 9", "كليمنجارو * مزالة * غورونغوسا *آير", ...} ' 
الأجوبة هنا

' تحميل الأسئلة والأجوبة في القوائم
Questions.AddRange(Qus)
Reponses.AddRange(Rep)

دالة لاختيار سؤال عشوائي
Sub ShowRandomQuestion
()
    ' التحقق من وجود أسئلة متبقية
    If Questions.Count = 0 Then
        MessageBox.Show("لا توجد أسئلة متبقية!")
        Return
    End If

    ' 
اختيار سؤال عشوائي
    Dim Nq 
Nran.Next(0Questions.Count)
    lqus.Text Questions(Nq)

    ' تقسيم الإجابات على الخانات الأربعة
    Rarr = Reponses(Nq).ToString.Split("*")
    lcurct.Text = Rarr(0)

    ' 
إضافة الإجابات إلى ListBox مع ترتيب عشوائي
    ListBox2
.Items.Clear()
    ListBox2.Items.Add(Rarr(0))
    ListBox2.Items.Add(Rarr(1))
    ListBox2.Items.Add(Rarr(2))
    ListBox2.Items.Add(Rarr(3))

    ' إزالة السؤال والإجابة من القوائم بعد عرضها
    Questions.RemoveAt(Nq)
    Reponses.RemoveAt(Nq)

    ' 
ترتيب الإجابات بشكل عشوائي
    Dim random0 
As New Random()
    Dim shuffledAnswers ListBox2.Items.Cast(Of String)().OrderBy(Function() random0.Next()).ToList()
    ListBox2.Items.Clear()
    ListBox2.Items.AddRange(shuffledAnswers.ToArray())

    ' عرض الإجابات في العناصر المناسبة
    For i = 1 To 4
        Me.Controls(String.Format("lans{0}", i)).Text = ListBox2.Items(i - 1).ToString
    Next
End Sub

استدعاء الدالة عند الحاجة (مثلاً عند النقر على زر)
Private 
Sub btnNextQuestion_Click(sender As ObjectAs EventArgsHandles btnNextQuestion.Click
    ShowRandomQuestion
()
End SubEnd Sub 
الرد }}}
تم الشكر بواسطة: fireswored1


الردود في هذا الموضوع
RE: مساعدة في كود عدم تكرار استدعاء نفس السؤال من المصفوفة - بواسطة Kamil - 10-02-25, 01:04 AM


التنقل السريع :


يقوم بقرائة الموضوع: