النتائج 1 إلى 5 من 5

الموضوع: [سلسة دروس RGSS2 ]الدرس الاول لتعلم برمجة الـ RGSS2 (تعلم بسهولة)

  1. #1
    التسجيل
    12-01-2008
    الدولة
    Utupia
    المشاركات
    184

    Post [سلسة دروس RGSS2 ]الدرس الاول لتعلم برمجة الـ RGSS2 (تعلم بسهولة)

    بسم الله الرحمن الرحيم
    اللهم وفقنا في أمرنا *

    بداية"ملحوظة في المرفقات يوجد الدرس بصيغة pdf اي يجب ان يكون عندك adobe reader هذا خيار بديل لقراءة الدرس اذا كانت هناك اخطاء في الموضوع")
    قبل أن أبدا الشرح الرجاء أن تقرؤوا بعناية حتى لا يفوتكم ما يهم
    خذ استراحة دقيقة قبل أن تبدأ عشان نركز مع بعض

    أولا :: حتى تبدأ في فهم نظام RGSS2
    علينا أن نتعرف على بعض المبادئ الأساسية
    سؤال : هل ستضجرنا بان تتكلم عن ملف المساعدة و الكلام ده؟
    جواب : لا طبعا عشان أنا أصلا بزهق من الرغي في الحاجات ده.

    أولا خلينا أعرفكم على أنواع أل Classes
    لكل كلاس مهمة خاصة و تنقسم حسب تصنيف الكلاس

    1-هناك كلاسات للنوافذ " أي كلاسات مسئولة عن تكوين شاشة في مكان ما" و هذه الكلاسات لها ظروف خاصة سنتحدث عن ظروف كل كلاس فيما بعد

    2- كلاسات اللعبة "كلاسات تحمل عوامل اللعبة الأساسية كالتدخل في حدث ما و الخ........

    3- كلاسات السبيريت "كلاسات تحمل كيفية تكوين الصور بتمابس بطرق مختلفة .
    4- كلاسات المشاهد Scene "تعتبر أهم كلاسات في اللعبة لأنها تتعامل مع اللاعب و ما يحدث من إدخال للأوامر و تستدعي نوافذ و أشياء كثيرة كل على حسب ما صممت من اجله


    ++++++++++++++++++++++++++++++++++++++
    الآن بعد أن تعرفنا على أنواع الكلاسات حان الوقت حتى نبدأ الشرح الحقيقي :

    انتبه لما يلي.......
    سوف يتم الشرح بإعطاء مثال ثم شرح المثال بالكامل
    ==
    المثال الأول :
    هدف المثال عمل شاشة تظهر في أول اللعبة و تقول "مرحبا"
    الكود :
    كود PHP:
    [left]Print("مرحبا ")
    [/
    left
    اعمل للكود ده نسخ و حطه في الـMain
    بعد السطر ده
    Begin
    ابتدي اللعبة حتلاقي ان في رسالة ظهرت بتقولك مرحبا
    "في اسهل من كده ؟"
    الامر اللي احنا استخدمناه هو امر print و هو يقوم بطباعة رسالة لللاعب...
    ==
    المثال الثاني :
    هدف المثال اضافة زر جديد في مشهد البداية Scene_Title

    الطريقة:
    الحكاية بسيطة جدا اذهب الى سكربت مشهد البداية
    حتلاقي الاتي:
    كود PHP:
    [left]s1 Vocab::new_game
    s2 
    Vocab::continue
    s3 Vocab::shutdown
    @command_window Window_Command.new(172, [s1s2s3])
    [/
    left
    -
    سؤال : الكلام ده معناه ايه ؟
    جواب : في اول ثلاث سطور كاتب السكربت عرف ثلاث حاجات هي
    S1,S2,S3
    و اداهم قيمة و هي Vocab::
    مما يدل على انهم كلام لانك لو راجعت فصل الـ Vocab
    حتلاقي انه يعرف بعض الكلمات على شكل اوامر
    عموما vocab::new_game معناه new game
    و هكذا...
    اما بالنسبة للسطر الرابع فهو سطر الاوامر التي تظهر في النافذة الصغيرة ...
    حسنا لاضافة امر جديد عليك ان تعرف هذا الامر
    اذن بعد السطر s3 = Vocab::shutdown
    ادخل تعريف جديد لا يجب ان يكون s4 و لكن يفضل ان تسميه s4 حتى يكون السكربت منظم و سهل التطوير
    اذن بعد ان ادخلته يجب ان يكون السكربت على الشكل الاتي
    كود PHP:
    [left]S3 Vocab::shut_down
    S4 
    "test"
    [/left
    لاحظ ان قيمة التعريف لا يجب ان تكون Vocab::test و اذا اعطيت التعريف هذه القيمة سيحدث خطا
    لانه لا يوجد Vocab::test و لكن اعط التعريف قيمة "test" مع وضع علامتي التنصيص


    حسنا الان بعض ان اعطيت للتعريف قيمته انظر في السطر الرابع :
    @command_window = Window_Command.new(172, [s1, s2, s3])
    ستجد ان هذا السطر هو المسئول عن ظهور الاوامر في نافذة شاشة البداية
    اذن حول
    (172, [s1, s2, s3])
    الى
    (172, [s1, s2, s3, s4])
    كما ترى ان الترتيب غير ضروري اي لا يجب ان نضع s4 بعد s3
    و لكن يمكنك و ضعها في اي مكان لان السكربت لا يهتم باسم التعريف و لكن مهتم بقيمته
    و لكن اذا و ضعته قبل s3 مثلا سيتطلب هذا بعد التحديثات في السكربت سوف نذكرها اثناء الشرح

    الان ابدا اللعبة في شاشة البداية ستلاحظ ظهور زر جديد اسمه "test"

    ===========
    لاحظ ما يلي انه عند الضغط على الزر test لن يحدث شيء لانه لم يربط بحدث معين
    ===========


    مثال 3 :
    الهدف من المثال : ان تظهر نافذة جديدة بها اكثر من خيار عند الضغط على الزر test في شاشة البداية

    الشرح:
    حسنا الان نحن نتعامل مع مشهد كامل و لذلك سوف نقوم بانتاج اول سكربت لنا مع بعضنا الان ركز معي في هذا الشرح لان السكربتات الروبي RGSS2 مبنية على ما سنقوم به الان:

    1- في قائمة الكلاسات ادخل كلاس جديد سمه كما تريد و ليكن بعد Materials

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

    2- اولا علينا ان نعرف الكلاس الجديد و لاي نوع ينتمي اليه
    اذن نحن نريد كلاس مشاهد حتى يتعامل مع ادخالات اللاعب
    اذن ادخل الاتي : في اول سطر
    class Test_Scene < Scene_Base
    كما ترى ان اسم الكلاس المدخل في التعريف يجب ان يكون حرف كابيتال اي انه اذا ادخلت اسم الكلاس
    test_scene او test_Scene سوف ينتج خطا
    لذلك ندخله Test_Scene او Test_scene

    الان بعد ان عرفنا ان الكلاس كلاس مشاهد علينا ان نعرف الاساسيات
    بما اننا نريد ان تظهر خيارات عن الدخول الى المشهد
    اذن نعرف نافذة جديدة نسميها "على سبيل المثال" test_window

    اذن كود التعريف لعمل النافذة سيكون كالتالي سيكون كالتالي
    كود PHP:
    [left]def create_test_window
    i1 
    "this is"
    i2 "a"
    i3 "training"
    @test_window Window_Command.new(100, [i1,i2,i3])
    end
    [/left
    في الكود السابق بتاع عمل نافذة حشرح فيه كم حاجة
    اولا def هي اختصار لكلمة define معناها "عرف"
    طبعا لما تعنل لاي حاجة def او اي امر تاني لازم تنهي الامر بـ end
    عموما انتم شايفين السطر التاني في الكود مكتوب فيه @test_window = Window_Command.new
    ده معناه انه لما نستدع الامر create_test_window
    السكربت حينتج نافذة اوامر "commands "
    اما بالنسبة لـ
    (100, [i1,i2,i3])
    اولا الرقم 100 يعبر عن عرض نافذة الاوامر اما بالنسبة ل [i1,i2,i3] دي اسماء الزراير

    كده انا شرحت تعريف صنع النافذة
    و دلوقتي احنا لازم نخلي علامة التحديد تتحرك بين الزراير
    كده يبقى احنا عايزين نعرف امر التحديث
    الكود حيبقى كده:
    كود PHP:
    [left]def update
    super
    @test_window.update
    if Input.trigger?(Input::B)
    Sound.play_cancel
    dispose_test_window
    $scene 
    Scene_Title.new
    elsif Input.trigger?(Input::C)
    end
    end
    [/left
    الكود شكله رخم لكن صدقني لازم تتعود عليه عشان حنضطر نستخدم كتير
    دلوقتي شرح الكود ده :
    ثاني سطر if Input.trigger?(Input::B)
    السطر ده بيسأل لو حدث ضغط لزر الالغاء Cancel ايه اللي يحصل
    في الثلاث سطور اللي بعده مكتوب الاتي
    اولا Sound.play_cancel معناه انه يشغل صوت الالغاء
    ثانيا dispose_test_window معناه انه يلغي نافذة test التي عرفناها سابقا " ولكننا لم نعرف امر الغاء النافذة بعد و سوف اشرح امر الالغاء اثنا الشرح"
    ثالثا $scene = Scene_Title.new السطر ده معناه انه يعمل مشهد بداية جديد .

    اما بالنسبة للسطر الرابع
    elsif Input.trigger?(Input::C)
    السطر ده بيسأل اذا لم يكن الزر المضغوط زر الغاء و كان زر اختيار Decision ماذا يحدث
    انا طبعا مش فاضي (: فخليته ما يعملش حاجة عشان سبته فاضي و بعدين اغلقت امر الشرط if بـ end
    عموما احنا و صلنا لحد هنا خد فترة راحة قبل ما تكمل .....

    لو سمعت كلامي و استريحت يبقى كويس لو كملت قراءة يبقى ذنبك على جنبك

    دلوقتي جه الوقت اللي نعرف فيه الغاء نافذة test
    الكود حيبقى بالشكل ده :
    كود PHP:
    [left]def dispose_test_window
    @test_winow.dispose
    end
    [/left
    حاجة سهلة مش كده شرح الكود
    في السطر الثاني @test_window.dispose
    ده معناه انه يلغي نافذة الاوامر بتاعة ال test
    و بس.

    دلوقتي جه وقت نعرف البداية بتاعة المشهد اللي احنا عملناه :
    كود PHP:
    [left]def start
    super
    create_test_window
    update
    end
    [/left
    مع ان الكود صغير بس هو ده اهم كود لانه اللي يبتدي المشهد اللي احنا عملناه...
    طبعا من الواضح ان الاوامر هي صنع نافذة test و استعداد التحديث

    عموما لو انت عملت كل حاجة صح من غير اخطاء الكود سيكون على هذا الشكل
    كود PHP:
    [left]class Test_Scene Scene_Base
    def start
    super
    create_test_window
    update
    end
    def create_test_window
    i1 
    "this is"
    i2 "a"
    i3 "training"
    @test_window Window_Command.new(100, [i1i2i3])
    end
    def dispose_test_window
    @test_window.dispose
    end
    def update
    super
    @test_window.update
    if Input.trigger?(Input::B)
    Sound.play_cancel
    dispose_test_window
    $scene 
    Scene_Title.new
    elsif Input.trigger?(Input::C)
    end
    end
    end
    [/left
    لو انت مركز معايا تلاحظ ان في آخر الكلاس انا وضعت end زيادة
    اوعى تقول يا سلام الواد ده كريم قوي بيحط ends من عنده هدية
    الـ end الاخيرة ده تدل على نهاية الكلاس و بدونها سيحدث اخطاء لان السكربت لم يتمكن من ايجاد نهاية للكلاس
    ======
    ======
    الله اكبر انت لو وصلت لهنا انا فخور جدا بيك بس فاضل آخر حاجة
    ======
    بس احنا لسه ما خلصناش فاضل اننا نربط المشهد ده بزرار الـ test اللي احنا عملناه في مشهد الـ Title
    عشان نعمل كده اعمل الاتي:
    في الـ Scene_Title
    دور عن تعريف التحديث update
    حيكون كالاتي:
    كود PHP:
    [left]def update
    super
    @command_window.update
    if Input.trigger?(Input::C)
    case @
    command_window.index
    when 0 
    #New game
    command_new_game
    when 1 
    # Continue
    command_continue
    when 2 
    # Shutdown
    command_shutdown
    end
    end
    end
    [/left
    دلوقتي الاوامر دي كلها بتؤدي لحاجات زي بداية اللعبة او اكمل اللعبة او انهاء اللعبة
    احنا عايزين نضيف انه لو كانت الـ index 3 يرسلنا الى المشهد اللي احنا عملناه
    اولا اعرفك يعني ايه index حشرحها بطريقة بسيطة
    index 0 = button 1
    index 1 = button 2
    و هكذا....
    اذن بعد command_shutdown
    ادخل الكود ده :
    when 3
    $scene = Test_Scene.new
    و بس و اياك تحط end عشان الـ end محطوطة اصلا
    انت عارف انك دلوقتي ربط الزرار بالمشهد بتاعك و هو اهم من اهم اهم حاجة عشان من غير كده يبقى المشهد كله فشنك ..

    عموما ابدا اللعبة و اضغط على زرار الـ test
    حتلاقي ان اللعبة انتقلت لمشهد الـ test اللي عملناه.....مبروك.....
    ==========================
    انتهى شرح الدرس الاول
    في الدرس القادم ان شاء الله
    سكربتات اكثر تعقيدا و التعامل مع الاستدعائات و ايضا طرق تعديل كلاس من داخل كلاس
    و بالتاكيد سوف ندرس بعض من الاومر و نتعرف على الـ arrays و بعض الحاجات زي الـ super
    ==========================
    "حقوق الدروس محفوظة حسك عينك اشوفك ناسخ الدرس اللي تعبت فيه
    و كاتب اسمك عليه "
    ==========================
    الى اللقاء في الدرس القدم اترككم بعون الله
    ==========================
    الملفات المرفقة الملفات المرفقة
    التعديل الأخير تم بواسطة CalmKiller ; 20-07-2008 الساعة 11:14 PM
    اختم القرآن في شهر رمضان!
    اعاده الله عليكم وعلي وعلى المسلمين بالخير يا أرحم الراحمين

  2. #2
    التسجيل
    01-11-2007
    الدولة
    J@P@N
    المشاركات
    763

    رد: [سلسة دروس RGSS2 ]الدرس الاول لتعلم برمجة الـ RGSS2 (تعلم بسهولة)

    وااااااااااااااو
    موضوع مميز من عضو اكثر تميزا
    كنا بانتظار درس مثل هذا
    مشكووووووووووووور
    اكثر كلمات الشكر لن تصف شكرنا لهذا الموضوع
    ^____________~
    في امان الله
    Kamuri-San Is LordOfThunder
    And Every thing
    made by LordOfThunder
    Belongs To
    Kamuri-San


    thnxxxxx mody-kun

  3. #3
    التسجيل
    23-03-2008
    المشاركات
    39

    رد: [سلسة دروس RGSS2 ]الدرس الاول لتعلم برمجة الـ RGSS2 (تعلم بسهولة)

    تسلم على الشرح المميز

    وفي انتظار الدروس القادمة




    My Real Name Is Vincent
    I take Ebda3te Because Vincent Has been Taken

  4. #4
    التسجيل
    24-04-2008
    الدولة
    ksa
    المشاركات
    44

    رد: [سلسة دروس RGSS2 ]الدرس الاول لتعلم برمجة الـ RGSS2 (تعلم بسهولة)

    لو سمحت الclass اشلون ادخلة

  5. #5
    التسجيل
    09-09-2005
    الدولة
    العراق - بغداد / سوريا - دمشق
    المشاركات
    1,668

    رد: [سلسة دروس RGSS2 ]الدرس الاول لتعلم برمجة الـ RGSS2 (تعلم بسهولة)

    موضوع قديم , مُغلق

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

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