الشبكة العربية لمطوري الألعاب

خبير مشرف أسامة السلمان مشاركة 71

اخي الكريم اعذرني لكني مبتدأ وحصلت لخبطة عندي
هل يمكنك أن تعطي مراجعة بسيطة سريعة عن الموضوع مع شرح الكود وشكرا

أسامة السلمان
مطور ألعاب ومهندس برمجيات.
للتواصل: https://twitter.com/TheDorgam
بما أن الله على كل شيء قدير ؛ إذا ، ليس هناك شيء يدعى "المستحيل".

خبير  السيد فتحى السيد مشاركة 72

راجع هذا الدرس وان لم تستطيع قولىhttp://www.agdn-online.com/communities.aspx?view=posts&threadid=936&page=6

خبير  مهند محمد علي مشاركة 73

ساقدم لك شرح مبسط اخي اسامة
اعرف ان الامر مربك قليلا اول مره.

السطر يحتوي علي قسمين
القسم الاول يخصتص بالعرض
انظر هذه الصوره






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

If PictureBox1.Left + PictureBox1.Width = PictureBox2.Left Then Exit Sub

هذا بالنسبة للجزء الاول
اما الجزء الثاني من الشرط فهو اصعب قليلا في الفهم من الجزء الاول لذلك ركز تركيزا تاما لما ساقولة (ساكتبة)

انظر الي الصوره







 


تلاحظ ان نقطه تحكم الصوره في الجهه الاعلي من الجانب الايسر بالنسبة لك الايمن للصندوق
ونحن نريد ان لا تتقابل نقاط التحكم التي للصندوقين نقول اذا نقطه التحكم الصندوق الاول - طول الصندول الاول اصغر من احداثي نقطه تحكم الصندوق الثاني اذن لا يسمح بمرور الصندوق المتحرك

فيصبح الكود


    If PictureBox1.Left + PictureBox1.Width = PictureBox2.Left And PictureBox1.Top - PictureBox1.Height < PictureBox2.Top Then Exit Sub

تلاحظ اننا نستطيع ان نمر من تحت الصندوق الثاني ولا نستطيع ان نمر من فوقه لماذا؟؟؟؟

هذا المشكلة سيخبرنا  عنها ويحلها السيد فتحي .
اليك المايكروفون
احم احم...

خبير  السيد فتحى السيد مشاركة 74

تمام  اخى المهند شرح رائع 

وفي 26 ابريل 2011 10:30 م، ظهر شبح ابتسامة على وجه المهند وهو يقول:

هذا المشكلة سيخبرنا  عنها ويحلها السيد فتحي .اليك المايكروفوناحم احم...

نفس فكرة الشرط الثانى سوف نضيف شرط ثالث  وهو ان نقطة التحكم للصندوق المتحرك تكون اكبر من نقطه الصندوق الثابت - طول الصندوق الثابت 

And PictureBox1.Top > PictureBox2.Top - PictureBox2.Height
 فيصبح الشرط كالأتى

If PictureBox1.Left + PictureBox1.Width = PictureBox2.Left And PictureBox1.Top - PictureBox1.Height < PictureBox2.Top And PictureBox1.Top > PictureBox2.Top - PictureBox2.Height Then Exit Sub

الأن المطلوب تنفيذ نفس الكود على الأتجاه الأخر

خبير مشرف أسامة السلمان مشاركة 75

أما في 23/جمادى الأولى/1432 11:30 م، فقد تنهد المهند بارتياح وهو يرد:

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

اولا مالمقصود بنقطة التحكم؟ أهي دائما الركن الأيسر العلوي ؟


في 23/جمادى الأولى/1432 11:30 م، غمغم المهند باستغراب قائلاً:

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

هل تقصد أنه تولدت لنا مشكلة وهي تلاقي النقطتين يعني كأن الصندوقين اصبحا صندوق واحد؟


بتاريخ 23/جمادى الأولى/1432 11:30 م، قطب المهند حاجبيه بشدة وهو يقول:

لذا هنا يجب ان نزيد العرض الي احداثي الصندوق المتحرك
هل من المقصود أنه يجب تساوي عرضي الصندوقين؟لم أفهم هذه الجملة تماما


وفي 23/جمادى الأولى/1432 11:30 م، أعرب المهند عن رأيه بالموقف كالآتي:

If PictureBox1.Left + PictureBox1.Width = PictureBox2.Left Then Exit Sub

مرات تكتبوا بعد اسم الصورة left ومرة top ومرة width مالمقصود بكل هذا؟

إذا فهمت هذه الأشياء مبدئيا إنشاء الله سأستوعب الذي بعده

بدأت الدروس تصعب 😢

أسامة السلمان
مطور ألعاب ومهندس برمجيات.
للتواصل: https://twitter.com/TheDorgam
بما أن الله على كل شيء قدير ؛ إذا ، ليس هناك شيء يدعى "المستحيل".

خبير  السيد فتحى السيد مشاركة 76

في 27 ابريل 2011 06:08 م، غمغم أسامة السلمان باستغراب قائلاً:

مالمقصود بنقطة التحكم؟ أهي دائما الركن الأيسر العلوي ؟
 فى مثالنا هذا نعم هى الركن الأيسر العلوي لكن فى الثرى دى ستكون اسفل فهى تتغير حسب المجسم وعليك معرفة هذه النقطة لكى تعرف تتعامل مع التصادم

خبير مشرف أسامة السلمان مشاركة 77

بتاريخ 24/جمادى الأولى/1432 07:56 م، قطب السيد فتحى السيد حاجبيه بشدة وهو يقول:

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

يعني لكل مجسم نقطة تحكم خاصة به فالمربع له نقطة والمثلث له نقطة صحيح؟

و أرجو الإجابة على باقي الأسئلة

أسامة السلمان
مطور ألعاب ومهندس برمجيات.
للتواصل: https://twitter.com/TheDorgam
بما أن الله على كل شيء قدير ؛ إذا ، ليس هناك شيء يدعى "المستحيل".

خبير  السيد فتحى السيد مشاركة 78

وفي 27 ابريل 2011 07:05 م، أعرب أسامة السلمان عن رأيه بالموقف كالآتي:

يعني لكل مجسم نقطة تحكم خاصة به فالمربع له نقطة والمثلث له نقطة صحيح؟
نعم لكل مجسم نقطه خاصة بهاما باقى الأسئلة بعد دقائق

خبير  السيد فتحى السيد مشاركة 79

في 27 ابريل 2011 07:23 م، قال السيد فتحى السيد بهدوء وتؤدة:

هل تقصد أنه تولدت لنا مشكلة وهي تلاقي النقطتين يعني كأن الصندوقين اصبحا صندوق واحد؟
 نعم ولهاذا نجمع العرض مع نقطة التحكم


في 27 ابريل 2011 07:23 م، عقد السيد فتحى السيد حاجبيه بتفكير وقال:

هل من المقصود أنه يجب تساوي عرضي الصندوقين؟لم أفهم هذه الجملة تماما

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

وفي 27 ابريل 2011 07:23 م، قال السيد فتحى السيد متحمساً:

مرات تكتبوا بعد اسم الصورة left ومرة top ومرة width مالمقصود بكل هذا؟

هذا حسب اتجاه التصادم

خبير  السيد فتحى السيد مشاركة 80

السلام عليكم
 
هذا كود التصادم كامل لكل الإتجهاد
 



Public
Class Form1
PrivateSub Form1_KeyDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) HandlesMe.KeyDown
SelectCase e.KeyCode
Case Keys.Rightright_()

Case Keys.Leftleft_()

Case Keys.Upup_()

Case Keys.Downdown_()


Case Keys.Escape
End
EndSelect
EndSub
PrivateSub right_()
If PictureBox1.Left + PictureBox1.Width = PictureBox2.Left And PictureBox1.Top - PictureBox1.Height < PictureBox2.Top And PictureBox1.Top > PictureBox2.Top - PictureBox2.Height ThenExitSubPictureBox1.Left += 10

If PictureBox1.Left > 750 Then PictureBox1.Left = 750
EndSub
PrivateSub left_()
If PictureBox1.Left = PictureBox2.Right And PictureBox1.Top - PictureBox1.Height < PictureBox2.Top And PictureBox1.Top > PictureBox2.Top - PictureBox2.Height ThenExitSubPictureBox1.Left -= 10

If PictureBox1.Left < 0 Then PictureBox1.Left = 0
EndSub
PrivateSub up_()
If PictureBox1.Top = PictureBox2.Top + PictureBox2.Height And PictureBox1.Left < PictureBox2.Left + PictureBox2.Width And PictureBox1.Left + PictureBox1.Width > PictureBox2.Left ThenExitSubPictureBox1.Top -= 10

If PictureBox1.Top < 0 Then PictureBox1.Top = 0
EndSub
PrivateSub down_()
If PictureBox1.Top + PictureBox1.Height = PictureBox2.Top And PictureBox1.Left < PictureBox2.Left + PictureBox2.Width And PictureBox1.Left + PictureBox1.Width > PictureBox2.Left ThenExitSubPictureBox1.Top += 10

If PictureBox1.Top > 500 Then PictureBox1.Top = 500
EndSubEnd
Class
 
 
 
وهذا المشروع كامل