منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تصميم برنامج من سيربح المليون
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم


من باب التحدي  احببت ان  ارفع لاخواني ملف سورس مفتوح
لتصميم برنامج من سيربح المليون
------ حصري لمنتدى الفجيوال بيسك لكل العرب ---------


اعرف انه سبق وان تناول البعض الموضوع لكن التحدي هو ان تصمم انت بطريقتك و تفكيرك البرمجي

اولا سنبدا بالاساسيات :

سنحتاج الى صور البرانامج و هي :
مساعدة الحاسوب - تدخل صديق - الجمهور - صورة  خلفية  لنص السؤال و الاجابات - صورة لشهادة تقديرية 

سنحتاج  الى اصوات :
صوت البداية - صوت التفكير - صوت الصح - صوت الخطا - صوت الاتصال

سنحتاج الى ليسبوكس لاستعراض التقدم في الاجابات

سنحتاج الى عنصر richtextbox  لاستعراض السؤال 
و الى ليبالاات لاستعرض الاجابات

الان مع البرمجة :
اهم شيء في البرنامج هو الاسئلة و الاجابات  .الكل حر في استعمال قاعدة البيانات التي يراها مناسبة 
في مثالي استعملت ابسط طريقة وهي المصفوفة
يعني وضعت الاسئلة في مصفوفة 
بهذا الشكل :
PHP كود :
  Qus = {" عاصمة الجزائر""عملة الجزائر""رئيس الجزائر""الوان العلم الجزائري الاحمر و الابيض",
 
             "لون الهلال في العلم الجزائري""تقع الجزائر في شمال""يقع قي غرب الجزائر""لون السماء في الجزائر",
 
              "عبد الهادي مصمم البرنامج لقبه""صمم البرنامج في منتدى فيجوال بيسك لكل ""في القرن مرة و في الدقيقة مرتين",
 
              "يحمل قنطارا و لا يحمل مسمارا""و ذا النون من هو""لو نجا منها احد لنجا منها ""نبي بن نبي بن نبي بن نبي",
 
              "جمع اخطبوط""مفرد نساء""جمع عندليب""ابن الجمار""عاصمة فلسطين"

و الاجابات في مصفوفة اخرى 
PHP كود :
 Rep = {"الجزائر * تونس*طرابلس * القاهرة""الدينار * الدولار * الجنيه *الدرهم""تبون*بوتفليقة*قيس سعيد * السراج",
 
              "الاخضر * الازرق * الاصفر * الاسود""أحمر * ابيض * اسود * بني""افريقيا * اوروبا*اسيا* امريكا",
 
              "المغرب * تونس * مالي * ليبيا""أزرق * احمر * اسود * اصفر""بهاب * وهاب * رهاب * ذهاب",
 
              "العرب * العجم * الغرب * العزب""القاف * النقطة * اللام * الثانية""السفينة * الماء * الكلمة * الرافعة",
 
              "يونس * محمد * موسى*عيسى""سعد * معاذ * ابوبكر * علي""يوسف * محمد * آدم * نوح""اخاطيط * اخابيط * اخاطبوطات * اخوطات",
 
             "امرأة * نسوة * نسية * منسية""عناديل * عندليبات *عندولبون * معاديل""جحش*حمير * حرو* محمر""القدس*عمان* تل ابيب * رام الله"}
 
   

بحيث كل عنصر من الاجابات فيه اربعة عناصر بينها علامة * وهي التي سنقسم بها العنصر هذا الى مصفوفة من اربع باستعمال الدالة 

PHP كود :
Split("*"

كيف يتم الاستدعاء العشوائي ؟
اولا سنسخ العنصر هذه في   ArrayList لماذا ؟ ببساطة لكي يتم حذف العنصر بعد استخدامه وهذا من خلال الكود التالي

PHP كود :
 For Each item As String In Qus
            Questions
.Add(item)
 
       Next

        For Each item 
As String In Rep
            Reponses
.Add(item)
 
       Next 


الان سننشء دالة sub  من اجل استدعاء عشوائي للسؤال و ضمان عدم تكرراه وهذا من خلال انشاء عدد عشوائي من البداية 0 الى حد المصفوفة و ليس الى رقم معين لانه حين التناقص لا نريد ان يتعطل البرنامج 

PHP كود :
Dim Nran As New Random
   

الان في دالة توليد الاسئلة سنكتب التالي"

PHP كود :
 ' اختيار عشواي للاسئلة*-
        Dim Nq = Nran.Next(0, Questions.Count)
        RichTextBox1.Text = Questions(Nq)
        Questions.RemoveAt(Nq)

        ' 
تقسيم الاجابات على الخاناات الارابع
        Rarr 
Reponses(Nq).ToString.Split("*")
 
       LabA.Text Rarr(0)
 
       LabB.Text Rarr(1)
 
       LabC.Text Rarr(2)
 
       LabD.Text Rarr(3)
 
       Reponses.RemoveAt(Nq


لما يختار رقم عشوائي  سياخد العنصر من مصوفة الاسئلة و يضعه في  richtext  و يحذف العنصر من المصفوفة
الان سنقوم باخد ترتيب العنصر من مصفوفة الاجابات  و نقوم بتقسيمه الى اربع عناصر كل عنصر في ليبال

الان ........ دائما الاجابة الصحية هي في الزر 1 .......... و هذا لتجنب دالة if  يعني كود الصح  دائما في الزر 1  اما البقية 2.3.4 دائما خطا مهما كان النص
اللقطة اذن كيف ؟
نغير موقع الازرار ...........
كبف العمل ؟

يتبع........
ازرار الاجابة  يمكن ان تضعها باي شكل

في حالتنا وضعت صورة كخلفية  وسطها فارغ شفاف يتلائم مع خلفية صورة البرنامج

[صورة مرفقة: p_168674ohe1.png]

و في داخلها ليبال عادي ........... خلفيته اسود
وهذا من اجل تغيير اللون في التصحيح

الان سنحفظ الصور و اليبالات في مصفوفات
PHP كود :
PicArry = {PictureBox1PictureBox2PictureBox3PictureBox4}
 
       LabName = {LabALabBLabCLabD}
 
        

الان ننشيء دالة جديدة لتغغير المواقع
سنحفظ فيها مواقع الصور في   arrylist  ثم عشوائيا نغيرها


PHP كود :
 'تفريغ المصفوات
        LabPos.Clear()
        picPos.Clear()

        '
تسجيل موقع اليبال
        For Each lab 
As Label In LabName
            LabPos
.Add(lab.Location)
 
       Next
        
'تسجيل موقع الصور

        For Each pic As PictureBox In PicArry
            picPos.Add(pic.Location)
        Next

        '
تغيير عشواي للصور و لكاتها 
        For i 
0 To 3
            Dim Posr 
Nran.Next(0LabPos.Count)
 
           LabName(i).Location LabPos(Posr)
 
           PicArry(i).Location picPos(Posr)
 
           LabPos.RemoveAt(Posr)
 
           picPos.RemoveAt(Posr)
 
       Next 


 في مجريات البرنامج سنغغير لون الصور و الليبالات لذلك كلما غيرنا السؤال يجب ان يكون لون الصور و اليبالات اسود و تكون كلها ظاهرة
لذلك سنضيف لدالة توليد الاسئلة 

PHP كود :
  For 0 To 3
            PicArry
(i).BackColor Color.Black
            LabName
(i).BackColor Color.Black
            PicArry
(i).Visible True
            LabName
(i).Visible True
        Next 

----يتبع
الان في البداية  نضع صور الاتصال بصديق و حذف اجابتين و الجمهور مخفية 
سنشغل تايمر نجعله  لمدة 20 ثانية  و هي مدة موسيقى المقدمة 

في المقدمة سنجعل شعار المسابقة متحرك 

[صورة مرفقة: p_1686vj7ig1.gif]

و سنضعها بحجم و مكان معين في البرنامج
PHP كود :
PicLogo.Visible True
        PicLogo
.Image My.Resources.logo
        PicLogo
.Location = New Point(34560)
 
       PicLogo.Size = New Size(200200)
 
      

و سنغير موقع اللوغو بعد تشغير تايمر البداية 
PHP كود :
Sub imgLogo()
 
       PicLogo.Image My.Resources.logo
        PicLogo
.Location = New Point(1010)
 
       PicLogo.Size = New Size(8080)
 
       LabSomme.Visible False
    End Sub 


سنضيف form-load  تشغيل تايمر 

PHP كود :
TimerSatrt.Start() 

الان في التايمر المعني  سنفعل دالة توليد الاسلة  و دالة تغيير موقع الاجابات و نجعل شعار المقدمة في الجانب العلوي
و سنظهر ازار المساعدة 

PHP كود :
Pict50.Visible True
        Pictjomhr
.Visible True
        PictTel
.Visible True
        Randqustions
()
 
       PosLab()
 
       TimerSatrt.Stop()
 
       imgLogo() 
متابع إن شاء الله
سلاماتي و تحياتي واحتراماتي لك أخي عبد الهادي بهاب و لكل سكّان مدينة بشّار العريقة
الله الموفّق و الله المستعان
الان سنشغل موسيقى خلال التفكير في دالة توليد الاسئلة و ايضا نوسط السؤال في richbox
----- تحية طيبة للاخ بلدي ----------

PHP كود :
 My.Computer.Audio.Play(My.Resources.refAudioPlayMode.Background)
 
       RichTextBox1.SelectionAlignment HorizontalAlignment.Center 

لما تظهر الاسئلة  سيقوم المستخدم باختيار اجابة معينة 
لما يضغط عليها منها ستبدا تغير لونها لذلك سنلجا الى تايمر  من اجل ذلك
سنعرف متغير start =0  ليبدا اضافة 1 في التايمر 
اولا كي لا نكرر تايمر لكل اجابة  سنعرف متغير ref  لما يضغط على الزر الاول سيكون رقمه 0 و هو رقمه في مصفوفة الاسماء التي عرفهناها في load
و التايمر سيغل العنر المراد و يغير لونه عشر مرات مثلا 
ثم بعد 1 مرات  سيصحح لذلك سنعرف متغير جديد jab و هي من صيغة صح  او خطا Boolean  
الزر الاول سيكون true اما البقية false

 في الليبال الاول و الصورة الاولى 
PHP كود :
Timer1.Start()
 
       ref 0
        Start 
1
        jab 
True 

في الليبال الثاني و الصورة الثانية 
PHP كود :
Timer1.Start()
 
       ref 1
        Start 
1
        jab 
False 


في الليبال الثالث و الصورة الثالثة 
PHP كود :
 Timer1.Start()
 
       ref 3
        Start 
1
        jab 
False 

في الليبال الرابع و الصورة الرابعة
PHP كود :
Timer1.Start()
 
       ref 2
        Start 
1
        jab 
False 


الان في التايمر سيشغل تايمر 2 من اجل تغيير اللون يعني التايمر الاول يعطيها اللون الاخضر Color.Green و التايمر  يعطيها اللون Color.GreenYellow
بعد 10 مرات 
نوقف التايمر 1 و 2  و نحدد الجواب الصح و الخطا 
لما يكون الصح  نشغل صوت الصح و في ليسبوكس سنحدد القيمة الاولى من الاسفل
هناك قيمة Nqus رقم السؤال الذي سيزيد كلما فعلنا دالة التوليد    
و نشغل تايمر الانتظار وهي مدة التصفيق .الخ  و بعدها سنفعل السؤال التالي اي تغيل الدالة 
لذلك سيكون التحديد كالتالي

PHP كود :
My.Computer.Audio.Play(My.Resources.sahAudioPlayMode.Background)
 
               ListBox1.SelectedIndex 15 Nqus
                TimerRusit
.Start() 

اما في حالة الخطا jab=false
و لان البرنامج لا يقبل الاعادة اي ان الخطا قاتل
 سنشغل موسيقى الخطا  سنظهر له شهادة شرفية 



في الفراغ في المبلغ  سنضيف ليبال بعد ان نظهره و نضع فيه مكان التحديد في اليسبوكس

PHP كود :
LabSomme.Text ListBox1.Text
LabSomme
.Visible True 

حتى لا نلجا الى انشاء فورم جديد و و و و .......... الصورة اللوغو هي التي سنتعامل معها بتغيير حجمها و موقعها و محتواها

PHP كود :
PicLogo.Image My.Resources.felictation
                PicLogo
.Location = New Point(3020)
 
               PicLogo.Size = New Size(935450

الان ستبقى الشهادة لمدة معينة مما يتطلب تايمر جديد وهو الذي سيعيدنا الى المرحلة الاولى 
اي الاعادة من جديد 

و بالتالي الكود الاجمالي للتايمر 1 هو 

PHP كود :
 PicArry(ref).BackColor Color.Green
        LabName
(ref).BackColor Color.Green
        Start 
+= 1
        Timer1
.Stop()
 
       Timer2.Start()
 
       If Start >= 10 Then
            Timer1
.Stop()
 
           Timer2.Stop()
 
           ' في حالة الصح
            If jab = True Then
                My.Computer.Audio.Play(My.Resources.sah, AudioPlayMode.Background)
                ListBox1.SelectedIndex = 15 - Nqus
                TimerRusit.Start()
                '
حالة الخطأ في 
            ElseIf jab 
False Then
                PicArry
(ref).BackColor Color.OrangeRed
                LabName
(ref).BackColor Color.OrangeRed
                My
.Computer.Audio.Play(My.Resources.no1AudioPlayMode.Background)
 
               PicLogo.Image My.Resources.felictation
                PicLogo
.Location = New Point(3020)
 
               PicLogo.Size = New Size(935450)
 
               LabSomme.Text ListBox1.Text
                LabSomme
.Visible True
                Timerfin
.Start()
 
           End If
 
       End If 
 و التايمر 2
PHP كود :
PicArry(ref).BackColor Color.GreenYellow
        LabName
(ref).BackColor Color.GreenYellow
        Start 
+= 1
        Timer2
.Stop()
 
       Timer1.Start() 


 و تايمر النهائي او الاعادة  سيعيد كل شيء الى 0 

PHP كود :
PicLogo.Visible False
        LabSomme
.Visible False
        Nqus 
0
        LabA
.Text ""
 
       LabB.Text ""
 
       LabC.Text ""
 
       LabD.Text ""
 
       RichTextBox1.Text ""
 
       ListBox1.SelectedIndex 15
        PicArry 
= {PictureBox1PictureBox2PictureBox3PictureBox4}
 
       LabName = {LabALabBLabCLabD}
 
       For i 0 To 3
            LabName
(i).BackColor Color.Black
            PicArry
(i).BackColor Color.Black
        Next
       
        Timerfin
.Stop()

 
       Form1_Load(ee)
 
      
        TimerSatrt
.Start() 

مع ارار المساعدة

مع زرحذف اجابتين 

[صورة مرفقة: p_1686ckhyj1.png]

يكفي ان نخفي الصورة 2 و 3 مع النص 2 و 3 و تغيل موسيقى 

PHP كود :
 My.Computer.Audio.Play(My.Resources.DRUMROLLAudioPlayMode.Background)

 
       LabB.Visible False
        LabC
.Visible False
        PictureBox2
.Visible False
        PictureBox3
.Visible False
        Pictjomhr
.Visible False 

مع زر الاتصال بصديق

[صورة مرفقة: p_1686a9meq1.png]

 سنشغل صوت الاتصال
و نغير صورة اللوغو الى صورة اتصال هاتفي

[صورة مرفقة: telephone-sonne.gif]

ثم  نشغل تايمر الاتصال  الذي سيظهر رسالة تظهر فيه نص اليبال الاول 

لذلط في زر الاتصال بصديق نزرع التالي 

PHP كود :
PicLogo.Image My.Resources.dring
        PicLogo
.Location = New Point(29080)
 
       PicLogo.Size = New Size(301177)
 
       My.Computer.Audio.Play(My.Resources.telAudioPlayMode.Background)
 
       TimerTel.Start()
 
       PictTel.Visible False 

سنخفي الزر مباشرة بعد الضغط 

في التايمر الخص بالاتصال

PHP كود :
TimerTel.Stop()
 
       MessageBox.Show("  الصديق ينصح بالجواب التالي   " vbNewLine LabA.Text"الاتصال بصديق")
 
       imgLogo() 

سظيهر رسالة ثم يعيد اللوغو الى مكانه
الان في زر الجمهور 
نزرع كود اظهر فورم جديد و اخفاء الور بعدها
PHP كود :
 Me.TopMost True
        Form2
.Show()
 
       Pict50.Visible False 


وهو ما يتطلب منا انشاء فورروم جديد يظهر كديالوخ 
فيه اربع صور بعة اعمدة الاطول للجواب الصح 



لذلك ننشء فورم جديد form2 و نضع فيه اربعة صورة ملونة بشكل مختلف فوقها اربعة ليبالات 
دائما الصورة الاولى هي الصح 
لذلك سنعطي اليبالات الاربعة قيمة او نصوص اللبلات الرابع في الفورم الاول

PHP كود :
Label1.Text Form1.LabA.Text
        Label2
.Text Form1.LabB.Text
        Label3
.Text Form1.LabC.Text
        Label4
.Text Form1.LabD.Text 

نشغل موسيى التفكير
PHP كود :
 My.Computer.Audio.Play(My.Resources.refAudioPlayMode.Background

الان سنحفظ اسماء الصور و الليبالات و موقعها 
PHP كود :
Pic2Arry = {PictureBox1PictureBox2PictureBox3PictureBox4}
 
       Labpos = {Label1Label2Label3Label4}
 
       ' موقع الصور
        PicLoc.Add(PictureBox1.Location)
        PicLoc.Add(PictureBox2.Location)
        PicLoc.Add(PictureBox3.Location)
        PicLoc.Add(PictureBox4.Location)
        ' 
موقغ الليبال   
        LabLoc
.Add(Label1.Location)
 
       LabLoc.Add(Label2.Location)
 
       LabLoc.Add(Label3.Location)
 
       LabLoc.Add(Label4.Location

الان نفس العمل سنغير موقعها عشوائيا

PHP كود :
For 0 To 3
            Dim p 
rand.Next(0PicLoc.Count)
 
           Pic2Arry(i).Location PicLoc(p)
 
           Labpos(i).Location LabLoc(p)
 
           PicLoc.RemoveAt(p)
 
           LabLoc.RemoveAt(p)
 
       Next 

و نجعل الفورم 2 هو في الاعلى 
PHP كود :
 Me.TopMost True 

الان سنجعل الاطوال تزيد تدريجيا لذلك نشغل تايمر و نضع فيه 

PHP كود :
Hg += 10
        PictureBox1
.Size = New Size(30Hg 35)
 
       PictureBox2.Size = New Size(30Hg 10)
 
       PictureBox3.Size = New Size(30Hg 5)
 
       PictureBox4.Size = New Size(30Hg)
 
       If Hg >= 150 Then
            TimProg
.Stop()
 
       End If 
اي لما يكون طول العمود الصح 150 يتوقف التايمر وهو الجواب الصح

للنهاية

سنعلن عن المتغيرات في الكود العام 

PHP كود :
 Dim Nqus As Integer 0
    Dim Qus
(), Rep(), Rarr() As String
    Dim Questions
ReponsesLabPospicPosTxtBox As New ArrayList
    Dim Nran 
As New Random
    Dim Start
ref As Integer
    Dim PicArry
() As PictureBox
    Dim LabName
() As Label
    Dim jab 
As Boolean False 
الشكل النهائي للبرنامج 





الملف السورد المفتوح و الاستفادة 
[attachment=25446]


--- اشكر الاستاذ بلدي على تهذيب الملف -------

كلمة السر
عبد الهادي بهاب

بالتوفيق في  مشاريعكم
ما شاء الله

ربنا يبارك فيك
(14-08-20, 12:56 AM)بلدي كتب : [ -> ]ما شاء الله

ربنا يبارك فيك

تحية طيبة لك استاذي و مشارك معنا في الاجر

(14-08-20, 12:16 AM)عبد العزيز البسكري كتب : [ -> ]
متابع إن شاء الله
سلاماتي و تحياتي واحتراماتي لك أخي عبد الهادي بهاب و لكل سكّان مدينة بشّار العريقة
الله الموفّق و الله المستعان

الف تحية لاحفاد عقبة  بن نافع  شكرا لمتابعتك استاذ عبد العزيز 
ربي وقفنا و يوفقكم
تحية جد طيبة و كثيرة جدا
للاستاذ بلدي على النصائح و التعديلات التي اضافت رونقا
للملف ة المشروع
الصفحات : 1 2