Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

خطوة بخطوة لعمل لعبة ثلاثية الأبعاد بالدركبيسك - (الجزء الرابع) - بقلم : احمد البنا

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • خطوة بخطوة لعمل لعبة ثلاثية الأبعاد بالدركبيسك - (الجزء الرابع) - بقلم : احمد البنا



    منظور الرؤيا الثالث للشخص Third Person Perspective


    سوف نعلمك ان شاء الله فى هذا الدرس كيف تصنع منظور الرؤيا الثالث للشخص


    Rem اعدادات التزامن للعرض

    Sync On
    Sync Rate 30


    Rem عمل المكعبات و مواضعها العشوائية
    For x = 1 to 5
    Make object cube x,100
    Position object x,Rnd(2000),0,Rnd(2000)
    Next x


    Rem عمل المجسم الكروى
    Make object sphere 10,50


    Rem الدائرة الرئيسية
    Do
    Rem Store Object angle Y in aY#
    aY# = Object angle Y(10)


    Rem التحكم فى مدخلات الكميرا
    If Upkey()=1 then Move object 10,10
    If Leftkey()=1 then Yrotate object 10,Wrapvalue(aY#-5)
    If Rightkey()=1 then Yrotate object 10,Wrapvalue(aY#+5)


    Rem نهيىء الأوبجكت ونخزن الأحداثيات x# z#
    X# = Object position x(10)
    Z# = Object position z(10)


    Rem نخزن الموضع الجديد للكميرا داخل cz# cx#
    cZ# = Newzvalue(Z#,aY#-180,100)
    cX# = Newxvalue(X#,aY#-180,100)


    Rem موضع الكميرا
    Position Camera cX#,100,cZ#

    Rem نجعل الكميرا تنظر للأعب
    Point camera X#,50,Z#

    Rem ننشط الشاشة
    Sync
    Loop

    سوف يقدم الدرس منظور الرؤية الثلاثية الأبعاد للكميرا ، اما رؤية الشخص سوف تعرض خلف الشخصية ، بأختصار ستكون الكميرا خلف الشخصية ، طبعا معظم الكود اللذى بأعلى قد قدمنا لكم شرحة .


    X# = Object position x(10)
    Z# = Object position z(10)
    ال "Object Position X" و "Object Position Z" هما اوامر مشابهان للأمر "Object Angle" ماعدا ان هذان الأمران يعيدان موضع الأوبجكت داخل احداثيات العالم بألأحرى دوران الأبجكت ،اما ما بين القوسين فيتم وضع رقم الأوبجكت اللذى تريد قيمة الأحداثى منه ،،وقد خزنا هذه القيم داخل المتغيرين X# و Z# .


    cZ# = Newzvalue(Z#,aY#-180,100)
    cX# = Newxvalue(X#,aY#-180,100)
    ال "NewZValue" و "NewXValue" هما أوامر تحفظ لك ما لديك من الدالات الرياضية العالية مثل جا و جتا ، هذه الأوامر تحسب الموضع الجديد المبنى فى موضع أخر ،وقد استخدمناه لحساب الموضع ب 100 وحدة خلف اوبجكت الاعب ،،، اول معامل x# خاص بأحداثيات موضع الاعب الحالى ، وتذكر نحن خزنا موضوع الأبجكت داخل المتغيرات x# و z# ،، اما المعامل الثانى فهو زاوية الأتجاه اللتى نريد احداثياتها الجديدة ، ونحن لدينا الزاوية y للأبجكت مخزنه داخل المتغير ay# وطرحنا 180 درجة من قيمتها ، واصبحت الزاوية تشير مباشرة خلف الأبجكت،،، اما الرقم الثالث فهو رقم وحدات بعد العالم(العالم الثلاثى الأبلعاد اللذى نحن به) من موضع الأبجكت اللذى نأخذ منه الأحداثيات ،وقد استخدمنا القيمة 100 ، اى زودنا الموضع ب 100 واحدة مباشرة خلف اوبجكت اللاعب وخزنا الأحداثيات فى متغيرات تمثل موضع الكميرا cz# و cx# .


    Position camera cX#,100,cZ#
    ان أمر "Position Camera" عمله تماما مثل الأمر "Position Object" ما عدا انه لا يوضع فيه رقم الأبجكت بل يوضع به فقط القيم الأحداثية ، لقد استخدمنا الحسابات الحديثة للقيم x و z و 100 للقيمة y ، بما ان الأحداثى y للأبجكت اللاعب يكون صفر و نصف القطر = 50 و محيط الأحداثى Y للكميرا الى 100 ، مكان الكميرا فوق اللاعب .


    Point camera X#,50,Z#
    ان كميراتنا فوق الأبجكت وقد استخدمنا الأمر "Point Camera" لتشير الكميرا الى الأبجكت(تنظر اليه) ، معامل هذا الأمر هو الأحداثيات x y z مكان النظر للكميرا ، سوف نستخدم المتغيرات z# و x# واللتى تعتبر قيم المواضع x و z للأبجكت اللاعب ،، ومن القيمة y سنضع القيمة 50 ،، أذن الكميرا يجب ان تكون الأن فى منتصف أوبجكت اللاعب .



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

    الى اللقاء مع الدرس القادم


    ملاحظة : قد تجد فى بعض الأسطر ان الكود معكوس والسبب طبعا صفحات الوب اللتى اكتب فيها الدرس ، وللتغلب على تلك المشكلة ومعرفة الكود بشكله الصحيح انسخ الكود مباشرة داخل برنامج الدركبيسك

    مع تحياتى
    عميد المبرمجين العرب سابقا

  • #2
    رووووووووووووووووووووووووعة و الله دروسك رائعة

    تابع

    تعليق


    • #3
      شكرا للمرور - اخيرا احد عبرنى برد

      مع تحياتى
      عميد المبرمجين العرب سابقا

      تعليق


      • #4
        شكراً يا زعيم على الدروس الفيدة .

        انا عندي سؤال في الداركبيسك , لكنه مش عن الدرس ده .

        السؤال هنا هو عن التركيب select ... يعني شوف كده الكود ده :

        كود PHP:
        Rem ***** Main Source File *****
        SET DISPLAY MODE 1200,600,16
        for 1 to 7
        ink rgb 
        (255,255,255),rgb(255,255,255)
        load bitmap str$(i)+".jpg",i
        next i

        do

        if 
        rightkey() then numberx numberx+1
        if leftkey () then numberx numberx 1
        if number 7 then numberx 1
        if number 0 then numberx 7

        select 
        (numberx)

        case 
        1

        SHOWxx
        (1)
        WAIT KEY
        break
        endcase

        case 2

        SHOWxx
        (2)
        WAIT KEy
        break
        endcase

        case 3

        SHOWxx
        (3)
        WAIT KEY
        break
        endcase

        case 4

        SHOWxx
        (4)
        WAIT KEY
        break
        endcase

        case 5

        SHOWxx
        (5)
        WAIT KEY
        break
        endcase

        case 6

        SHOWxx
        (6)
        WAIT KEY
        break
        endcase

        case 7

        SHOWxx
        (7)
        WAIT KEY
        break
        endcase

        end select

        loop


        FUNCTION SHOWxx(NUMBER)
           
        CLS
           COPY BITMAP NUMBER
        ,0
           ENDFUNCTION 

        المشكلة بقى هنا أنه لما أنفذ الكود يروح يعلملي على راس التعريف بتاع الfunction ويطلعلي رسالة : unknow commond on select statment .
        ده بقى معناه إيه ؟؟ وعلى الفكرة المشكلة دي بتحصل معي كتير وحتى لما أجيب أمثلة جاهزة من النت ويكون فيها select بتحصل نفس المشكلة ...

        تعليق


        • #5
          السلام عليكم
          اخى الفاضل معزرة انا لا اجيب عن اى سؤال خارج الدرس المطروح ، وعموما عشان برضه مردش سؤالك حجاوبك على السريع واقولك ان الخطأ اللى انت عرضه معناها (الأمر غير معروف داخل العبارة select )

          مع تحياتى
          عميد المبرمجين العرب سابقا

          تعليق


          • #6
            طب معلش يا أستاذ أحمد , أنا شايف أن مفيش حد مهتم أساسا بالموضوع ده , أظن أن السبب هو أن زمن وضعك للدبوس دي خاطيئ .
            يعني كان المفروض الاول تستعرض أساسيات اللغة دي , مش على طول تبدأ في برمجة الألعاب ثلاثية الأبعاد!
            على كل حال أنا شاكر لك أنك رديت على سؤالي , لكن معلش هتعبك معايا شوية ^^
            أنا عارف معنى الرسالة , لكن أزاي يكون رأس تعريف الفنكشن غير معروف داخل التركيب ؟؟
            وأزاي أقدر أتغلب على المشكلة دي ؟؟

            تعليق


            • #7
              مرحبا يا أعضاء المنتدى

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


              وشكرا
              ^ ^
              Limkokwing University of Creative Technology
              Bachelor in Creative Multimedia

              تعليق


              • #8
                شكرا على المرو

                مع تحياتى
                عميد المبرمجين العرب سابقا

                تعليق


                • #9
                  تشكر على الدرس المفيد

                  بس ممكن مقبس تحويل المجسم إلى x لكي ينفع مع DBP ؟؟


                  وشكراً

                  تعليق


                  • #10
                    شكرا على المرور ،، وباالنسبة لمقبس التحويل من المكس بصيغة direct x ، فأسم المقبس هو PandaDXExport6 ابحث عنه فى النت وستجده

                    مع تحياتى
                    عميد المبرمجين العرب سابقا

                    تعليق

                    يعمل...
                    X