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

الموضوع: your own Game Maker GML based game A1

  1. #1
    التسجيل
    22-01-2005
    الدولة
    OctoLand
    المشاركات
    1,000

    Post your own Game Maker GML based game A1

    بسم الله الرحمن الرحيم.

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

    كيف حالكم على العيد ؟.

    نبدأ الموضوع و هو يتحدث عن كيفية تصميم لعبتك بالـGame Maker v6.0 بلغة البرمجة المبنية بداخله.

    قد يستصعب بعضكم ذلك لعدم علمه السابق بالـGM أو لخوفه من انتقاله من أوامر D&D السحب و الإفلات (drag & drop) و لكن صراحة إنها أسهل بكثير و مرتبة بحيث تصبح قراءتها سهلة و أيضا السبب الأساسي لوجودها فهو لمرونة أكبر.

    أنا أتحدث عن النسخة السادسة من البرنامج و إن كنت تستخدم v5.3A أو أقل فن تفيدك هذه الدروس لتحميل البرنامج ادخل على الرابط www.gamemaker.nl.

    و أن أيضا أفترض أن نسختك مسجلة لتسجيل النسخة ولتسجل اتبع ما يلي:
    - خذ هذا الرقم:
    اسم المستخدم (user name) :" حرفيا هو:" Free.
    المفتاح (key): "حرفيا هو:" E3311ABEFB7AD9E6A3F8E078.
    - و ادخل لـHelp < registration.
    - اختر زر enter a registration key.
    - أدخل اسم المستخدم و المفتاح الموجودان أعلاه.

    يجب أن تعرف الأساسيات حيث أني لن أتحدث عن شيء من المفترض أن يكون مفروغ منه.
    قصدي بالأساسيات:
    معرفة الوظائف الأساسية تكفي مثل الـ objects و الـsprites و ما شابه.

    في دروسي سأعتمد على مصادر كثيرة و لكن الأساس هو ملف المساعدة المرفق مع البرنامج و أسباب عملي لذلك:
    - عدم قراءة معظم الأعضاء له.
    - سوء الترجمات و إن وجدت.
    - إمكانية التفاعل هنا و الرد على استفساراتكم.

    قد لا أشرح نقطة فور كتابتها و لكني أشرحها لا حقا تخطى ما لم تفهمه إلا إن قلت لك ألا تفعل.

    شروط الاتصال:
    إن كنت تريد الاستفسار عن شيء عن طريق البريد:
    - بريدي هو octobot_q_12@yahoo.com .
    - يجب أن يكون العنوان متصلا بما موجود فيما بداخل الرسالة.
    - يرحب برسائل الإعجاب و الكره و النقد.
    - لا ترسل الرسائل المتسلسلة.
    - تحلى بالآداب الإسلامية.
    - تحدث بلغة عربية مفهومة أو بالإنجليزية إن لم يكن لك قدرة على العربية و ليس بلهجة غير مفهومة.
    - إن كنت تشك فيما أني قرأت رسالتك أو لم أفعل فراجع أمرين:
    أولا : هل خالفت الشروط السابقة و إن فعلت فأنت و رسائلك في قائمة التجاهل.
    ثانيا: وقت انتظارك فكل شيء يأخذ وقت.
    * ملاحظة: استخدام المنتدى أفضل ليظهر الحل أمام الناس.

    خطتي:
    سلسلة الدروس هذه مكونة من 16 درس + الدروس الإضافية.
    A: الأساسيات.
    B: برمجة الأشياء.
    C: تشغيل اللعبة.
    D: تفاعل المستخدم.
    E: الرسومات.
    F: الصوتيات.
    G: النوافذ.
    H: الموارد.
    I: تغيير الموارد.
    J: الملفات, التسجيل, و تنفيذ البرامج.
    K: بنايات المعلومات.
    L: التلاعب بالجزيئات.
    M: الألعاب متعددة اللاعبين.
    N: استخدام الـ DLL.
    O: رسومات الـ3D.
    P: البرمجة بأسلوب و تأنق.
    تأتي الدروس الإضافية كلما أحسست بالحاجة إليها وعند الطلب لسبب وجيه.
    تذكر أن لدي حياة كحياتك و الوقت لدي يمر بسرعة مرور الوقت لديك و رحم الله مرءا عرف قدر نفسه و أنا لي حياة أخرى خارج جهازي فأرجوا عدم الإلحاح الزائد مما يضيع وقتنا و وقت غيرنا.

    هذا موضوعي و قوانيني بعد قوانين المنتدى تسري:
    الرجاء عدم استخدام كلمة هام للدلالة على الأهمية الهام هو مذكر الهامة أي الدابة ولكن قل مهم.
    الرجاء عدم التمسكن و تضعيف الحال لتحفزني على إجابتك و إن فعلت ضع مكانك في مكاني هل "أشفق" عليك و أتجاهل الآخرين ؟!.

    اختصارات متعارف عليها:
    - Game Maker : GM
    - Game Maker Language : GML

    توكلنا على الله:
    أولا أساسيات لغة الـGML:
    * ملحوظة: من غير المنطقي أن تستخدم المسافة في برنامج و بدلا منها استخدم ' _ ' ( الشرطة السفلية و هي shift + - ) و عندما أقول من غير المنطقي أي أن البرنامج لا يعرف ما هي المسافة فاحذر من هذه الغلطة.

    *ملحوظة1: في الـGM توجد خاصية استخدام خطوط ويندوز أي تستطيع أن تبرمج باللغة العربية ولكنها تسبب كما هائلا من المشاكل غير الضرورية فالإنجليزية أفضل هنا.

    ----------------------------------------------------
    أ - برنامج:
    البرنامج يتكون من عدة إرشادات تسمى بالـ"إفادات" ( مفردها: إفادة ) (statement).

    أي برنامج في هذه اللغة يجب أن يبدأ بـ ' } ' و ينتهي بـ ' { ' ( قوس المجموعة حرف الجيم و الدال تواليا ) .

    بين كل إفادة و أخرى علامة ' ; ' ( الفاصلة المنقوطة حرف الكاف ).

    هناك أنواع كثيرة من الإفادات و هي ما سناقشه قريبا.

    إذا شكل البرنامج العام:
    }
    ; <statement>
    ; <statement>
    ...
    {

    ----------------------------------------------------
    ب - المتغيرات:
    كلمة مرعبة لمبتدئي البرمجة و لكنها في الحقيقة أبسط ما يكون من البرمجة.

    عندما تريد تسمية متغير هناك شرط:
    أن يبدأ اسمه بحرف و أن لا نكون هناك مسافة " " و أقصى طول لاسمه 64 رمز.

    هناك ثلاث أنواع من المتغيرات و هي بسيطة:
    - حقيقي (real): وتحتوي على أرقام فقط و قد تحتوي على الـ ' . ' ( النقطة العشرية حرف الزاي ).
    - أو وتر "لم أجد ترجمة جيدة له" (string): و تحتوي على حروف و أيضا بعض العلامات كالفاصلة
    (قيمة الوتر يجب أن تكون بداخل علامة التنصيص " " حرف الطاء).
    - أو (boolean): و هو إما صحيح "true" أو خاطئ "false".

    تعيين المتغيرات:
    لتعين متغير من أي نوع كان يجب أن تكتب الآتي:
    <variable> = <expression>
    حيث <variable> هو اسم المتغير و <expression> هو التعبير.

    لعمل العمليات الحسابية التي تريدها على المتغير تغير الـ = إلى الخيارات التالية:
    - "=+" و يعبر هذا الرمز عن إضافة هذه القيمة بدل تعيينها أي ان كتبت:
    variable> += 5>
    تعني أنك أضفت القيمة 5 على القيمة القديمة للمتغير.
    - "=-" و يستخدم هذا لطرح القيمة و يأتي على نفس النظام الأول.
    - " =* " يستخدم لمضاعفة المتغير بعدد القيمة ( ضربه فيها )
    - " =/ " (الشرطة هذه من حرف الظاء و ليست ما فوق زر إدخال) و يستخدم لتقسيم المتغير على القيمة.
    - " =| " يستخدم بمعنى " أو " أي أن المتغير يساوي نفسه أو هذه القيمة.
    - " =& " يستخدم بمعنى " مع " أي أن المتغير يساوي نفسه مع هذه القيمة ( دون جمعهما ).
    - " =^ " يستخدم بمعنى "xor" و هذا تعبير سيشرح في وقت لاحق.

    التعابير(مختصرة):
    التعبير يعبر عن قيمة مثلا تستطيع أن تكتب 1 حيث تعبر عن قيمة "واحد" أو 1-1+1-1+1-1+1 حيث تعبر عن قيمة "واحد" أو قد يكون التعبير برنامج كامل يعود بقيمة معينة.

    "جنسية" المتغير:
    مبدأ بسيط جدا جدا:
    المتغير لا يعرف في غير الـobject الذي أعلن \ أو استخدم فيه.
    مثال مختصر:
    لدي كائن (object) اسمه ball أعلنت في متغير اسمه ball_bounce_max و ذهبت إلى كائن آخر و أردت استخدام هذا المتغير من كائن ball لا يمكن فعل هذا بالطريقة العادية لإعلان أو تغيير متغير.

    ----------------------------------------------------
    ج - التعبيرات (مفصلة):
    مع ذكري كلمة مفصلة لا تخف لا يوجد فيها من التفصيل شيء.

    - " && " = مع.
    - " || " = أو.
    - " ^^ " = Xor.
    - " > " = أصغر من ( باللغة الإنجليزية ).
    - " => " = أصغر من أو يساوي.
    - " =! " = لا يساوي.
    - " < " = أكبر من.
    - " =< " = أكبر من أو يساوي.
    - " == " = يساوي ( للمقارنة ).
    - " | " *
    - " & " *
    - " ^ " *
    - " >> " *
    - " << " *
    - " + " = إضافة.
    - " - " = طرح.
    - " / " = قسمة.
    - " * " = ضرب.
    - " ! " = نفي , تحول الخطأ إلى صحيح و الصحيح إلى خطأ.
    - " - " = تحول القيمة التالية للسالب.
    - " ~ " *
    * ملاحظة: كل عامل يليه علامة * هو عامل ليس لي علم بمعناه إن كنت أنت تعلم فرد في الموضوع و شاركنا بعلمك.
    * ملاحظة1: كل عامل يليه علامة * لا أظنه من العوامل المهمة حيث أني لم استخدمها أبداً.

    Xor:
    كما قلت سابقا سأشرحه :
    أنا لن أشرحه هنا لصعوبته أو شيء من هذا القبيل و لكن سأشرحه هنا لعدم مناسبة وضعه هناك.
    بمعرفتي في الـvisual basic ( النسخ القديمة و أنا لا أحب الجديدة ) xor تعني أو ولكن أو بحيث أن أحد الطرفين صحيح و الآخر خاطئ فلا ينتج عن التعبير إلا قيمة واحد و هي الصائبة.

    مثال:
    برنامج يحتوي على العديد من الأمثلة على ما سبق:
    }
    x = 23; l
    str = "hi"; i
    y += 5; i
    x *= y; i
    x = 23 * ((2+4) / y); i
    {
    ملاحظة: وضع حرف الـi لإظهار النص بشكل مقبول و مقروء هذا الحرف ليس من البرنامج و لكنه للمنتدى.



    == ليتم إكماله.
    == نسبة إكمال الدرس A هي: 4\21 ولكنا انتهينا من القسم الصعب.
    == أنا أسجل خروجي.
    في أمان الله.
    التعديل الأخير تم بواسطة OctoBot ; 22-01-2005 الساعة 07:39 AM سبب آخر: أخطاء إملائية

  2. #2
    التسجيل
    03-09-2003
    الدولة
    d=(n_n)=b دار بو خليفة d=(n_n)=b
    المشاركات
    1,096

    مشاركة: your own Game Maker GML based game A1

    ::

    ::

    السلام عليكم و الرحمة.....

    بصراحة

    بداية موفقه اخوي

    يلّه.....شد حيلك و كمل دربك

    الله يوفقك

    و سلامتكم.....

    ::

    ::
    ::

    ::



    "التوقيع فوق التعديل لوووووول "

    3/12/2005...."and UAE Naruto...is back again"

    من مواضيعي

    "مؤقتاً ماشي مواضيع حلوة "

    ::

    ::

  3. #3
    التسجيل
    25-10-2004
    الدولة
    ام الدنيا
    المشاركات
    224

    مشاركة: your own Game Maker GML based game A1

    ازاى استخدم ملفات dll فى الجيم ميكر 6 لانى قبل كدة كنت اعرف استخدمه فى الاصدارات السابقة الا هذا الاصدار

  4. #4
    التسجيل
    22-11-2004
    المشاركات
    36

    مشاركة: your own Game Maker GML based game A1

    بدايه جيده لشرح مميز يا الاخطبوط وارجو انك تكمل الدرس بسرعه لني متحمس جدا:vereymad:

  5. #5
    التسجيل
    22-01-2005
    الدولة
    OctoLand
    المشاركات
    1,000

    مشاركة: your own Game Maker GML based game A1

    ---------------------------------
    اقتباس المشاركة الأصلية كتبت بواسطة son of Qatar
    بدايه جيده لشرح مميز يا الاخطبوط وارجو انك تكمل الدرس بسرعه لني متحمس جدا:vereymad:
    هذا ما كنت أخشاه "الأخطبوط".
    octobot أحسن و هي إختصار لـ octopus robot و هو روبوت حاولت أن أبنيه لفترة و فشلت فشلا ذريعا ( للمهتمين بالروبوتات الخطأ هو بالأخص التحكم بـ8 أيدي في نفس الوقت ).
    ---------------------------------
    tarekmahmoud
    هذا هو الدرس الرابع عشر فإما تصبر أو تتصل بي عبر الإيميل لعدة كلمات إرشادية.
    ---------------------------------
    UAE Naruto
    حسنا و لكن هذه ليست بدايتي بدايتي بدأت مع v4.0.
    ---------------------------------
    أنا أمشي على أسس يومية التكملة بعد تقريبا 24 ساعة مع اني قد كتبتها و لكني حملت الصفحة و قطعت الاتصال ثم بدأت بالكتابة و فجأة بعد أن نسخت شيئا للدرس تحولت الصفحة بيضاء و مسحت و قد كنت أنهيت أكثر من نصف الدرس A كاملا و لكن كما قلت سابقا الصعب انتهى و لن يأخذ مني ذلك أكثر من ساعة.
    مع السلامة.

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

    مشاركة: your own Game Maker GML based game A1

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

    يسعدني جداً وجود انسان اخر بالمنتدى يستطيع اعطاء دروس بلغة الجيم ميكر GML.
    حيث اني قمت بوضع دروس لكن للاسف لم اجد التجاوب المطلوب. و اعتقد ان العيب من طريقة شرحي وليس من الاعضاء. فأسلوبي متقدم بعض الشيء مع ضعف في اللغة . عموماً سأتابع دروسك لاتأكد من معلوماتي و اختبر قدراتي بلغة الجيم ميكر.

    وهذي وصله موضوعي .. ساكمل دروسي لاحقاً .. حيث اني كنت اريد ان اربط بين لغة السي و لغة الجيم ميكر.
    http://www.montada.com/showthread.php?t=324698

    وشكراً ... و ارجو ان لا تتكاسل مثلي.
    وبالتوفيق

  7. #7
    التسجيل
    22-01-2005
    الدولة
    OctoLand
    المشاركات
    1,000

    مشاركة: your own Game Maker GML based game A1

    اقتباس المشاركة الأصلية كتبت بواسطة Son Of UAE
    السلام عليكم ورحمة الله وبركاته.

    يسعدني جداً وجود انسان اخر بالمنتدى يستطيع اعطاء دروس بلغة الجيم ميكر GML.
    حيث اني قمت بوضع دروس لكن للاسف لم اجد التجاوب المطلوب. و اعتقد ان العيب من طريقة شرحي وليس من الاعضاء. فأسلوبي متقدم بعض الشيء مع ضعف في اللغة . عموماً سأتابع دروسك لاتأكد من معلوماتي و اختبر قدراتي بلغة الجيم ميكر.

    وهذي وصله موضوعي .. ساكمل دروسي لاحقاً .. حيث اني كنت اريد ان اربط بين لغة السي و لغة الجيم ميكر.
    http://www.montada.com/showthread.php?t=324698

    وشكراً ... و ارجو ان لا تتكاسل مثلي.
    وبالتوفيق
    السلام عليكم.
    يسعدني انك تعرف الـGML و لا تخف سوف أكمل الدروس انشاء الله.
    توقعوا الدرس في غضون ساعة أو نحوها.

  8. #8
    التسجيل
    22-01-2005
    الدولة
    OctoLand
    المشاركات
    1,000

    إكمال: your own Game Maker GML based game A2

    السلام عليكم.
    نكمل درسنا
    للأخ Son Of UAE انظر الملف المرفق ( النقاط ) أخي تفوق على 50,000 نقطة في سلحوف ( وهي ما أعتقده كثير )
    كنا في ج - التعبيرات ( مفصلة ) و سنكمل في د - المتغيرات ( إضافة )

    --------------------------------------------------------------------------------------------------------
    د - المتغيرات( إضافية ) :
    سابقا تحدثنا عن المتغيرات أن لكل متغير "جنسية" و أنه لا يخرج من الكائن المرتبط معه.

    و لكن و في حالات كثيرة جدا قد تريد أن تتحكم بكائن من كائن آخر أو أن تستخدم المتغير الخاص به على أية حال ! هل الـGM يمنع ذلك ؟

    لا طبعا لا و لفعل ذلك بطريقة لا تفوق ما سبق صعوبة:
    <object>.<variable>
    و هي النقطة " . " حيث تضع قبل المتغير اسم الكائن المرتبط مع المتغير و نقطة بالصيغة السابقة و انتهينا.

    و هناك كائنات خاصة بهذا:
    - self: تعني الكائن الذي يطبق فيه الكود.
    - other: هو الطرف الآخر في التصادم ( كائنان تصادمان يصبح other هو الكائن المتصادم و لكنه ليس الذي فيه هذا الكود ).
    - all: كل الكائنات ببساطة.
    - noone: لا كائن ( استعمالاتها لاحقا ).
    - global: ليس كائن بل وعاء ليحيوي المتغيرات.

    و لكن إذا وضعت عدة نسخ من الكائن نفسه و أردت تغير السرعة فكيف تفعل ذلك دون أن تأثر في نظائره.
    مثال طبعا: لو كان لدينا الكائن ball و فيه المتغير spd و كتبنا:
    ball.spd = 0
    إذا كل النسخ من هذا الكائن ستحول سرعتها للصفر و الحل هو "بطاقة الأحوال":
    بطاقة الأحوال أو رقم التعريف سيتأكد من أنك لا تتحكم إلا بالكائن المميز الوحيد الذي تريده و ليس آخر هناك عدة طرق لمعرفة رقم كائن محدد و ليس آخر الطريقة الوحيدة التي ستذكر الآن هي أن تضع الكائن في غرفة و تمرر الفأرة فوقه و ترى الرقم الظاهر في الأسفل على شريط المعلومات.
    --------------------------------------------------------------------------------------------------------
    هـ - المتغيرات( إضافية ) 1 :
    بالطريقة السابقة تستطيع أخذ المتغيرات من أي كائن موجود في اللعبة.

    و لكنها في بعض الحالات ليست الطريقة الأسهل.

    مثلا تريد متغير يحدد السرعة القصوى للبطل و بدل إعادة ضبطه و تناقله بين الكائنات استخدم المتغيرات العالمية.

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

    الصيغة:
    <global.<variable

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

    *ملاحظة: هناك طريقة أخرى لإعلان المتغيرات لكنها لا تستعمل أبدا لوجود الطرق السابقة و هي ضبط المتغير حال استخدامه.

    *ملاحظة1: معروف في كل لغة برمجة أن المتغيرات تسبب البطء و المشاكل حال كثرة استخدامها لذلك استخدمها عند الضرورة ( لا أقصد تخويفك منها ).
    --------------------------------------------------------------------------------------------------------

    مهم جدا أن أعرف إن فهمت ما سبق.

    إن فعلت smack your screen's side & continue.

    و إن لم تفعل راسلني فورا لشرح أي نقطة لم تفهمها.

    --------------------------------------------------------------------------------------------------------
    و - المصفوفات:
    نحن ندرس المصفوفات طوال حياتنا و نخاف منها في البرمجة.

    لماذا؟ هل تعرف ما هي المصفوفة؟

    المصفوفة ذات الأحادية الحد هي أسطر كثيرة و على كل سطر قيمة:
    مثال: ( تشبيه )
    أحادية البعد:
    هذا شكلها تقريبا:
    اسم المصفوفة هنا
    1- ...
    2- ...
    3- ...
    4- ...
    ...

    أما ذات البعدين:
    فهي جدول كأي جدول رأيته في حياتك يتكون من أعمدة و سطور.
    شكلها:
    اسم المصفوفة هنا
    1 - 2- 3-
    1- 1,1- 2,1- 3,1-
    2- 1,2- 2,2- 3,2-
    3- 1,3- 2,3- 3,3-
    ...

    و هكذا هي المصفوفات ( كل مرة كتبت "المصفوفات" أو "المصفوفة" أنسى أكتب الصاد و أنا الآن معصب و بطني يؤلمني من هذا الشيء).
    أما من جهة الكود فهي بسيطة أيضا.


    **************************ملاحظة (مهمة جدا جدا جدا): في دروسي كما لاحظت أنا أكتب
    المتغيرات ثم المتغيرات 1 ثم المتغيرات 2 و ذلك لتعويدك على أن كل شيء في الـGM يبدأ من الصفر و من ذلك المصفوفات و لو أني أخطأت و كتبت أن الحقل الاول هو 1,1 في الأعلى فهو 0,0 أي أن هناك السطر 0 و العمود 0.


    صيغة:
    ball_insts[0] i
    ball_spd[0,0] i
    ( حرف الـi ليس من الكود ولكنه وضع ليظهر الكود بالشكل المطلوب )
    السطر الأول هو الطريقة لإعلان المصفوفة أحادية البعد و الرقم بين القوسين " [ " و " ] " ( دال و جيم تواليا ) هو رقم السطر كما في شكل المصفوفة أعلاه فإن كنت تريد السطر الخامس مثلا تكتب:
    ball_insts[5] i

    و أما السطر الثاني فقهو لإعلان مصفوفة ذات بعدين و إن كنت أريد الحقل الواقع في السطر السابع و العمود الحادي عشر أو السطر الحادي عسر و العمود السابع ( حيث انها ليست جداول حقا ذلك كان تشبيه فقط ) أكتب:
    ball_spd[7,11] i
    و بالنسبة لي و أنا أحب النظام جدا جدا هو ان المصفوفات أفضل شيء في البرمجة ( إستخداما ) و هي أفضل من استخدام الكثير من المتغيرات مثل:
    ball_spd_1
    ball_spd_2
    ball_spd_3
    --------------------------------------------------------------------------------------------------------
    ز - إفادة if :
    سنبدأ الآن بشرح بعض الإفادات البسيطة و إفادة if هي أول شيء تعلمته في الـGML.

    في لغتنا العربية لدينا كلمة " إذا " و عندما تقول إذا بعدها تقول تعبير و رد الفعل و إن لم يكن.

    مثلا : إذا أهملت سترسب و إن لم تفعل ستنجح.
    إذا هو العامل هنا و " أهملت " هو التعبير و إن كان هذا التعبير صحيحا سيأتي رد الفعل " سترسب " و إن كان التعبير خاطئ فسيأتي ما بعد " إن لم " إن وجدت و هنا هو " ستنجح "
    بالكود نقول:
    if (<expression>) <statement> i
    أو
    if (<expression>) <statement> else <statement> i
    ( حرف الـi ليس من الكود ولكنه وضع ليظهر الكود بالشكل المطلوب )

    *ملاحظة: الأقواس المحيطة بالتعبير مهمة.

    و طريقة عملها هي أن يقاس التعبير و إن كان صحيحا فستطبق الإفادة التالية و إن لم تكن صحيحة فيطبق ما بعد else إن وجد.
    تعتبر إفادتي if و else برنامجان فالطريقة المثلى لكتابة ذلك:
    if (<expression>) i
    }
    <statement>
    {
    else
    }
    <statement>
    {
    --------------------------------------------------------------------------------------------------------
    ح - إفادة repeat:
    إفادة repeat هي إفادة نادرة الإستخدام و لكنها أيضا إفادة قوية.

    هي أيضا بسيطة و صيغتها قصيرة.

    <repeat (<expression>) <statement
    حيث أن التعبير يجب أن ينتج عنه قيمة حقيقية أو رقمية لا حروف ولا صحيح أو خاطئ فقط أرقام.

    تعيد إفادة repeat الإفادة القادمة بعد التعبير بالرقم الناتج عن التعبير أي لو كان 5 مثلا فسوف تعاد الإفادة 5 مرات.

    انتبه الكمبيوترات سريعة يا رجل إنها سريعة جدا فالإفادة ستعاد و تحدث في نفس الوقت مالم تضع أمرا بالانتظار.
    --------------------------------------------------------------------------------------------------------
    ط - إفادة while:
    إفادة while شبيهة بالإفادة السابقة.
    صيغتها:
    <while (<expression>) <statement
    و كما يشير الاسم فهي تعيد الإفادة التالية للتعبير طالما أن التعبير صحيح إن كان خاطئ ستوقف.

    انتبه قد تعيد الإفادة الأمر بلا نهاية إن أخطأت.
    --------------------------------------------------------------------------------------------------------
    ي - إفادة do:
    على عكس الإفادة السابقة.
    صيغتها:
    (<do <statement> until (<expression
    و هي تعيد الإفادة حتى تثبت صحة التعبير.

    انتبه قد تعيد الإفادة الأمر بلا نهاية إن أخطأت.
    --------------------------------------------------------------------------------------------------------
    ك - إفادة for:
    صيغتها:
    <for (<statement> ; <expression> ; <statement1>) <statement2
    و طريقة سيرها كما يلي:
    1- يتم تطبيق الإفادة statement.
    2- يتم قياس التعبير expression.
    3- يتم تطبيق الإفادة statement2.
    4- يتم تطبيق الإفادة statement1.
    و تعاد الخطوات من 2 إلى 4 حتى يثبت خطأ التعبير.
    --------------------------------------------------------------------------------------------------------
    ل - إفادة switch:
    صيغتها:
    (<switch (<expression
    }
    case <expression1> : <statement> ; ... ; break; i
    case <expression2> : <statement1> ; ... ; break; i
    ...
    default: <statement3> ; ... i
    {
    طريقة عملها:
    1- يتم قياس التعبير expression.
    2- يتم قياس تعبير كل case.
    3- أول تعبير وجدت قيمته = قيمة التعبير الرئيسي ( في الأعلى ) تطبق اللإفادة بجانبه:
    مثلا إن كان التعبير المطابق للتعبير الرئيسي هو expression2 فسيتم تطبيق الإفادة statement1 و هكذا.
    4- إن لم يوجد أي تعبير مطابق فسيتم تطبيق ما بعد default و هذا ليس ضروريا ( وضع default).
    --------------------------------------------------------------------------------------------------------
    م - إفادة break:
    صيغتها:
    break
    عندما تستخدم داخل إفادة for أو while أو repeat أو switch أو with* هي تنهي هذه الإفادة و إن استخدمت خارج هذه الإفادات فهي تنهي البرنامج ( ليس اللعبة البرنامج , ليس اللعبة البرنامج فقط)
    *ملاحظة: إفادة with سيتم شرحها لاحقا.
    --------------------------------------------------------------------------------------------------------
    ن - إفادة continue:
    صيغتها:
    continue
    إذا استخدمت داخل إفادة for أو while أو repeat أو with فهي تنتقل للقيمة التالية.
    *ملاحظة: لا تستخدمها أبدا لا استخدامات مفيدة لها.
    --------------------------------------------------------------------------------------------------------
    ص - إفادة exit:
    صيغتها:
    exit
    تنهي البرنامج ( ليس اللعبة البرنامج , ليس اللعبة البرنامج فقط).
    --------------------------------------------------------------------------------------------------------
    ع - الدوال:
    و هي جمع دالة و صيغتها:
    function> (<argumen0>,<argument1>) i>
    حيث function هو اسم الدالة و argument0 و argument1 هي معطيات تحتاجها بعض الدوال قد تصل إلى الحد الأقصى و هو 16 معطى و للدوال نوعان:
    الاول: وهو دوال مبنية داخل الـGM.
    الثاني: scripts انت تكتبهم و تستخدمه كدوال ( و بهذه الطريقة الناس يبنون المحركات بالـGM يبنون لهم مكتبة من الدوال و يستدعونها كل ما احتاجوها).

    *ملاحظة: يجب أن تضع القوسين المحيطة بالمعطيات و لو لم يكن هناك معطيات.

    بعض الدوال ترجع لك قيمة و بعضها يطبق أوامر فقط.
    السلام عليكم.
    نكمل درسنا
    للأخ Son Of UAE انظر الملف المرفق ( النقاط ) أخي تفوق على 50,000 نقطة في سلحوف ( وهي ما أعتقده كثير )
    كنا في ج - التعبيرات ( مفصلة ) و سنكمل في د - المتغيرات ( إضافة )

    --------------------------------------------------------------------------------------------------------
    د - المتغيرات( إضافية ) :
    سابقا تحدثنا عن المتغيرات أن لكل متغير "جنسية" و أنه لا يخرج من الكائن المرتبط معه.

    و لكن و في حالات كثيرة جدا قد تريد أن تتحكم بكائن من كائن آخر أو أن تستخدم المتغير الخاص به على أية حال ! هل الـGM يمنع ذلك ؟

    لا طبعا لا و لفعل ذلك بطريقة لا تفوق ما سبق صعوبة:
    <object>.<variable>
    و هي النقطة " . " حيث تضع قبل المتغير اسم الكائن المرتبط مع المتغير و نقطة بالصيغة السابقة و انتهينا.

    و هناك كائنات خاصة بهذا:
    - self: تعني الكائن الذي يطبق فيه الكود.
    - other: هو الطرف الآخر في التصادم ( كائنان تصادمان يصبح other هو الكائن المتصادم و لكنه ليس الذي فيه هذا الكود ).
    - all: كل الكائنات ببساطة.
    - noone: لا كائن ( استعمالاتها لاحقا ).
    - global: ليس كائن بل وعاء ليحيوي المتغيرات.

    و لكن إذا وضعت عدة نسخ من الكائن نفسه و أردت تغير السرعة فكيف تفعل ذلك دون أن تأثر في نظائره.
    مثال طبعا: لو كان لدينا الكائن ball و فيه المتغير spd و كتبنا:
    ball.spd = 0
    إذا كل النسخ من هذا الكائن ستحول سرعتها للصفر و الحل هو "بطاقة الأحوال":
    بطاقة الأحوال أو رقم التعريف سيتأكد من أنك لا تتحكم إلا بالكائن المميز الوحيد الذي تريده و ليس آخر هناك عدة طرق لمعرفة رقم كائن محدد و ليس آخر الطريقة الوحيدة التي ستذكر الآن هي أن تضع الكائن في غرفة و تمرر الفأرة فوقه و ترى الرقم الظاهر في الأسفل على شريط المعلومات.
    --------------------------------------------------------------------------------------------------------
    هـ - المتغيرات( إضافية ) 1 :
    بالطريقة السابقة تستطيع أخذ المتغيرات من أي كائن موجود في اللعبة.

    و لكنها في بعض الحالات ليست الطريقة الأسهل.

    مثلا تريد متغير يحدد السرعة القصوى للبطل و بدل إعادة ضبطه و تناقله بين الكائنات استخدم المتغيرات العالمية.

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

    الصيغة:
    <global.<variable

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

    *ملاحظة: هناك طريقة أخرى لإعلان المتغيرات لكنها لا تستعمل أبدا لوجود الطرق السابقة و هي ضبط المتغير حال استخدامه.

    *ملاحظة1: معروف في كل لغة برمجة أن المتغيرات تسبب البطء و المشاكل حال كثرة استخدامها لذلك استخدمها عند الضرورة ( لا أقصد تخويفك منها ).
    --------------------------------------------------------------------------------------------------------

    مهم جدا أن أعرف إن فهمت ما سبق.

    إن فعلت smack your screen's side & continue.

    و إن لم تفعل راسلني فورا لشرح أي نقطة لم تفهمها.

    --------------------------------------------------------------------------------------------------------
    يقول النص أكبر من 20,000 حرف
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة score 51,000 !.PNG‏  

  9. #9
    التسجيل
    22-01-2005
    الدولة
    OctoLand
    المشاركات
    1,000

    مشاركة: your own Game Maker GML based game A1

    يقول النص أكبر من 20,000 حرف
    --------------------------------------------------------------------------------------------------------
    و - المصفوفات:
    نحن ندرس المصفوفات طوال حياتنا و نخاف منها في البرمجة.

    لماذا؟ هل تعرف ما هي المصفوفة؟

    المصفوفة ذات الأحادية الحد هي أسطر كثيرة و على كل سطر قيمة:
    مثال: ( تشبيه )
    أحادية البعد:
    هذا شكلها تقريبا:
    اسم المصفوفة هنا
    1- ...
    2- ...
    3- ...
    4- ...
    ...

    أما ذات البعدين:
    فهي جدول كأي جدول رأيته في حياتك يتكون من أعمدة و سطور.
    شكلها:
    اسم المصفوفة هنا
    1 - 2- 3-
    1- 1,1- 2,1- 3,1-
    2- 1,2- 2,2- 3,2-
    3- 1,3- 2,3- 3,3-
    ...

    و هكذا هي المصفوفات ( كل مرة كتبت "المصفوفات" أو "المصفوفة" أنسى أكتب الصاد و أنا الآن معصب و بطني يؤلمني من هذا الشيء).
    أما من جهة الكود فهي بسيطة أيضا.


    **************************ملاحظة (مهمة جدا جدا جدا): في دروسي كما لاحظت أنا أكتب
    المتغيرات ثم المتغيرات 1 ثم المتغيرات 2 و ذلك لتعويدك على أن كل شيء في الـGM يبدأ من الصفر و من ذلك المصفوفات و لو أني أخطأت و كتبت أن الحقل الاول هو 1,1 في الأعلى فهو 0,0 أي أن هناك السطر 0 و العمود 0.


    صيغة:
    ball_insts[0] i
    ball_spd[0,0] i
    ( حرف الـi ليس من الكود ولكنه وضع ليظهر الكود بالشكل المطلوب )
    السطر الأول هو الطريقة لإعلان المصفوفة أحادية البعد و الرقم بين القوسين " [ " و " ] " ( دال و جيم تواليا ) هو رقم السطر كما في شكل المصفوفة أعلاه فإن كنت تريد السطر الخامس مثلا تكتب:
    ball_insts[5] i

    و أما السطر الثاني فقهو لإعلان مصفوفة ذات بعدين و إن كنت أريد الحقل الواقع في السطر السابع و العمود الحادي عشر أو السطر الحادي عسر و العمود السابع ( حيث انها ليست جداول حقا ذلك كان تشبيه فقط ) أكتب:
    ball_spd[7,11] i
    و بالنسبة لي و أنا أحب النظام جدا جدا هو ان المصفوفات أفضل شيء في البرمجة ( إستخداما ) و هي أفضل من استخدام الكثير من المتغيرات مثل:
    ball_spd_1
    ball_spd_2
    ball_spd_3
    --------------------------------------------------------------------------------------------------------
    ز - إفادة if :
    سنبدأ الآن بشرح بعض الإفادات البسيطة و إفادة if هي أول شيء تعلمته في الـGML.

    في لغتنا العربية لدينا كلمة " إذا " و عندما تقول إذا بعدها تقول تعبير و رد الفعل و إن لم يكن.

    مثلا : إذا أهملت سترسب و إن لم تفعل ستنجح.
    إذا هو العامل هنا و " أهملت " هو التعبير و إن كان هذا التعبير صحيحا سيأتي رد الفعل " سترسب " و إن كان التعبير خاطئ فسيأتي ما بعد " إن لم " إن وجدت و هنا هو " ستنجح "
    بالكود نقول:
    if (<expression>) <statement> i
    أو
    if (<expression>) <statement> else <statement> i
    ( حرف الـi ليس من الكود ولكنه وضع ليظهر الكود بالشكل المطلوب )

    *ملاحظة: الأقواس المحيطة بالتعبير مهمة.

    و طريقة عملها هي أن يقاس التعبير و إن كان صحيحا فستطبق الإفادة التالية و إن لم تكن صحيحة فيطبق ما بعد else إن وجد.
    تعتبر إفادتي if و else برنامجان فالطريقة المثلى لكتابة ذلك:
    if (<expression>) i
    }
    <statement>
    {
    else
    }
    <statement>
    {
    --------------------------------------------------------------------------------------------------------
    ح - إفادة repeat:
    إفادة repeat هي إفادة نادرة الإستخدام و لكنها أيضا إفادة قوية.

    هي أيضا بسيطة و صيغتها قصيرة.

    <repeat (<expression>) <statement
    حيث أن التعبير يجب أن ينتج عنه قيمة حقيقية أو رقمية لا حروف ولا صحيح أو خاطئ فقط أرقام.

    تعيد إفادة repeat الإفادة القادمة بعد التعبير بالرقم الناتج عن التعبير أي لو كان 5 مثلا فسوف تعاد الإفادة 5 مرات.

    انتبه الكمبيوترات سريعة يا رجل إنها سريعة جدا فالإفادة ستعاد و تحدث في نفس الوقت مالم تضع أمرا بالانتظار.
    --------------------------------------------------------------------------------------------------------
    ط - إفادة while:
    إفادة while شبيهة بالإفادة السابقة.
    صيغتها:
    <while (<expression>) <statement
    و كما يشير الاسم فهي تعيد الإفادة التالية للتعبير طالما أن التعبير صحيح إن كان خاطئ ستوقف.

    انتبه قد تعيد الإفادة الأمر بلا نهاية إن أخطأت.
    --------------------------------------------------------------------------------------------------------
    ي - إفادة do:
    على عكس الإفادة السابقة.
    صيغتها:
    (<do <statement> until (<expression
    و هي تعيد الإفادة حتى تثبت صحة التعبير.

    انتبه قد تعيد الإفادة الأمر بلا نهاية إن أخطأت.
    --------------------------------------------------------------------------------------------------------
    ك - إفادة for:
    صيغتها:
    <for (<statement> ; <expression> ; <statement1>) <statement2
    و طريقة سيرها كما يلي:
    1- يتم تطبيق الإفادة statement.
    2- يتم قياس التعبير expression.
    3- يتم تطبيق الإفادة statement2.
    4- يتم تطبيق الإفادة statement1.
    و تعاد الخطوات من 2 إلى 4 حتى يثبت خطأ التعبير.
    --------------------------------------------------------------------------------------------------------
    ل - إفادة switch:
    صيغتها:
    (<switch (<expression
    }
    case <expression1> : <statement> ; ... ; break; i
    case <expression2> : <statement1> ; ... ; break; i
    ...
    default: <statement3> ; ... i
    {
    طريقة عملها:
    1- يتم قياس التعبير expression.
    2- يتم قياس تعبير كل case.
    3- أول تعبير وجدت قيمته = قيمة التعبير الرئيسي ( في الأعلى ) تطبق اللإفادة بجانبه:
    مثلا إن كان التعبير المطابق للتعبير الرئيسي هو expression2 فسيتم تطبيق الإفادة statement1 و هكذا.
    4- إن لم يوجد أي تعبير مطابق فسيتم تطبيق ما بعد default و هذا ليس ضروريا ( وضع default).
    --------------------------------------------------------------------------------------------------------
    م - إفادة break:
    صيغتها:
    break
    عندما تستخدم داخل إفادة for أو while أو repeat أو switch أو with* هي تنهي هذه الإفادة و إن استخدمت خارج هذه الإفادات فهي تنهي البرنامج ( ليس اللعبة البرنامج , ليس اللعبة البرنامج فقط)
    *ملاحظة: إفادة with سيتم شرحها لاحقا.
    --------------------------------------------------------------------------------------------------------
    ن - إفادة continue:
    صيغتها:
    continue
    إذا استخدمت داخل إفادة for أو while أو repeat أو with فهي تنتقل للقيمة التالية.
    *ملاحظة: لا تستخدمها أبدا لا استخدامات مفيدة لها.
    --------------------------------------------------------------------------------------------------------
    ص - إفادة exit:
    صيغتها:
    exit
    تنهي البرنامج ( ليس اللعبة البرنامج , ليس اللعبة البرنامج فقط).
    --------------------------------------------------------------------------------------------------------
    ع - الدوال:
    و هي جمع دالة و صيغتها:
    function> (<argumen0>,<argument1>) i>
    حيث function هو اسم الدالة و argument0 و argument1 هي معطيات تحتاجها بعض الدوال قد تصل إلى الحد الأقصى و هو 15 معطى و للدوال نوعان:
    الاول: وهو دوال مبنية داخل الـGM.
    الثاني: scripts انت تكتبهم و تستخدمه كدوال ( و بهذه الطريقة الناس يبنون المحركات بالـGM يبنون لهم مكتبة من الدوال و يستدعونها كل ما احتاجوها).

    *ملاحظة: يجب أن تضع القوسين المحيطة بالمعطيات و لو لم يكن هناك معطيات.

    بعض الدوال ترجع لك قيمة و بعضها يطبق أوامر فقط.
    --------------------------------------------------------------------------------------------------------
    ملاحظة: هناك درس حذفته لا معلومات واضحه فيه.
    --------------------------------------------------------------------------------------------------------
    ف - بنايات with:
    لنقل أن لديك 8 نسخ من الكائن ball و تريد أن تزيد المتغير spd في كل النسخ بقيمة 3 فستكتب:
    ball.spd += 3
    و لكن هذا خاطئ فهذا سيأخذ قيمة spd في النسخة الأولى و يزيد عليه 3 أي أن كل النسخ ستتساوى قيمة المتغير spd فيها مع النسخة الأولى ( أول نسخة صنعت ) و هذا سبب وجود بنايات with و صيغتها:
    <with (<expression>) <statement
    حيث التعبير قد يتضمن نسخة أو أكثر من أي كائن أو كائن ( لتحديد كل النسخ من الكائن ) أو أحد الكائنات الخاصة (all,noone,self,other) و الإفادة تطبق للكائنات \ أو النسخ المذكورة.
    فلنزيد 3 لمتغير spd لكل نسخة من الكائن ball نكتب:
    with (ball) spd += 3
    --------------------------------------------------------------------------------------------------------
    س - التعليقات:
    و أنت تكتب كود تستطيع أن تضيع كلاما لا يحسب في البرمجة و ذلك بوضع // أمامه.
    --------------------------------------------------------------------------------------------------------
    الله أكبر.
    فلتحيا أمتنا العربية بكل خير.
    خلصت و نسبة الاتهاء 21\21.
    أبجد هوز حطي كلمن صعفس.

    مهم جدا أن أعرف إن فهمت ما سبق.

    إن فعلت smack your screen's side & wait for lesson B.

    و إن لم تفعل راسلني فورا لشرح أي نقطة لم تفهمها.

    إذا استفدت من شيء أرسل لي رسالة أو رد في الموضوع عشان أحس بعملي مهما كانت الفائدة صغيرة.

    مع السلامة.

  10. #10
    التسجيل
    22-11-2004
    المشاركات
    36

    مشاركة: your own Game Maker GML based game A1

    شكرا لك على شرحك المميز وش تبي اكثر من كذيه

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

    مشاركة: your own Game Maker GML based game A1

    مشكور جداً . فعلاً انت اخطبوط . اسم على مسمى. ( ما شاء الله )
    انتظر الدروس المتقدمة

    هل تقبل التعلقيات على الدروس مني انا شخصيا ؟

    تابع ...

  12. #12
    التسجيل
    22-01-2005
    الدولة
    OctoLand
    المشاركات
    1,000

    مشاركة: your own Game Maker GML based game A1

    يسعدني أني رأيت ردين !

    الناس هنا نايمين
    المهم سأكمل الدرس الثاني غدا .
    و أنا أرحب بتعليقاتك و تعليقات أي كان "قل خيرا أو اصمت".
    إلى الدرس B.

  13. #13
    التسجيل
    22-08-2004
    المشاركات
    1

    مشاركة: your own Game Maker GML based game A1

    مشكور على مجهودك الثمين أخى................

  14. #14
    التسجيل
    06-08-2004
    الدولة
    Saudi Arabia
    المشاركات
    1,754

    مشاركة: your own Game Maker GML based game A1

    مشكوووووووووووووووووووووووووووووووور الواحد ما يقدر يشكرك أخوي
    و تابع

  15. #15
    التسجيل
    26-01-2004
    الدولة
    مصر
    المشاركات
    395

    ممتاز يا اخطبوط

    احب اهنيك على شرحك اللمتاز ل gml حتى الأن وانا بتابع دروسك الأن
    لان الحيم ميكر كبرنامج هو سهل ولكن الأصعب فية هو اللغة الخاصه به
    واتمنى ايضا منSON OF UAE كمالة موضوعة السابق ايضا عن GML ايضا وياريت تشكل انت وهو فريق فى GML بحيث لا تشرحوا دروس او اوامر مشابها لبعضها
    التعديل الأخير تم بواسطة Ahmedbna ; 22-02-2005 الساعة 05:44 PM سبب آخر: نسيت اضع اسم SON OF UAE

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

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

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