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

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

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

      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
      المواضيع
      32
      شكر / اعجاب مشاركة

      رد: [سلسة دروس 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
      المواضيع
      5
      شكر / اعجاب مشاركة

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

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

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




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

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

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

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

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

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

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

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

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