• 0
  • مالي خلق
  • أتهاوش
  • متضايق
  • مريض
  • مستانس
  • مستغرب
  • مشتط
  • أسولف
  • مغرم
  • معصب
  • منحرج
  • آكل
  • ابكي
  • ارقص
  • اصلي
  • استهبل
  • اضحك
  • اضحك  2
  • تعجبني
  • بضبطلك
  • رايق
  • زعلان
  • عبقري
  • نايم
  • طبيعي
  • كشخة
  • النتائج 1 إلى 7 من 7

    الموضوع: الدرس الثاني : كشف التصادم

    1. #1
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة

      الدرس الثاني : كشف التصادم

      بسم الله الرحمن الرحيم....

      نبدأ الموضوع الثاني من برمجة الالعاب : التصادم(Collision) بالبرمجة وليست crash ....

      ملاحظة / لن تستفيد شي من الدروس اذا لم تتعلم لغة البيسك ....خذها مني...اذا تبي تتعلم اللغة فيه كتاب في السوق اسمه "فيجوال بيسك 6 للمبتدأيين" اصدار مكتبة جرير ... انا قرأت الكتاب في 3 ايام وسويت برامج ماكنت اتوقعها

      قبل ذلك .... يجب دراسة الدرس السابق(التحريك) للأننا سوف نكمل من اخر درس فيه....

      ماهو التصادم :
      بإختصار عند مرور الشخصية أمام الجدار هل تريدها ان تخترق هذا الجدار ام تقف ؟
      كيف يعرف الكمبيوتر أن هنالك جدار ولا يجب أن تخترقه ؟

      المثال الاخير في التحريك كان يتحدث عن تحريك شخصية ماريو كما في الشكل التالي :




      وعند التصادم سنضع جدارين لذلك وسيكون الشكل كالتالي :




      نلاحظ وجود جدارين الاول wall1 على اليسار والاخر wall2 على اليمين .

      اولا : الجدار wall1

      الان كيف اعرف أن الشخصية تصادمت مع هذا الجدار ...

      اولا الجدار ثابت والشخصية متحركة . واذا كان اخر نقطة في الجدار احداثيها السيني اكبر من اول نقطة في الشخصية اذن حدث تصادم.
      بصيغة اخرى : اذا كان يمين الجدار احداثيه السيني اكبر من يسار الصورة ...هنالك تصادم.
      ولاكن كيف اعرف يمين الصورة ففجوال بيسك لا يقدم سوى اليسار(left) ...وذلك بإستخدام :
      كود:
      picture2.left + picture2.width
      اليس عرض الصورة + left = اليمين

      اذن
      كود:
      If (Picture2.Left + Picture2.Width) >= Picture1.Left Then .....there is Collision
      ---------
      وبنفس الطريقه wall2 ... ولكن wall2 يقع يميناً ... فنقول :
      كود:
      If (Picture1.Left + Picture1.Width) >= Picture3.Left Then .....there is Collision
      __________________________________
      والان نكمل مثال التحريك لكي يشمل التصادم :
      افتح مثال تحريك 1-7 :
      الكود الذي لديك شكله كالتالي :
      كود:
      Private Sub Form_Load()
       Call Init
         Picture1.Picture = LoadPicture(c)
      End Sub
      
      Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
      Static step As Integer
      
       Select Case KeyCode
         Case 39
           Picture1.Left = Picture1.Left + 50
             If step = 0 Then
               step = 1
               Picture1.Picture = LoadPicture(c)
             ElseIf step = 1 Then
               step = 0
               Picture1.Picture = LoadPicture(d)
             End If
         Case 37
           Picture1.Left = Picture1.Left - 50
               If step = 0 Then
                 step = 1
                 Picture1.Picture = LoadPicture(a)
               ElseIf step = 1 Then
                 step = 0
                 Picture1.Picture = LoadPicture(b)
               End If
        End Select
      Text1.Text = step
      End Sub
      سنعرف الان متغيرين من نوع Boolean في مكان المتغيرات العامة General ...وذلك لاننا سنستخدمهما في فروع البرنامج المختلفة....الاول اسمه wall1 والاخر wall2 كالتالي :
      كود:
      Dim wall1 As Boolean
      Dim wall2 As Boolean
      نضيف دالة اسمها Collision ونضع فيها :
      كود:
      Private Sub Collision()
      If (Picture2.Left + Picture2.Width) >= Picture1.Left Then wall1 = True Else wall1 = False
      If (Picture1.Left + Picture1.Width) >= Picture3.Left Then wall2 = True Else wall2 = False
      End Sub
      فإذا كان هنالك تصادم في الجدار الاول فليس هنالك تصادم في الجدار الاخر والعكس صحيح ... ايعقل ان ماريو يتصادم مع الجدارين معاً .... لماذا نفعل ذلك ؟ ... لان ماريو عندما يصطدم مع الجدار الايسر (wall1) سيكون wall1 = true ... وعندما يذهب يميناً سيستمر wall1 =true ولن تستطيع التحرك يساراً... اذا لمم تتضح الفكره حاول انشاء تصادم بنفسك وهنا الفائدة الحقيقية من الدرس .

      نحن لم نضع حتى الان شرط يوقف تحرك الشخصية :
      فنضع اذا كان wall1 = false ... تتحرك الشخصية يساراً واذا كان wall1 =true فلا تتحرك الشخصية ... نف الشي مع wall2

      كود:
      Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
      Static step As Integer
      Call Collision
        Select Case KeyCode
          Case 39
           If wall2 = False Then
            Picture1.Left = Picture1.Left + 50
             If step = 0 Then
               step = 1
               Picture1.Picture = LoadPicture(c)
             ElseIf step = 1 Then
               step = 0
               Picture1.Picture = LoadPicture(d)
             End If
           End If
          Case 37
           If wall1 = False Then
            Picture1.Left = Picture1.Left - 50
               If step = 0 Then
                 step = 1
                 Picture1.Picture = LoadPicture(a)
               ElseIf step = 1 Then
                 step = 0
                 Picture1.Picture = LoadPicture(b)
               End If
            End If
         End Select
      
      Text1.Text = step
      End Sub
      هذا هو مبدأ التصادم ...
      تخيل ان تصمم تصادم لصخره غير منتظمة الشكل للعبة ثلاثية الابعاد ... ستواجهك مشااااااااكل كبيرة وانا اعني (كبيره) لتلك الحالات .....

      سأرفق ملف به جميع الدروس حتى هذه اللحظة .

      من يريد أن يسأل عن التصادم فلقد انتهينا منه تقريباً ... يضعه هنا ... والموضوع القادم سيتحدث عن "اشكال جميلة" .......


      تحياتي
      الملفات المرفقة الملفات المرفقة
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    2. #2
      التسجيل
      04-11-2001
      الدولة
      U.A.E
      المشاركات
      4,196
      المواضيع
      67
      شكر / اعجاب مشاركة
      ما شاء الله عليك موضوع مميز و درس أكثر من رائع و إن شاء الله لك مستقبل في مجال البرمجة
      التعديل الأخير تم بواسطة Mr. Black Man ; 07-12-2002 الساعة 09:34 AM

    3. #3
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة
      السلام عليكم....

      شكراً لك ... واتمني ان يكون مفيداً

      هذه مجرد امثله وهي في البرمجة وليست في التصميم...لذلك لا تدقق واجد

      تحياتي
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    4. #4
      التسجيل
      29-11-2001
      الدولة
      Beyond Dreams
      المشاركات
      1,001
      المواضيع
      48
      شكر / اعجاب مشاركة
      مشكور على الدرس و الحمدلله ما عندي اسئلة لان شرحك بسيط و يغطي كل شي و لا يترك مجال للاسئلة، كمل للدرس الثالث

      و كل عام و انت بخير

    5. #5
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة
      السلام عليكم...

      لان شرحك بسيط و يغطي كل شي و لا يترك مجال للاسئلة
      هذا اللي انا احاول الوصول اليه ........ شكراً
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    6. #6
      التسجيل
      01-01-2003
      المشاركات
      33
      المواضيع
      7
      شكر / اعجاب مشاركة
      تعلم لغه الفيجوال بيسك فى 3 ايام ....اليس فى الامر مبالغه بعض الشى:!




      والا ترى ان استخدام برنامج 3d game studio لتصميم الاالعاب


      هو الحل لمن يريد الابتعاد عن لغه الحسابات المزعجه......




      حيث يعمل البرنامج على تحويل الحركات المرئيه لاحداث اللعبه


      االى لغه جافا اتوماتيكيا.
















      التعديل الأخير تم بواسطة soulsord ; 08-02-2003 الساعة 12:14 PM

    7. #7
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة
      السلام عليكم...

      والا ترى ان استخدام هذه البرامج ليس له مستقبل الا في الاخراج والاخراج فقط .

      والا ترى ان اسخدام هذه البرامج يفرض عليك قيود انت في غنى عنها

      والا ترى انك في النهاية لست تصنع لعبة وانما تجمع لعبة

      ............ نعم البرمجة تحتاج تفكيراً ولكنها ممتعة بالنسبة لي :

      اخوي تعلمك لغة برمجة يعطيك قوة لا تتخيلها فتستطيع عمل ما تريده

      _____

      اما بالنسبة لـ

      تعلم لغه الفيجوال بيسك فى 3 ايام ....اليس فى الامر مبالغه بعض الشى
      كنت اعتقد ان هذه المقولة ستشجعك على التعلم ولكن ...

      اخي الكتاب الذي تعلمت منه اسمه "فيجوال بيسك 6 للمبتدأين" اصدار مكتبة جرير ، يحتوي على 600 صفحة في ثلاثة أيام أي 200 صفحة في اليوم .

      فلنفرض أنني أقرأ 12 ساعة في اليوم (وهذا الذي حصل) فالنتيجة ستكون 3.6 دقيقة / صفحة

      فلنجعلها 3 دقائق فقط فال(0.6) والذي يساوي 0.6 * 200 = ساعتين (وقت ضائع)

      السؤال / هل تستطيع قرائة صفحة في 3 دقائق ؟؟؟
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    ضوابط المشاركة

    • لا تستطيع إضافة مواضيع جديدة
    • لا تستطيع الرد على المواضيع
    • لا تستطيع إرفاق ملفات
    • لا تستطيع تعديل مشاركاتك
    •