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

الموضوع: [درس] تعليم RGSS2 ومبادئها الأساسية

  1. #1
    التسجيل
    07-12-2006
    الدولة
    Somewhere >__>
    المشاركات
    175

    Exclamation [درس] تعليم RGSS2 ومبادئها الأساسية

    السلام عليكم ورحمة الله وبركاته.
    من عنوان الدرس: تعليم RGSS2 ومبادئها الأساسية. إن شاء الله هذا الدرس بادئة سلسلة دروس تعليم RGSS2.
    تحذير: هذا الدرس طويل وهو جزئين. والراغبين في التعلم فقط هم من ينهونه دون ترك سطر منه. لذا الرجاء الخروج اذا لم تكن لك نية للتعلم.

    ملاحظة مهمة جداً: RGSS2 هي فرع من لغة Ruby، ولكن Ruby نفسها ليست RGSS. شي يخربط شوي بس سهلة مع شوية تركيز.
    عودة لموضوعنا:
    أولاً: RGSS2 مثل أي لغة تتكون من مجموعة تعابير وقواعد ثابتة
    وتبدأ اللائحة بـ:
    نص الـComment/التعليق
    وهذا يبدأ بـ#. ويهمل قارئ السكربت التعليقات، إذ هي مجرد ملاحظات تكتبها لنفسك ومستعملي السكربت لتفهيم عمله.مثال:
    كود:
    This is a comment#
    المعرفات Identifiers:
    مثال عليها:
    كود:
    hello my_name_is_talal
    المعرف في Ruby هو مايبدأ بحرف صغير lowercase او underscore ( _ ). وليس هناك حدود لطول المعرف.
    الكلمات المحجوزة Reserved words
    وهي 38 كلمة:
    كود:
    BEGIN    class    ensure   nil      self     when
    كود:
    END def false not super while alias defined? for or then yield and do if redo true begin else in rescue undef break elsif module retry unless case end next return until
    ولايمكن اطلاقاً استعمال هذه الكلمات لأسماء صفوف classes. ولكن اذا سبقت بـ@ أو $، يمكن استعمالها كمتغير (أنظر ادناه).
    مثال:
    كود:
    we can NOT use class nil BUT we can use $nil = 10 and we can use def nil
    التعابير Expressions
    مثال:
    كود:
    true (1+2)*3 if test then ok else ng end
    يطلق مصطلح "تعبير" على كل مايوجد في روبي. وان مجموعة تعابير معينة تُخلِّق برمجية ruby
    وتفصل عن بعضها البعض باستخدام الفاصلة المنقوطة ( ; )

    ثانياً: الثوابت والمتغيرات
    لابد من اي لغة برمجة ان تحتوي على هاتين الاثنتين، بدونهما لايمكننا ابداً ان نجري عمليات حسابية مما يحيل حياتنا جحيماً! ولغة ruby تحتوي الآتي:-
    1)متغيرات محلية Local Variables
    2)متغيرات محدودة Instance variables
    3)متغيرات الصفوف class variables
    4)متغيرات عامة/عالمية Global variables
    5)الثوابت Constants
    وسنذكر كل واحد بالتفصيل:
    المتغيرات المحلية: مثال عليها
    كود:
    ruby
    يذكركم هذا بشيء؟ ... انها نفسها المعرفات. وتحتاج الى اعلان declaration قبل استعمالها.

    المتغيرات المحدودة: مثال عليها
    كود:
    @myname
    المتغيرات المبدوءة بـ’@’ تعد متغيرات محدودة، وهي تعود الى اماكن معينة من السكربت، وهذه المتغيرات يمكن أن ترجع من أي صنف او فئة فرعية في السكربت نفسه.

    متغيرات الصفوف: مثال عليها
    كود:
    class A @@A = 1 def B puts @@AA end end

    المتغيرات المبدوءة بـ"@@" تسمى متغيرات الصفوف، ويتم تعريفها في صف ما ويمكن الرجوع اليها في نفس الصف.
    المتغيرات العامة/ العالمية: مثال عليها
    كود:
    $name
    المتغيرات المبدوءة بـ$ تسمى متغيرات عامة. ويمكن الرجوع اليها من اي مكان في البرنامج (إذن يستحسن الحذر عند الإستعمال). ولا تحتاج الى اعلان، وقيمة اي متغير غير مشغل = nil.

    الثوابت: مثال عليها:
    كود:
    RUBY = 'ruby'
    انتبه!! هذا لايعد معرفاً. لأنه لايبدأ بحروف صغيرة lowercase.
    ولكن الثوابت لديها نظام مختلف عن المتغيرات في الرجوع.

    كود:
    class Identity NAME = 'SOMEBODY' end class Checkin < Identity p NAME # Gives us "SOMEBODY" end p Identity::NAME # Gives us "SOMEBODY"
    والآن انظر هنا.
    المتغير NAME موجود فقط في صف Identity. لكن من الممكن الرجوع الى الصف باستخدام < التي تعني أن صف Checkin يتَّبِع صف Identity ويرجع الى ثوابته ومتغيراته.
    أي ان Identity = Checkin Superclass

    نسينا شيئاً! لقد تكلمت قبل قليل عن nil. فهل عرفنا ماهي؟
    انها تعد متغيراً كاذباً Pseudo variable.
    وأمثلة آخرى: self, true, false. وهذه تعمل على صفوف خاصة بها في Ruby. مثل
    NilClass.

    ثالثاً: الحرفيات Literals.

    القيم التي تصرّف فوراً في Ruby مثل رقم 1 او القيمة "Hello" تعد من الحرفيات.
    وهي 7 انواع:
    1) الحرفيات الرقمية Numerical Literals
    مثل 1,2,3 أو 0xffff.
    يمكن ان تحتوي الحرفيات الرقمية على Underscore. فمترجم الـRuby يتجاهلها ولا يترجمها بشكل خاص. مثل:
    كود:
    03_10_1987 # => 03101987 29_03_1928 # => 29031928

    2)مدخلات حرفية String Literals
    مثال عليها:

    كود:
    "this is a string expression\n"
    كود:
    'this is a string expression'
    الحرفيات المحاطة بـ"-" أو '-' تسمى strings.
    ملاحظة: الحرفيات المفصولة بمسافة فارغة تدمج اوتوماتيكياً
    كود:
    p"mon" "tada" # montada
    الفروق بين " " و ' '
    ان التنقيط المزدوج = \\ ويسمح ببديل التعبير (#{}) مثل:

    كود:
    class RGSS2
    "NAME = "Tutorial$ "p" This is a #{$NAME} related to RGSS2
    في حين عند عمل الآتي:
    كود:
    class RGSS2
    "NAME = "Tutorial$ 'p' This is a #{$NAME} related to RGSS2
    سوف يصبح لدينا This is a #{$NAME} related to RGSS2 لكن " " ابطأ نوعاً من
    ' ' لأنها تستهلك CPU اعلى

    3)التعابير المنتظمة Regular Expression
    مثل:
    كود:
    /^Ruby the OOPL/
    كود:
    /Ruby/i /my name is #{myname}/
    يبدو هذا شائقاً! لم أفهم .
    حسناً، هذه التعابير المنتظمة هي ماحددت بـBackslash او ( \ ).
    الحروف التي تتبع الـSlash النهائي فوراً تدل على خيار التعبير المنتظم:
    i
    وتعني مقارنة التعبير المنتظم غير حساسة لحالة الأحرف.
    m
    وتعني ان السطور الجديدة تعني انها تعد حروفاً طبيعية (مقارنةً مثلاً بـالنقطة "." )

    4)تعابير الصف Array Expression: مثال:
    كود:
    [1, 2, 3]
    تعيد تعابير الصف نتيجة كل تعبير. والـArray محدود للصف Array في RGSS2

    5)الـHash Expressions: مثال عليها:
    كود:
    {1=>2, 2=>4, 3=>6}

    تعيد علامة رقم Hash تخطيط قيمة ناتجة إلى مفتاح (Key). علامات الأرقام محدودة للصف Hash.
    وعلامة الرقم ويمكن تسميتها بـAssociative array يمكنها ربط جسمين Objects مع بعضها البعض.

    6)تعابير المدى Range Expressions: مثال:
    كود:
    1 .. 20
    إذا ظهر هذا في أي مكان عدا التعبير الشرطي، يعيد المدى الإحتمالات من تعبير 1 الى تعبير 2.
    والـ( .. ) تظهر الأرقام بين الرقمين التي هي بينهما. مثلا المثال، النقطتين تعني 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20. للإختصار نقوم بوضع هاتين النقطتين.

    7) الرموز Symbols: مثل
    كود:
    :class :lvar :method :$gvar :@ivar :+
    رموز عائدات التي لها اتصال بين اثنين مراسلة بالـStrings.
    والرموز اجسام Objects فريدة تعطي نفس الـجسم عند التقييم Evaluation

    ---------------------------------يتبع (يعني لسه ماخلصنا درس1)---------------------------------
    مشروعي الحالي
    -- انقر هنا لزيارة موضوع المشروع.


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

    رد: [درس] تعليم RGSS2 ومبادئها الأساسية

    شكراً يا أورداز على درسك القيم هذا , سوف أقراه حرف حرف .. و أبدأ بكتابة السكربتات بيدي

    حتى لو كانت تافهة !! و سوف أضيفك في Credits !! تشكر يا بطل ..

  3. #3
    التسجيل
    07-12-2006
    الدولة
    Somewhere >__>
    المشاركات
    175

    Post رد: [درس] تعليم RGSS2 ومبادئها الأساسية

    اقتباس المشاركة الأصلية كتبت بواسطة فتى الالعاب مشاهدة المشاركة
    شكراً يا أورداز على درسك القيم هذا , سوف أقراه حرف حرف .. و أبدأ بكتابة السكربتات بيدي



    حتى لو كانت تافهة !! و سوف أضيفك في Credits !! تشكر يا بطل ..
    شكراً خيو!
    بس للأسف هذا كله تقريباً ما ينفع لعمل سكربت. اتوقع مع الدرس الثالث سوف نبدأ بعمل سكربتات خاصة فينا ^^
    مشروعي الحالي
    -- انقر هنا لزيارة موضوع المشروع.


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

    رد: [درس] تعليم RGSS2 ومبادئها الأساسية

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

    هذه خطوة جبارة منك أخوي العزيز Ordaz !!
    مرجع ممتاز وأسمحلي اني أخذ منك أذن لمشروع خاص لهذا الموضوع ^___~
    تفاصيل ستكون بيني وبينك أن شاء الله



  5. #5
    التسجيل
    07-12-2006
    الدولة
    Somewhere >__>
    المشاركات
    175

    رد: [درس] تعليم RGSS2 ومبادئها الأساسية

    تابع درس 1
    والآن لنبدأ شرح بعض السكربتات المكتوبة بلغة RGSS2:
    كود:
    class Hello_World
    كود:
    class Hello_World p"Hello" end
    شرحه:
    class Hello_World هي اعلان لصف\Class جديد يضاف الى قاعدة بيانات RGSS2.
    p تعني طباعة او عمل صندوق حوار Dialog.
    "Hello" هي مايوجد في صندوق الحوار الذي تم اعلانه باستخدام p.
    end انهاء الصف الذي تم اعلانه "Hello_World".
    وتوتة توتة خلصت الحدوته! سكربت بسيط سهل الاستيعاب.

    سكربت آخر اعقد قليلاً:
    كود:
    class Game
    كود:
    def initialize $RMVXCORP = "Enterbrain" $WINDOWSCORP = "Microsoft" p"RPG Maker VX is produced by #{$RMVXCORP} and Windows VISTA is produced by #{$WINDOWSCORP}" end end
    وشرحه كالآتي:-
    class Game بداية صف
    def initialize تعني اننا بدأنا Definition او تعريف.
    $RMVXCORP = متغير عام.
    $WINDOWSCORP = انظر اعلاه
    p اختصار Print او عمل صندوق حوار.
    الـString يحتوي على #{} أو ما يعني ان نضع قيمة المتغير العام مابين الاقواس. وهذا شبيه قليلاً بالـtext.gsub التي سندرسها في الدرس القادم، ان شاء الله.
    end انهاء الـDefinition
    end انهاء الصف.
    ------------------------------------
    ليس شيئاً معقداً لدرجة! يمكنك فهم السكربت بشيء من التركيز الأقل من قليل.

    ونأخذ آخر شبيه ولكن متقدم اكثر (صفين هذه المرة)
    كود:
    class Montada ID = "404209" MEMBER = "Ordaz" end class Game_Making_Forum < Montada def initialize
    MEMBER2 = "PrinceOfSorrow" p [MEMBER, MEMBER2, ID] end end p Montada::MEMBER
    أها! صفين مختلفين ونحتاج الى شرح:
    class اعلان لصف جديد (من الآن فصاعداُ لن اقول شيئاً. فقد حفظنا ماذا يعني)

    ID + MEMBER = ثوابت. هاتان تتغيران بدون مشاكل في module. سنرى كيف بعد قليل.
    end نهاية صف (من الآن فصاعداُ لن اقول شيئاً. فقد حفظنا ماذا يعني)

    class Game_Making_Forum > Montada تعني ان Game_Making Forum صف تابع لـMontada.

    def initialize تعني Definition (من الآن فصاعداُ لن اقول شيئاً. فقد حفظنا ماذا تعني)

    p هذه المرة مختلفة. حيث اننا الآن نستعمل اقواس Array لطبع MEMBER, MEMBER2 و ID..
    p Montada::MEMBER تعني ان نطبع MEMBER الموجودة في Montada.
    --------------------------------------
    آخ. ظننتها صعبة لكنها اسهل من شرب الماء .
    وممكن تعديل الثوابت بحرية نوعاً ما. عند عمل module (وهي ليست مصاص دماء فلا تخاف)
    مثل:
    كود:
    module Ruby RUBY = "Ruby Programming Language" #Full name RGSS2 = "Ruby Game Scripting System 2" end
    هذا مثال على الـmodule. غالباً ماتكون موجودة في اكثر السكربتات التي فيها Configuration System. مثل Messaging System او Battle System.
    فالثابت RUBY الآن يمكن اعتبارها متغيراً عاماً في السكربت حيث ممكن استدعاءها باستخدام Ruby::RUBY و كذلك الثابت RGSS2. لكن احذر. انظر ادناه:
    كود:
    class Hello $Something = Something module Bye Something = Something end end
    احذر! توقف! هذه كارثة! لا يمكن وضع module داخل صف!
    لا يمكن وضع module داخل صف! لا-يمكن-وضع-module-داخل-صف!
    إحفظ هذا! فهو مهم. انه الصف اولاً ثم ابدأ بالـmodule.
    -----------------------------------------------------
    نهاية الدرس وفي الدرس القادم ان احيانا الله، سندرس معاً كيف نعمل Bitmap او رسمة في الخريطة.
    والسلام عليكم ورحمة الله وبركاته.
    مشروعي الحالي
    -- انقر هنا لزيارة موضوع المشروع.


  6. #6
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

    رد: [درس] تعليم RGSS2 ومبادئها الأساسية

    نايس نايس نايس

    باين أنكم شغالين على الاسكربات من الخاطر اشكرك أخوي على تعبك في القسم وما تقدمه للار بي جي ميكر

    انا بعدي ما قرات الدروس (عندي امتحانات النهائيه للفصل الصيفي الاول الاسبوع الجاي)

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


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

    رد: [درس] تعليم RGSS2 ومبادئها الأساسية

    السلام عليكم

    سامحوني بس مافهمت شي

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

    رد: [درس] تعليم RGSS2 ومبادئها الأساسية

    على كولة سامي , يا حليلك XD ..

    مُغلق لأن الموضوع قديم

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

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