صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 28

الموضوع: [درس] دروس في الدارك بيسيك الجزء الرابع

  1. #1
    التسجيل
    04-02-2004
    الدولة
    الزمن
    المشاركات
    455

    [درس] دروس في الدارك بيسيك الجزء الرابع

    دروس في الدارك بيسيك الجزء الرابع




    مع Snake_x86




    هل قرأت الدروس السابقة؟








    هذا الدرس ايضا عبارة عن مثال مشروح بالتفصيل داخلالمثال نفسه يمكن نسخه مع الشروحات الى الدارك بيسيك مباشرة .... شكرا لخاصية الـCommensts
    علما انه يستحسن تشغيل الملف اللذي في المرفقات لانه منسق اي اسهل للقرائة

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


    يمكنك نسخ الكود الى الدارك بيسيك مباشرة مع التعليقات
    حيث في الدارك بيسيك اي شيء تكتبه بعد " ` " لن يتم قرائته من قبل الـ compiler
    و في المرفقات يوجد ملف مضغوط يحتوي على سورس لهذا المثال نفس الموجود هنا
    لكنه منسق حيث التنسيق يحذف عند وضعه في المنتدى.


    قبل المثال اريد ان اذكر ببعض الاشياء الضرورية

    اولا في العالم الثلاثي الابعاد هناك ثلاث احداثيات
    و الدارك بيسيك يرمز لها بـ X و Y و Z
    X يعني س
    Y يعني ص و اللذي هو الارتفاع كلما زادت قيمة Y اي زاد الارتفاع
    Z اي العمق

    و في الدارك بيسيك سيكون التعامل في اغلب الاحيان مع ال X و Z
    خاصة في الالعاب اللتي يكون فيها ارتفاع اللاعب عن الارض ثابت

    ثانيا العملية RND و اللتي هي مستخدمة بهذا المثال كثيرا
    تقوم بارجاع عدد عشوائي بين 0 و الرقم اللذي تحدده
    كود:
    rnd(200)
    ستقوم بارجاع رقم عشوائي بين 0 و 200

    ثالثا كل اوبجكت نعطيه رقم معين يكون 1 او اكثر يرمز اليه
    ولا يتشارك اوبجكتين برقم واحد

    رابعا في الدارك بيسيك حركة رائعة وعي انك اذا لم تفهم احد الاوامر
    في الكود ضع المؤشر فوق هذا الامر او الدالة و اضغط عليه بزر الماوس الايسر
    سينتقل مؤشر الكتابة اليه و هنا اضغط على help ثم command help
    او F1 و سظهر صفحة تشرح لك هذا الامر بالتفصيل .... واو

    خامسا .... اذا كنت لا تفم ما هي عملية الـ for Next
    حاول فهمها من المثال او راجع الدرس الثاني من سلسلة دروسي هناك شرحتها بالتفصيل الممل




    كود:
    sync on `جعل عمليات تحديث الشاشة غير تلقائية اي يمكن التحكم بها sync rate 60 `جعل معدل تحديث الشاشة 60 صورة بالثانية كحد اقصى autocam off `منع الكانيرا من الانتقال او النظر الى اخر اوبجكت تم استدعائه `الان نريد اعداد الاوبجكتات حيث نريد 10 اوبجكتات فنستخدم الأمر `For ... next `سيقوم بانشاء عشرة اوبجكتات و وضعها يمكان عشوائي `و تفعيل كشف التصادم عليها `ثم تلوينها بلون عشوائي for i = 1 to 10 make object cube i,20 `انشاء اوبجكت على شكل مكعب و ترقيمها و اعطاءها حجم و هنا 20 position object i,rnd(300) - 150, 10 ,rnd(300) - 150 `وضع هذه الاوبجكن بمكان عشوائي set object collision on i `تفعيل كشف التصادم لهذا الاوبجكت color object i, rgb(rnd(250),rnd(250),rnd(250)) `تلوين هذا الاوبجكت بلون عشوائي next i `الان حصلنا على عشرة اوبجكتات عبارة عن مكعبات مرقمة من 1 الى 10 `كل منها وضعت بمكان عشوائي و لونت بلون عشوائي `و تم تفعيل كشف التصادم عليها
    do `بداية الدائرة الرئيسية `الآن دخلنا بالدائرة الرئيسة ` Main Loop `و هذه الدائرة عبارة عن مجموعة اكواد و أوامر ستتحكم باللعبة `اولا نقوم بحفظ احداثيات اللاعب او المكعب اللذي سنتحكم به oldx# = object position x(1) oldz# = object position z(1) `الأمر التالي يتحكم باللاعب و هو عبارة عن دالة قمت بانشائها `و ستجدونها بآخر البرنامج control_player() `هذه الدالة ستقوم بالتحكم بالكاميرا `و ستكون الكاميرا عمودية فوق اللاعب control_camera() `التصادم: `في هذا المثال استخدمت عملية تصادم بسيطة جدا `اذا اصتدم اللاعب بأحد المكعبات الاخرى `سيتم نقله الى اخر احداثيات قبل ان يحدث التصادم `و هنا سترون مدى اهمية العملية `for ... nexr `الان سنقوم بالتحقق من التصادم بين كل من المكعبات و اللاعب `علما ان اللاعب هو الاوبجكت رقم 1 `ليس من الضروري ان يكون اللاعب هو الاوبجكت رقم 1 الامر يعود اليك for i = 2 to 10 `هنا سيتم التحقق من حدوث تصادم بين اللاعب (الاوبجكت رقم 1) وبين الاوبجكتات الاخرى من 2 الى 10 `و اذا كان هناك تصادم نعيد اللاعب الى الاحداثيات اللتي قمنا بحفظها في اول الدائرة الرئيسية if object collision(1,i) then position object 1,oldx#,10,oldz# next i sync `تحديث الشاشة هو امر ضروري جدا في كل نهاية دائرة رئيسية loop `نهاية الدائرة الرئيسية
    ` هنا كعادتي اضع في آخر الرنامج الدوال اللتي استدعيها اول البرنامج ` لكي يكون البرنامج مرتب `اول دالة هي اللتي تتحكم بالمكعب رقم 1 و اللذي هو اللاعب ` قمت باستدعائها في الدائرة الرئيسية function control_player() `اولا نحفظ احداثيات اللاعب في ثلاث متغيرات x# = object position x(1) `اريد هنا ان اذكر ان في الدارك بيسيك ` Y `هي احداثية الارتفاع كلما زادت زاد ارتفاع الاوبجكت y# = object position y(1) `حفظ احداثي الارتفاع z# = object position z(1) `الان بعد ان حصلنا على احداثيات اللاعب `بتزويدها او تنقيصها حسب ضغط ازرار الاتجاهات في الكي بورد `z# اذا كان زر (فوق) مضغوط في لوحة المفاتيح نزيد 1 على المتغير if upkey() then inc z#,1 `z# هنا اذا كان زر (اسفل) مضغوط سننقص 1 من المتغير if downkey() then dec z#,1 `اذا كان ر (اليسار) مضغوط نقلل من قيمة المتغير بمقدار 1 if leftkey() then dec x#,1 `عكس السابقة if rightkey() then inc x#,1 `الان ننقل اللاعب او المكعب الى الاحداثيات المعدلة position object 1,x#,y#,z# endfunction
    function control_camera() `في هذه الدالة سنجعل الكاميرا فوق اللاعب `نأخذ احداثيات اللاعب و نحفظها في متغيرات x# = object position x(1) y# = object position y(1) z# = object position z(1) `نقوم بتعيين متغيرات لحساب موضع الكاميرا camx# = x# `نعطي هذه الاحداثية للكاميرا بدون تغيير camy# = y# + 150 `هذه احداثية الارتفاع و بما اننا نريد ان تكون الكاميرا فوق اللاعب نزيد 150 عن احداثي اللاعب camz# = z# - 5 `هنا انقصت 5 لتكون الكاميرا منحنية قليلا `ننقل الكاميرا الى الاحداثيات اللتي حصلنا عليها position camera camx#,camy#,camz# `نجعل الكاميرا تنظر الى اللاعب point camera x#,y#,z# endfunction
    ردا على طلب Son of UAE
    سأتكلم قليلا عن الـ frames

    افترض انك استخدمت الثري دي استوديو لانشاء موديل ثلاثي الابعاد
    ثم قمت بتحريكه داخل الثري دي استوديو
    علما ان الثري دي استوديو يتعامل مع الفريمز

    على سبيل المثال نجعل من الفريمز من 0 الى 20 حركات الوقفة
    اي سيقوم البطل بالتنفس

    و من 20 الى 50 حركات المشي اي سيحرك البطل او الشخصية اقدامه و ايديه
    بحيث يبدو انه يمشي لكنه فعليا ثابت بمكانه حيث التحريك يكون في الدارك بيسيك

    و من الفريم 50 الى 70 حركات الضرب

    ثم نقوم بتصديرها الى ملف ثري دي و الدارك بيسيك يدعم نوعين من ملفات الثري دي
    الاول و الافضل هو ملف .x و الثاني و الذي لا يدعمه الدارك بيسيك جيدا و هو ملف 3ds
    و يستحسن استخدام مقبس لتصدير لملفات x و الافضل هو مقبس panda Xporter
    و يمكنك تنزيله من هذه الصفحة

    الان نقوم بادخاله الى الدارك بيسيك.....
    نضع الملف في مجلد المشروع اي المجلد اللذي ستضع فيه الملف التطبيقي للعبة
    و نقوم بتحميله عن طريق استخدام load object
    لنفرض ان لدينا ملف اسمه hero.x و نريد ان نعطيه الـ ID رقم 2
    load object "hero.x" , 2

    و الان في حال ضغط اي زر من اسهم الاتجاه نريد ان يقوم البطل بالتحرك و كأنه يمشي
    و فريمات المشي هي من 20 الى 50 كما حددنا في الثري دي استوديو ماكس
    هناك طريقتين للتشغيل الفريمات
    loop object : تشغيل الفريمات و ستقوم باعادة نفسها عند النهاية
    play object : تشغيل الفريمات و عند انتهاء الفريمات ستتوف عن الحركة

    و الـ parameters متطابقة في كل من الدالتين

    الان لجعل الشخصية تتحرك و كأنها تمشي(تذكرو اننا عينا للشخصية الـ ID رقم 2 و فريمات المشي من 20 الى 50)

    loop object 2 , 20 , 50
    هذه في حالة المشي اي عن ضغط اللاعب لاي زر من ازرار التحريك

    عند يكون اللاعب واقف اي لا يضغط اي زر من ازرار التحريك يجب ان نشغل الفريمات التي
    تظهر فيهاالشخصية واقفة اي الفريمات من 0 ال 20
    loop object 2 , 0 , 20
    و هكذا..............

    و في حالة الضرب نستخدم
    play object 2 , 50 , 70
    و عند توقف انتهاء الفريمات
    if object playing (2) = 0
    نعود الى الحالة السابقة اي الوقوف او المشي
    ____________________________________________________

    سأقوم قريبا بعمل مثال عن الفريمز و سيكون عبارة عن نفس المثال في هذا الدرس لكن
    باستخدام موديلات بدل من المكعبات
    الملفات المرفقة الملفات المرفقة
    دروس الدارك بيسيك
    1
    2
    3
    4
    5

  2. #2
    التسجيل
    04-02-2004
    الدولة
    الزمن
    المشاركات
    455

    رد: دروس في الدارك بيسيك الجزء الرابع

    و هذا المثال من دون الـ comments
    لمن لا يريدها

    كود PHP:
    sync on
    autocam off

    for 1 to 10
    make object cube i
    ,20
    position object i
    ,rnd(300) - 15010 ,rnd(300) - 150
    set object collision on i
    color object i
    rgb(rnd(250),rnd(250),rnd(250))
    next i

    while

    do
    oldx# = object position x(1)
    oldz# = object position z(1)

    control_player()
    control_camera()

    `
    collision:
    for i = 2 to 10
    if object collision(1,i) then position object 1,oldx#,10,oldz#
    next i

    sync
    loop


    function control_player()
    x# = object position x(1)
    y# = object position y(1)
    z# = object position z(1)

    if upkey() then inc z#,1
    if downkey() then dec z#,1
    if leftkey() then dec x#,1
    if rightkey() then inc x#,1

    position object 1,x#,y#,z#
    endfunction

    function control_camera()
    x# = object position x(1)
    y# = object position y(1)
    z# = object position z(1)

    camx# = x#
    camy# = y# + 80
    camz# = z# - 5

    position camera camx#,camy#,camz#
    point camera x#,y#,z#
    endfunction 

    الان سأقوم بمشاهدة بعض الانميات الى ان يحين موعد الافطار
    دروس الدارك بيسيك
    1
    2
    3
    4
    5

  3. #3
    التسجيل
    09-02-2005
    الدولة
    Kingdom Of Saudi Arabia
    المشاركات
    1,253

    رد: دروس في الدارك بيسيك الجزء الرابع

    السلام عليكم ورحمة اله وبركاته

    شكراً ليك اخوي درس مفيد جداً وكان نفسي اطبقه

    لاكن كمبيوتري لوحته ضربت (تلفت)للأسف ما فضل منه غير الهارد دسك والسي دي روم والسي دي رايتر وكرت الشاشة وكرت الشبكة وبعض القطع

    وان شاء الله اول ما اشتري كمبيوتر راح استرجع دروسك كلها واطبقها ورمضان كريم
    --------------------

    وصياماً مقبولاً وافطاراً شهياً

  4. #4
    التسجيل
    21-02-2003
    الدولة
    الإمارات العربية المتحدة
    المشاركات
    2,350

    رد: دروس في الدارك بيسيك الجزء الرابع

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

    و شرح ممتاز و خصوصاً الملاحظات على كل امر

  5. #5
    التسجيل
    21-02-2003
    الدولة
    الإمارات العربية المتحدة
    المشاركات
    2,350

    رد: دروس في الدارك بيسيك الجزء الرابع

    1 --- المثال بالرد الثاني رسم لي مربعات من غير ما تتحرك الكاميرا .. وما قدرت احرك اي مربع .. و طبعاً انا مسحت الامر while لانه كان خلل بالبرنامج ...

    2 --- المثال المرفق فاضي ... ما ادري شو السالفة ؟!؟!؟!

    ممكن توضيح ؟

  6. #6
    التسجيل
    24-01-2006
    الدولة
    QATAR
    المشاركات
    4,098

    رد: دروس في الدارك بيسيك الجزء الرابع

    مشكور على درس وانا عندي مشكلة Son Of UAE
    مع while حيث طلعلي خلل ؟؟

  7. #7
    التسجيل
    17-08-2004
    الدولة
    K.S.A
    المشاركات
    461

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    اشكراً snake_x86 على الدرس الرائع , والمثال قمت بتشغيله مثال جيد جدا, اعجبني درس الـFrames ,واستفدت فعلاً من الدرس .

    اخي انا متابع معاك في الدروس , درس يتلو درس . وفعلا اخذت معلومات جيدة عن اللغة ,جزاك الله خيراً .

    في انتظار دروسك الرائعة.

    وشكراً

  8. #8
    التسجيل
    19-03-2005
    الدولة
    العين
    المشاركات
    1,261

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    هذا الدرس أجبرني أطلب من أحدكم وصله لبرنامج الدارك بيسك ^_^
    الفانكشن تذكرني بالمثود في الجافا
    والكلمات الجاهزه تذكرني بــ GML
    يعني إقتنعت بالدارك بيسك 100%

    سلسلة رائعه وكل شي مفهم نظريـًا باقي العملي ^.^
    مشكور وبالتوفيق
    ليس العيب أن تقع العيب أن تضل على الأرض ولا تقف مجددًا
    I was GameMakerer, may back...I'M BACK o..o

    دردشها دردش دردشها

    ~.~

  9. #9
    الصورة الرمزية amdman
    amdman غير متصل عضو مميز في منتديات البرامج
    التسجيل
    31-08-2005
    الدولة
    مصر -- الوطن العربى
    المشاركات
    1,249

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    السلام عليكم
    مشكور يا أخ snake_x86 على الدروس الرائعة
    و بالتوفيق ان شاء الله

  10. #10
    التسجيل
    04-02-2004
    الدولة
    الزمن
    المشاركات
    455

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    باز== العفو ... و الله يعينك و يعننا جميعا على مشاكل الكمبيوترات و مبروك مقدما على الكمبيوتر الجديد.

    son of UAE ==
    المشكلة الاولى لما ما قدرت تحرك المربع ان موضع(مكان) المربعات يكون عشوائي
    و احيانا ممكن يكون مربع اللاعب فوق مربع ثاني و بسبب التصادم ما تقدر تحرك شي!
    والـ while ناسيها بالغلط,,, كنت راح اضيف كود يتأكد ان مربع اللاعب ما يكون داخل اي مربع ثاني
    بس كنسلته عشان ما اعقد المثال

    المشكلة الثانية تصير معي احيان .... جرب افتح ملف السورس (غير البروجيكت) و بيسألك سؤال قله يسسسسس
    و انشاء الله بيشتغل و هاذه عبارة عن Bug بالدارك بيسيك
    الحل لها موجود و هوانك تنزل GUI ثاني(ما يدعم العربية... ما تقدر تشوف الـComments) للدارك بيسيك او تسووي تحديث للـ GUI الحالي
    لأن الأبديت للـ GUI غير الابديت للـ Compiler

    prince of sorrow === احذف الـ while

    Nash2 === الحمد لله انه اعجبك تراه ها هو المطلوب و العفو

    من التراب === هلا فيك
    وصلة البرنامج مع الكراك
    ابديت الـ GUI او الـ IDE (ضرورية لتصحيح بعض الأخطاء في البرنامج)

    adman == العفو
    دروس الدارك بيسيك
    1
    2
    3
    4
    5

  11. #11
    التسجيل
    09-02-2005
    الدولة
    Kingdom Of Saudi Arabia
    المشاركات
    1,253

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    باز== العفو ... و الله يعينك و يعننا جميعا على مشاكل الكمبيوترات و مبروك مقدما على الكمبيوتر الجديد
    الله يبارك فيك

    والله نسي اطبق درسك

    اقتراح:ضع جميع روابط دروسك في توقيعك^^

  12. #12
    التسجيل
    04-02-2004
    الدولة
    الزمن
    المشاركات
    455

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    اقتراح:ضع جميع روابط دروسك في توقيعك^^
    تم
    و مشكور على الاقتراح
    دروس الدارك بيسيك
    1
    2
    3
    4
    5

  13. #13
    التسجيل
    19-03-2005
    الدولة
    العين
    المشاركات
    1,261

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    شكرا على البرنامج والكراك الي ما عرفت أركبه ^.^
    انتظر الدروس الجايه
    وجزاك الله خير
    ليس العيب أن تقع العيب أن تضل على الأرض ولا تقف مجددًا
    I was GameMakerer, may back...I'M BACK o..o

    دردشها دردش دردشها

    ~.~

  14. #14
    التسجيل
    04-02-2004
    الدولة
    الزمن
    المشاركات
    455

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    اقتباس المشاركة الأصلية كتبت بواسطة من التراب مشاهدة المشاركة
    شكرا على البرنامج والكراك الي ما عرفت أركبه ^.^
    انتظر الدروس الجايه
    وجزاك الله خير
    انسخ محتويات مجلد الـ Crack واللي هم:
    DBPCompiler.exe
    و
    TGCCertificateViewer.exe

    و خذهم على مجلد الـ Compiler داخل مجلد الدارك بيسيك (اسبدال)
    و انشاء الله يشتغل معاك
    دروس الدارك بيسيك
    1
    2
    3
    4
    5

  15. #15
    التسجيل
    21-02-2003
    الدولة
    الإمارات العربية المتحدة
    المشاركات
    2,350

    رد: [درس] دروس في الدارك بيسيك الجزء الرابع

    فهمت كل الدرس و تشكر و ما قصرت .. بخصوص الفريمات بالحركة واجهتني بعض المشاكل .. و الذي توصلت له هو الاتي : لقد استخدمت الباندا اكسبورتر ولكنه صدر لي ملف x من غير الحركة ... فقد كان حجم الملف بسيط جدا

    قارنته مع ملف لعبة كهف الموت للاعب ولكن حجمه معقول بعض الشيء مع وجود اكساء له..

    هلا وضحت خيرات الاكسبورتر المفروض اختيارها ( مستعجل للغاية )

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

    و اسف على الاسئلة البدائية

صفحة 1 من 2 12 الأخيرةالأخيرة

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

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