المشاركات : 219
المواضيع 53
الإنتساب : Jul 2020
السمعة :
104
الشكر: 260
تم شكره 635 مرات في 218 مشاركات
السلام عليكم
فيه لعبة ذكاء مشهورة خاصة باعواد الثقاب يتم تحريك عددا منها لتحقيق شرط معين
سنحاول معكم تصميمها بلغة vb
يتبع
لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
المشاركات : 219
المواضيع 53
الإنتساب : Jul 2020
السمعة :
104
الشكر: 260
تم شكره 635 مرات في 218 مشاركات
بعد عناء طويل
تحصلت على هذا الشكل
ساعد شرحا مفصلا عن كيفية التصميم و البرمجة المعتمدة
الى ذلك الحين تحياتي
لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
المشاركات : 219
المواضيع 53
الإنتساب : Jul 2020
السمعة :
104
الشكر: 260
تم شكره 635 مرات في 218 مشاركات
17-08-20, 02:12 PM
(آخر تعديل لهذه المشاركة : 17-08-20, 02:55 PM {2} بواسطة عبد الهادي بهاب.)
في البداية نضع الصور على شكل 9 مربعات
نضيف علبة فارغة لوضع الاعواد التي يتم تحريكها
نضع فيه ستة انصاف اعواد
نضيف richtextbox لعرض نص اللغز
و ليبال لعرض النتائج
في الاسفل مجموعة صور ملونة عادية لعرض صحة او خطا الحل
في البداية سنعلن عن متغيرات
مصفوفة لصور لاعواد الكبريت
مصفوفة للاعاود المتحركة
مصفوفة للمربعات الصفراء
مصفوفة للمربعات الصغيرة
مصفوفة للمربعات المتوسطة
مصفوفة للاسئلة
متغيرات متعلقة بعدد الكليكات clic
رقم السؤال NumbeProblem
رقم العواد المزاحة AllumD
مجموع المربعات الصغيرة SommeCp
مجموع المربعات المتوسطة SommeCm
النتيجة score
المربع الكبير cgrand
و في الاخير نوع الجواب صح ا خطا joib
PHP كود :
Dim Arryallumet, arryallumetdelet, CaseProg As PictureBox() Dim Acp, Acm As Integer() Dim Problems(15) As String Dim Reponse, NumbeProblem, AllumD, SommeCp, SommeCm, clic, score, cgrand As Integer Dim joib As Boolean
سنضع في المصفوفات ما يقابلها من صور و ارقام
في form_load
PHP كود :
' allumet Arryallumet = {PictureBox7, PictureBox8, PictureBox9, PictureBox10, PictureBox11, PictureBox12, PictureBox13, PictureBox14, PictureBox15, PictureBox16, PictureBox17, PictureBox18, PictureBox19, PictureBox20, PictureBox21, PictureBox22, PictureBox23, PictureBox24, PictureBox25, PictureBox26, PictureBox27, PictureBox28, PictureBox29, PictureBox30}
' allumet delet arryallumetdelet = {PictureBox2, PictureBox3, PictureBox4, PictureBox5, PictureBox6} ' activite corect CaseProg = {PictureBox31, PictureBox32, PictureBox33, PictureBox34, PictureBox35, PictureBox36, PictureBox37, PictureBox38, PictureBox39, PictureBox40, PictureBox41, PictureBox42, PictureBox43, PictureBox44, PictureBox45, PictureBox46}
' exercices
Problems = {"احذف عودين لتحصل على 8 مريعات صغار", "احذف عودين لتحصل على 6 مربعات صغار و مربع كبير و 2 مربعين متوسطين", "احذف عودين لتحصل على 6 مربعات صغار و مربع كبير فقط", "احذف عودين لتحصل على 7 مربعات صغار", "احذف 3 عيدان لتحصل على مربع كبير و 5 مربعات صغار", "احذف 3 عيدان لتحصل على 5 مربعات صغار و مربع متوسط و مربع كبير", "احذف 3 عيدان لتحصل على 6 مربعات صغار", "احذف 4 عيدان لتحصل على 7 مربعات صغار و مربعين متوسطين", "احذف 4 عيدان لتحصل على مربع كبيرو 3 مربعات صغار", "احذف 4 عيدان لتحصل على 4 مربعات صغار و مربع كبير", "احذف 4 عيدان لتحصل على مربع كبير و مربع متوسط و 4 مربعات صغار", "احذف 4 عيدان لتحصل على مربع كبيرو مربع متوسط و 5 مربعات صغار", "احذف 4 عيدان لتحصل على 5 مربعات صغار فقط", "احذف 5 عيدان لتحصل على مربع كبيرو 3 مربعات صغار", "احذف 5 عيدان لتحصل على مربع كبير و 4 مربعات صغار", "احذف 5 عيدان لتحصل على 5 مربعات صغار و مربعين متوسطين", "يمكنك اعادة التمارين من جديد" }
جميل جدا
الدالة الاساسية و هي الاسئلة
سنفترض ان لدينا 9 مربعات صغيرة
4 مربعات متوسطة
و مربع كبير
و لكل منها نعطي قيمة 1 و نضعها في مصفاتها
لاحظ الشكل التالي للتفهم
نعبر عنه بالكود
PHP كود :
Acp = {1, 1, 1, 1, 1, 1, 1, 1, 1} Acm = {1, 1, 1, 1} cgrand = 1
و معنى ذلك اذا نقص ضلع من المربع المعني ستصبح قيمة المربع الصغير المتعلق به 0 و المربع المتوسط المتعلق به 0 و اذا كانت له علاقة بالمربع الكبير 0
و بالتالي لما نجمع العدد سنجد كم من مربع بقي
هل مفهوم ؟؟؟؟؟؟
يعني لما اضغط في عود ثقاب في
لذلك في دالة الاسئلة سنضع القيم الاولية لاي سؤال 0
و نخفي كل اعواد العلية و نظهر كل اعواد اللعبة
و نضع نص السؤال في richtext
PHP كود :
Sub Questions() Acp = {1, 1, 1, 1, 1, 1, 1, 1, 1} Acm = {1, 1, 1, 1} cgrand = 1 '''''''''''''''''''''' ''''''''''''''''''' clic = 0 AllumD = 0 SommeCm = 0 SommeCp = 0 For i = 0 To 23 Arryallumet(i).Visible = True Next
For i = 0 To 4 arryallumetdelet(i).Visible = False Next RichTextBox1.Text = Problems(NumbeProblem) NumbeProblem += 1 Labelques.Text = " الوضعية رقم " & NumbeProblem RichTextBox1.SelectionAlignment = 2
End Sub
لما يظهر السؤال يجب الضغط على اعواد الثقاب
لذل في كل عود سنعطي قيمة 0 لكل مربع صغير متعلق به و 0 لكل مربع متوسط و المربع الكبير ايضا
مثال العود في اقصى اليسار اعلاه
PHP كود :
Acp(0) = 0 Acm(0) = 0 cgrand = 0 clic += 1 PictureBox7.Visible = False arryallumetdelet(AllumD).Visible = True AllumD += 1 verfication()
يقابلها الصورة
و سيكون عدد الكليك + 1
و عدد الاعواد المتحركة + 1
و بلالتالي سنخفي الصورة بها كما هي في مصفوفة العواد المتحركة
ثم نفعل دالة التصحيح vrefication
الان في دالة التصحيح
سنحسب مجموع المربعات الصغيرة
و مجموع المربعات المتوسطة
و قيمة المربع الكبير
PHP كود :
SommeCp = 0 SommeCm = 0
For i = 0 To 8 SommeCp = SommeCp + Acp(i) Next
For i = 0 To 3 SommeCm = SommeCm + Acm(i) Next
الان الاسئلة فيها ما يجب تحريك عودين
اذا سنقارن بعدد clic
لكلك لا حظ المجموعة الاواولى
إقتباس :"احذف عودين لتحصل على 8 مريعات صغار",
"احذف عودين لتحصل على 6 مربعات صغار و مربع كبير و 2 مربعين متوسطين",
"احذف عودين لتحصل على 6 مربعات صغار و مربع كبير فقط",
"احذف عودين لتحصل على 7 مربعات صغار",
في الشرط سنقول اذا كان عدد الككليكات هو 2 و رقم السؤال من 1 الى 4
راقب التالي
اذا كان السؤال الاول : اذا كان مجموع sommecp = 8 و soomecm =0 و cgrand=0 يعني يوجد 8 ممربعات صغيرة فقط فيظهر له ميساج الصح و الصورة في الاسفل يصبح صورتها صورة صح
وهكذا لبقية الاسئلة 16
و بالتالي دالة التصحيح تصبح
PHP كود :
Sub verfication() SommeCp = 0 SommeCm = 0
For i = 0 To 8 SommeCp = SommeCp + Acp(i) Next
For i = 0 To 3 SommeCm = SommeCm + Acm(i) Next
' تحريك عودين If clic = 2 And NumbeProblem < 5 Then ' الثانية الثالثة الرابعة الوضعية الاولى If NumbeProblem = 1 And SommeCp = 8 _ Or NumbeProblem = 2 And SommeCp = 6 And SommeCm = 2 And cgrand = 1 _ Or NumbeProblem = 3 And SommeCp = 6 And cgrand = 1 _ Or NumbeProblem = 4 And SommeCp = 7 Then joib = True Else joib = False End If Messag() ' تحريك 3 اعواد ElseIf clic = 3 And NumbeProblem > 4 And NumbeProblem < 8 Then ' الوضعية 5-6-7 If NumbeProblem = 5 And SommeCp = 7 And cgrand = 1 _ Or NumbeProblem = 6 And SommeCp = 5 And SommeCm = 1 And cgrand = 1 _ Or NumbeProblem = 7 And SommeCp = 6 Then joib = True Else joib = False End If Messag() ' تحريك 4 اعواد ElseIf clic = 4 And NumbeProblem > 7 And NumbeProblem < 13 Then ' الوضعية -11-12 8-9-10 If NumbeProblem = 8 And SommeCp = 7 And SommeCm = 2 _ Or NumbeProblem = 9 And SommeCp = 3 And cgrand = 1 _ Or NumbeProblem = 10 And SommeCp = 4 And cgrand = 1 _ Or NumbeProblem = 10 And SommeCp = 4 And SommeCm = 1 And cgrand = 1 _ Or NumbeProblem = 11 And SommeCp = 5 And SommeCm = 1 And cgrand = 1 _ Or NumbeProblem = 12 And SommeCp = 5 Then joib = True Else joib = False End If Messag() ' تحريك 5 اعواد ElseIf clic = 5 And NumbeProblem > 12 Then ' الوضعية 13-14-15 If NumbeProblem = 13 And SommeCp = 3 And cgrand = 1 _ Or NumbeProblem = 14 And SommeCp = 1 And cgrand = 1 _ Or NumbeProblem = 15 And SommeCp = 5 And SommeCm = 2 Then joib = True Else joib = False End If Messag() End If
If NumbeProblem = 17 Then MessageBox.Show("شكرا على تفاعلك مع اللعبة ممكن تعيد من جديد", "عبد الهادي بهاب") restart() End If End Sub
اذا كان في كل حالة نشغل ميساج الصح او الخطا
ثم ننتقل الى السؤال التالي
PHP كود :
Sub Messag() If joib = True Then score += 1 Labscore.Text = score MessageBox.Show("جميل جدا تابع تقدمك", "عبد الهادي بهاب") CaseProg(NumbeProblem - 1).Image = My.Resources.yes Else MessageBox.Show("بقي في الشكل" & vbNewLine & SommeCp & " مربعات صغيرة " & vbNewLine & SommeCm & " مربعات متوسطة " & vbNewLine & cgrand & " مربع كبير ", " للاسف لقد اخطات اعد من جديد ", MessageBoxButtons.OK, MessageBoxIcon.Information) CaseProg(NumbeProblem - 1).Image = My.Resources.no End If Questions() End Sub
اذا وصل الى السؤال الاخير سنظهر له ميساج الاعادة و نعيد من جديد
PHP كود :
Sub restart() NumbeProblem = 0 For i = 0 To 16 CaseProg(i).BackColor = Color.Yellow CaseProg(i).Image = Nothing Next Questions() End Sub
اظنني اتمتت شرح اكواد البرنامج
الملف السورس للتعديل و الاستفادة
alumat.rar (الحجم : 429.35 ك ب / التحميلات : 32)
mp = http://vb4arb.com/
بالتوفيق في مشاريعكم
لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
المشاركات : 2,329
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 14039
تم شكره 5671 مرات في 2269 مشاركات
كلمة شكر و تقيم لا تفيك حقك مشكور جدا على هذه الامثلة و جزاك الله عنا كل خير موفق انشاء الله .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
المشاركات : 219
المواضيع 53
الإنتساب : Jul 2020
السمعة :
104
الشكر: 260
تم شكره 635 مرات في 218 مشاركات
(17-08-20, 05:28 PM)asemshahen5 كتب : كلمة شكر و تقيم لا تفيك حقك مشكور جدا على هذه الامثلة و جزاك الله عنا كل خير موفق انشاء الله .
ما تعلمناه استاذ عاصم يجب ان نفيد به
شكرا على المرور الطيب
لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
المشاركات : 2,061
المواضيع 49
الإنتساب : Oct 2017
السمعة :
538
الشكر: 10647
تم شكره 5323 مرات في 2095 مشاركات
بارك الله بك اخي عبد الهادي على ماتقدمه
وجزاك الله كل الخير
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
المشاركات : 219
المواضيع 53
الإنتساب : Jul 2020
السمعة :
104
الشكر: 260
تم شكره 635 مرات في 218 مشاركات
(19-08-20, 12:48 AM)ابراهيم ايبو كتب : بارك الله بك اخي عبد الهادي على ماتقدمه
وجزاك الله كل الخير
شكرا استاذ ابراهيم
و منكم نتعلم
لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
|