السلام عليكم
كثيرا ما نريد تصميم مسابقات بسيطة تعتمد على الاختيارات
درسنا اليوم حول استعمال الاوتويلاي من اجل ذلك
---------------
افتح مشروع جديد
الان في الصفحة في ONSHOW ضع الكود
وهو كود خاص بشتغيل الاوامر الموجودة في زر XBUTTON
هذا xButton نجعله مخفيا
---------------------
نضع الاسئلة في ليسبوكس بحيث نضع في item السؤال
و نضع في data الاختيارات الثلاثة بحيث نفصل بينها بنقطة (.) و يكون الاختيار الصحيح هو الاول
مثال : في item نضع ( ما عاصمة الجزائر ؟ )
في data نضع ( الجزائر . بشار . اقلي )
--------------------
الان كيف نستدعي الاسئلة من اليستبوكس ؟
ضع في المشروع paragraph لعرض السؤال
ضع 3 من الازرار button واحد اسفل الاخر وهذا لعرض الاختيارات
------------------
الان سنتدعي سؤال من اليسبوكس بطريقة عشوائبة رقمه مثلا igli
اذن نستعمل الدالة math.rondom من 1 الى عدد عناصر اليسبوكس
فيضبح الكود هو :
-----------------------
بعد اختيارانا العشوائي للعنصر من اليسبوكس .......نستعدي محتوى item في البارغراف و الاختيارات في الازار
الكود المناسب للسؤال ببساطة هو
اما الاختيارات فيجب تفرقة المحتوى الى 3 بحيث نستعمل دالة البحث لتحديد موضع النقطة الاولى و بالتالي الاختيار الاول سيكون من بداية النص (1) الى موضع النقطة الاولى ناقصا 1 ...........
نحدد موضع التقطة الثانية فيكون الاختيار الثاني من موضع النقطة الاولى الى موضع النقطة الثانية
الاختيار الثالث سيكون من نهاية من موضع النقطة الثانية الى نهاية النص
نستدعي النص من data عبر الكود التالي
الان تبحث عن النقطة الاولى
اما النقطة الثانية
جميل ..........الان الاختيار الاةل يكون من بادية النص 1 الى f1
ثم نضع النص قس الزر الاول
بالنسبة للاختيار الثاني
الان نحدد طول النص كله
فيكون الاختيار الثالث من f2 الى اخر النص اي الى long
و نضعه في الزر الثالث
--------------------------
الان كي لا يتكرر السؤال نمحيه من ليسبوكس
-----------------------------
الان يجب ان نخلط موقع الازار كل مرة حتى لا يعرف موقع الزر الاول و الذي هو الجواب الصح
كيف ؟؟؟؟؟؟؟؟
اولا نسجل مواقع الازار في مصفوفة نسميها مثلا pos
الان نغير المواقع عشوائيا
وفي كل مرة تحذف الموقع من المصفوفة
------------------------------------------
بعد نفاذ عناصر الليسبوكس اي تنتهي الاسئلة
يجب ان تظهر مرة اخرى ..........لذلك سنقوم بلقطة جميلة .......و هي بعد ان تنتهي من كتابة الاسئلة باجابتها
انسخ اليسبوكس كلها فيصبح لدينا اثنين من اليسبوكس listBox1 و lisbox2
الان اذا وصل عدد الاسئلة اقل من 1 اي عدد عناصر اليسبوكس سيقوم الاكود بنسخ كل محتوى اليسبوكس 2 الى الليسبوكس 1
بالكودالتالي :
------------------------------------------
نجمع كل ما سبق نضع كل الاكواد في زر xbutton
---------------------------------------
التصحيح : نضع لبيال Label1 و الذي سيعرض فيه عدد الاجابات الصحيحة
الان في الازار الثلاثة :
الزر الاول وهو الذي يحمل الجواب الصح اذا ضغطه يصدر صوت التصفيق و يضاف الى عدد الاجابات الصحيحة
بعد فترة معينة سيقوم النبرنامج بعرض السوال الموالي بتفعيل الزر xButton
نضع في الزر الاول الكود التالي :
في الزر الثاني و الثالث هو الجواب الخطا يصدر صوت الخطا و بعد فترة يعرض السرال الموالي
نضع فيهما الكود
----------------------------------------------------------
بعد الانتهاء اضغط معاينة
ننتظر مشاريعكم و نلتقي بعدها في الاصدار الثاني
تحياتي
كثيرا ما نريد تصميم مسابقات بسيطة تعتمد على الاختيارات
درسنا اليوم حول استعمال الاوتويلاي من اجل ذلك
---------------
افتح مشروع جديد
الان في الصفحة في ONSHOW ضع الكود
PHP Code:
Page.ClickObject("xButton1")
هذا xButton نجعله مخفيا
---------------------
نضع الاسئلة في ليسبوكس بحيث نضع في item السؤال
و نضع في data الاختيارات الثلاثة بحيث نفصل بينها بنقطة (.) و يكون الاختيار الصحيح هو الاول
مثال : في item نضع ( ما عاصمة الجزائر ؟ )
في data نضع ( الجزائر . بشار . اقلي )
--------------------
الان كيف نستدعي الاسئلة من اليستبوكس ؟
ضع في المشروع paragraph لعرض السؤال
ضع 3 من الازرار button واحد اسفل الاخر وهذا لعرض الاختيارات
------------------
الان سنتدعي سؤال من اليسبوكس بطريقة عشوائبة رقمه مثلا igli
اذن نستعمل الدالة math.rondom من 1 الى عدد عناصر اليسبوكس
فيضبح الكود هو :
PHP Code:
igli = Math.Random(1,ListBox.GetCount("ListBox1"));
بعد اختيارانا العشوائي للعنصر من اليسبوكس .......نستعدي محتوى item في البارغراف و الاختيارات في الازار
الكود المناسب للسؤال ببساطة هو
PHP Code:
qus = ListBox.GetItemText("ListBox1", igli);
Paragraph.SetText("Paragraph1", qus)
نحدد موضع التقطة الثانية فيكون الاختيار الثاني من موضع النقطة الاولى الى موضع النقطة الثانية
الاختيار الثالث سيكون من نهاية من موضع النقطة الثانية الى نهاية النص
نستدعي النص من data عبر الكود التالي
PHP Code:
ala = ListBox.GetItemData("ListBox1", igli);
PHP Code:
f1 = String.Find(ala, ".", 1);
PHP Code:
f2 = String.Find(ala, ".", f1+1);
ثم نضع النص قس الزر الاول
PHP Code:
v1 = String.Mid(ala, 1, f1-1);
Button.SetText("Button1", v1);
PHP Code:
v2 = String.Mid(ala, f1+1, f2-f1-1);
Button.SetText("Button2", v2);
PHP Code:
long = String.Length(ala);
و نضعه في الزر الثالث
PHP Code:
v3 = String.Mid(ala, f2+1, long-f2);
Button.SetText("Button3", v3);
الان كي لا يتكرر السؤال نمحيه من ليسبوكس
PHP Code:
ListBox.DeleteItem("ListBox1",igli);
الان يجب ان نخلط موقع الازار كل مرة حتى لا يعرف موقع الزر الاول و الذي هو الجواب الصح
كيف ؟؟؟؟؟؟؟؟
اولا نسجل مواقع الازار في مصفوفة نسميها مثلا pos
PHP Code:
pos={};
for i=1,3 do
pos[i] = Button.GetPos("Button"..i);
end
وفي كل مرة تحذف الموقع من المصفوفة
PHP Code:
for i=1,#pos do
ali = Math.Random(1,#pos);
Button.SetPos("Button"..i,pos[ali].X ,pos[ali].Y);
Table.Remove(pos,ali);
end
بعد نفاذ عناصر الليسبوكس اي تنتهي الاسئلة
يجب ان تظهر مرة اخرى ..........لذلك سنقوم بلقطة جميلة .......و هي بعد ان تنتهي من كتابة الاسئلة باجابتها
انسخ اليسبوكس كلها فيصبح لدينا اثنين من اليسبوكس listBox1 و lisbox2
الان اذا وصل عدد الاسئلة اقل من 1 اي عدد عناصر اليسبوكس سيقوم الاكود بنسخ كل محتوى اليسبوكس 2 الى الليسبوكس 1
بالكودالتالي :
PHP Code:
if ListBox.GetCount("ListBox1") < 1 then
ListBox.DeleteItem("ListBox1", LB_ALLITEMS);
for i = 1 , ListBox.GetCount("ListBox2") do
q = ListBox.GetItemText("ListBox2", i);
a = ListBox.GetItemData("ListBox2", i);
ListBox.AddItem("ListBox1", q, a)
end
end
------
نجمع كل ما سبق نضع كل الاكواد في زر xbutton
PHP Code:
pos={};
for i=1,3 do
pos[i] = Button.GetPos("Button"..i);
end
---------------
if ListBox.GetCount("ListBox1") < 1 then
ListBox.DeleteItem("ListBox1", LB_ALLITEMS);
for i = 1 , ListBox.GetCount("ListBox2") do
q = ListBox.GetItemText("ListBox2", i);
a = ListBox.GetItemData("ListBox2", i);
ListBox.AddItem("ListBox1", q, a)
end
end
---------------------
igli = Math.Random(1,ListBox.GetCount("ListBox1"));
qus = ListBox.GetItemText("ListBox1", igli);
Paragraph.SetText("Paragraph1", qus)
-------------------------------------
ala = ListBox.GetItemData("ListBox1", igli);
f1 = String.Find(ala, ".", 1);
f2 = String.Find(ala, ".", f1+1);
long = String.Length(ala);
v1 = String.Mid(ala, 1, f1-1);
Button.SetText("Button1", v1);
v2 = String.Mid(ala, f1+1, f2-f1-1);
Button.SetText("Button2", v2);
v3 = String.Mid(ala, f2+1, long-f2);
Button.SetText("Button3", v3);
------------------------------------------
for i=1,#pos do
ali = Math.Random(1,#pos);
Button.SetPos("Button"..i,pos[ali].X ,pos[ali].Y);
Table.Remove(pos,ali);
end
ListBox.DeleteItem("ListBox1",igli);
التصحيح : نضع لبيال Label1 و الذي سيعرض فيه عدد الاجابات الصحيحة
الان في الازار الثلاثة :
الزر الاول وهو الذي يحمل الجواب الصح اذا ضغطه يصدر صوت التصفيق و يضاف الى عدد الاجابات الصحيحة
بعد فترة معينة سيقوم النبرنامج بعرض السوال الموالي بتفعيل الزر xButton
نضع في الزر الاول الكود التالي :
PHP Code:
Label.SetText("Label1", tonumber(Label.GetText("Label1"))+1);
Audio.Load(CHANNEL_NARRATION, "AutoPlay\\Audio\\yes1.wav", true);
Application.Sleep(1000);
Page.ClickObject("xButton1")
نضع فيهما الكود
PHP Code:
Audio.Load(CHANNEL_NARRATION, "AutoPlay\\Audio\\no1.wav", true);
Application.Sleep(1000);
Page.ClickObject("xButton1")
بعد الانتهاء اضغط معاينة
ننتظر مشاريعكم و نلتقي بعدها في الاصدار الثاني
تحياتي