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

ردود: 10 | زيارات: 1483
  1. #1

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



    منظور الرؤيا الثالث للشخص 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. #2
    عضو نشيط
    صور رمزية ayoubsoft
    تاريخ التسجيل
    Jul 2007
    المنطقة
    Maroc
    ردود
    987
    رووووووووووووووووووووووووعة و الله دروسك رائعة

    تابع

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

  4. #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. #5
    السلام عليكم
    اخى الفاضل معزرة انا لا اجيب عن اى سؤال خارج الدرس المطروح ، وعموما عشان برضه مردش سؤالك حجاوبك على السريع واقولك ان الخطأ اللى انت عرضه معناها (الأمر غير معروف داخل العبارة select )

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

  7. #7
    عضو متميز
    صور رمزية MEGA.K
    تاريخ التسجيل
    Jul 2008
    المنطقة
    Ukraine-Gaza
    العمر
    25
    ردود
    1,280

    Smile

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

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


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


  8. #8

  9. #9
    عضو متميز
    صور رمزية kakarot
    تاريخ التسجيل
    Dec 2007
    المنطقة
    الأردن
    ردود
    1,174
    تشكر على الدرس المفيد

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


    وشكراً

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

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل