السلام عليكم.
نكمل درسنا
للأخ 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 حرف