تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
لعبة تحديد الكلمات
#31
بالنسبة للأداة RectangleShape1
اين اجدها في vb.net 2008
الرد }}}
تم الشكر بواسطة:
#32
السلام عليكم ورحمة الله وبركاته
أخي الكريم
عرفت مصفوفتين من نوع قائمة ليبل
الأولى LabelsList وتضم الليبل الخاص بالأحرف - عددهم 110
الثانية ColumnsList وتضم الليبل الخاصة بتلك التي تظهر فيها الكلمات بعد التأشير -عددهم 12
ثم عرفنا مصفوفة باسم ColumnIndex - عدد العناصر 3 - Verbs, Objects and Days
وعندما يتم اختيار الكلمة الصحيحة يتم إضافتها إلى الليبل الخاص بها عن طريق رقم المؤشر (Index) الخاص بكل كلمة حيث أن الكلمات مرتبة
داخل قائمة باسم WordsList
وللتوضيح سأضرب لك مثالا:
قام المستخدم باختيار كلمة FRIDAY
أي أنه اختار يوم فكيف سنضيفه
في البداية سنأخذ Index الخاص بكلمة FRIDAY داخل WordsList وقيمته 10 لأن Index يبدأ من الصفر
الآن يجب أن نعرف في أي مجموعة نضعه فنقسم 10 على 4 (عدد الكلمات في كل مجموعة) فتكون النتيجة (2.5) ونأخذ الرقم الصحيح ونهمل العدد العشري
فتصبح النتيجة 2 أي المجموعة الثالثة
حيث أن صفر للأولى وواحد للثانية واثنين للثالثة
الآن نأخذ القيمة الموجودة داخل المصفوفة (ColumnIndex(2
ستكون 8 أي الليبل 8 وسنضع في القيمة بالشكل التالي
كود :
ColumnsList.Item(8).Text = "FRIDAY"
ولكي لا يقوم المستخدم باختيار الكلمة أكثر من مرة قمت بتعريف قائمة أخرى باسم ResultList
فكل كلمة يتم اختيارها سوف يقوم البرنامج بالتأكد هل هي موجودة في القائمة
فإذا لم تكن موجودة فسوف يضيفها إلى القائمة وأيضا الليبل الخاص بها وإلا فسيخبرك بأن الكلمة قد تم اختيارها سابقا
وأيضا من هذه القائمة استفدنا من معرفة هل تم اختيار كافة الكلمات أم لا وذلك
بالتأكد من عدد العناصر فإذا وصل إلى 12 عنصر فهذا يعني أن المستخدم قد قام باختيار جميع الكلمات

وعندها ستظهر الرسالة باكتمال اللعبة....

بالتوفيق
الرد }}}
تم الشكر بواسطة:
#33
aftfm كتب :بالنسبة للأداة RectangleShape1
اين اجدها في vb.net 2008

السلام عليكم ورحمة الله وبركاته
أخي اعذرني فالنسخة التي لدي 2010
ولا أعرف إن كانت موجودة في 2008 أم لا
ننتظر أحد الأعضاء يساعدنا في هذا الموضوع


بالتوفيق
الرد }}}
تم الشكر بواسطة:
#34
جزاك الله خير على التوضيح والشرح

بارك الله فيك لكن واجهتني مشكلة في حالة قامي بتسمية الـ Label من 1 الى 110
مثلا قمت بتسميتهم lbl_1 الى lbl_110
وقمت بتعديل الكود حسب اسماء الـ lbael
لم يعطيني نتائج صحيحة
لماذا هل يشترط بقاء التسمية Label1 الى Label110
كما هي
الرد }}}
تم الشكر بواسطة:
#35
السلام عليكم ورحمة الله وبركاته

الأفضل بقاؤها كما هي
والسبب أن الكود يعتمد اعتمادا كليا على هذه المسميات

بالتوفيق
الرد }}}
تم الشكر بواسطة:
#36
جزاك الله خير وبارك الله فيك
الرد }}}
تم الشكر بواسطة:
#37
السلام عليكم ورحمة الله وبركاته

الاخ العزيز sooriaty03

عند تغيير المثال لشبكة اقل لمثال آخر واجهت بعض المشاكل
في اطوال الشبكة وبعض خانات اظهار الكلمات مثل الخانة 4 و7 و8 في المثال المرفق

اتمنى توضيح جميع النقاط في حالة لو اردنا تغيير او إنشاء مثال مشابه ولكن باطوال مختلفة للشبكة ولعدد الكلمات
أي اعطنا السنارة ولا تعطنا السمكة كما قال بعض الزملاء في المنتدى الكبير هذا
شاكرين لك حسن تعاونك وزادك الله علماً وقدراً


الملفات المرفقة
.rar   MatchingWordsNEW.rar (الحجم : 98.93 ك ب / التحميلات : 36)
الرد }}}
تم الشكر بواسطة:
#38
السلام عليكم ورحمة الله وبركاته

أخي الكريم
أول أمر ولعلها السمكة الأولى
هو أن تحدد أساسيات البرنامج - ما المطلوب وما هي الأدوات المستعملة وكم عددها - لأن هذا سيسهل عليك كثيرا
لأن أي تعديل عليه مستقبلا قد يكبدك وقتا وجهدا كنت تستطيع منذ البداية أن تتلافى ذلك
سأفترض بأن أساسيات برنامجك - مع أنني حتى الآن لا أعرفها تماما - هي تكوين شبكة من أحرف - لا أعرف حتى الآن عددها - تحتوي على كلمات معينة يقوم المستخدم بالبحث عنها فإذا كانت صحيحة يتم إدراجها تحت مسميات معينة وهي Verbs,Objects and Days
الآن نحدد الأدوات المستخدمة لذلك:
الأنسب في هذه الحالة أن نستخدم أداة Label
قمت بوضع Label1 حددت له بعض الخصائص كأن جعلت AutoSize يساوي False
وعرضه 44 × 41
الآن قمت بنسخ هذا الـ Label1 وعمل لصق له عدة مرات وفي كل مرة أقوم بصف ما تم لصقه إلى جوار ما قبله مستخدما الفأرة مع الضغط على زر alt للتحرك بحرية
ويجب هنا أن يتم صف الأدوات بالتلاصق التام مع بعضها البعض وإلا ستظهر مشاكل أثناء التنفيذ
بعد أن انتهينا من صف الأدوات قمت بفتح الملف Form1.Designer.vb
وقمت بإعادة ترتيب الأدوات ليسهل علي استدعاءها - لاحظ المثال الذي رفعته لك كيف قمت بترتيب الأدوات
حيث جعلت أول 12 ليبل هي تلك التي سنضيف إليها الكلمات ثم باقي الليبل 18 التي لاتهمنا ثم باقي الليبل الخاصة بالأحرف وعددها 110 ليبل وكلها مرتبة ترتيبا تصاعديا
انتهينا الآن من التصميم

الآن إلى كتابة الكود: كما قلت سابقا قمت بتعريف عدة متغيرات يعتمد عليه البرنامج
فأولها LabelsList التي تضم جميع الليبل الخاص بالأحرف
وهنا يأتي ترتيبي السابق لليبل حيث أنني طلبت من البرنامج استثناء أول 30 ليبل تجد ذلك في الأمر التالي لاحظ اللون الأحمر
كود :
LabelsList.AddRange(Me.Controls.OfType(Of Label)[color=#FF0000].Skip(30)[/color])
ثم متغير ColumnList وهي كما قلت أنها لليبل التي ستظهر فيها الكلمات التي تم التأشير عليها
وهنا أيضا يأتي دور الترتيب حيث أنني وضعتهم في مقدمة الأدوات فطلبت من البرنامج أن يأخذ أول 12 ليبل
وذلك بالأمر التالي - لاحظ اللون الأحمر
كود :
ColumnsList.AddRange(Me.Controls.OfType(Of Label)[color=#FF0000].Take(12)[/color])
بعد ذلك أضفت الكلمات إلى WordsList
الآن عرفت ثلاثة أحداث هي Mouse_Down,MouseMove and MouseUp
وهي للـ 110 ليبل الخاص بالأحرف
وهنا أهم العمليات ستجد أرقاما قد تسبب لك صداعا ولكن لا بأس سيتلاشى الصداع بإذن الله إذا عرفت ما هي الأرقام
أول الأرقام
كود :
StartingLabelLong = Math.Floor((Val(sender.Name.Substring([color=#FF0000]5[/color])) - [color=#0000FF]1[/color]) / [color=#00FF00]11[/color])
الرقم خمسة
هذا الرقم سيطلب رقم الليبل حيث أنه وبواسطة الأمر SubString سيأخذ الرقم الموجود بعد كلمة Label وحيث أن عدد حروف Label خمسة فإذن سيأخذ ما بعد خمسة إلى آخر اسم الليبل فإذا كان اسم الليبل Label1
فسوف يعطي الرقم 1 وإذا كان الاسم Label110 فسوف يعطي الرقم 110 - الأمر سهل أليس كذلك؟!!!Smile
ثاني الأرقام
الرقم واحد
وهو يقوم بطرح واحد من الرقم السابق لأن عدد الليبل في الصف 11 فلو بدأنا بالـ Label11 سيكون الرقم 11 سنقسمه على 11 (عدد الليبل في الصف) ستكون النتيجة 1 وهذا خطأ نحن ما زلنا في أول صف فلو أنقصنا واحد من القيمة 11 سيصبح الناتج 10 ثم سنقسمه على 11 ستكون النتيجة صفر وهو الصحيح
ثالث الأرقام وهو المهم جدا جدا وهو سبب الخطأ الذي ظهر لك حين غيرت عدد الليبل في الصف
هذا الرقم هو 11
وهو عدد الليبل الموجود في الصف الواحد فكلما قمت بتغيير عدد الليبل في الصف وجب عليك تغيير هذا الرقم


للموضوع تتمة إن شاء الله
واعذرني وذلك بسبب انشغالي
بالتوفيق
الرد }}}
تم الشكر بواسطة:
#39
بارك الله فيك جزاك الله الف خير
الرد }}}
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم