[شرح] المتغيرات في GML
صفحة 1 من اصل 1 • شاطر
[شرح] المتغيرات في GML
[شرح] المتغيرات في GML
زي أي لغة برمجة الـ #GML ( لغة الجيم ميكر ) بتستخدم #المتغيرات كحاجة أساسية في اللغة.. ودي من الناحية المادية بتعتبر أمكان في الذاكرة بتاعت الكمبيوتر بيتخزن فيها قيمة : أرقام (زي 321 و 5.15215 و -521 ...) ونصوص زي ("Hello world!") , وده عشان تعيد استخدامها في وقت تاني او تستخدمها في الوقت الحالي, ولكل متغير"اسم" خاص بيه بتستخدمه لو عايز تسترجع قيمة المتغير وتستخدمها في حاجة معينة في لعبتك.. المتغيرات ببساطة بتستخدمها عشان تخزن قيمة وتستخدمها في أكتر من عملية باستخدام اسم المتغير وده يخلينا نسأل لماذا لا نستخدم القيمة مباشرة دون المتغير؟
فكر معايا كده لو عندنا حاجة زي الpi ( ط في الرياضيات) واللي قيمته 3.14159265359 وعايزين نعمل برنامج بيجيب محيط الدائرة ومساحة الدائرة اللي نصف قطرها 5 .. بالنسبة للمحيط هنكتب المعادلة:
المحيط = 2 × ط × نصف القطر = 2 × 3.14159265359 × 5 = كذا والمساحة نفس الكلام تخيل بقى كل مرة عايز تستخدم pi هتكتب ثلاثة نقطة واحد أربعة واحد خمسة تسعة .. وهنا ييجي دور المتغيرات انت هتعمل متغير تسميه pi وتدخل قيمته مرة واحدة وساعة ما تعوز تستخدمه تستبدل قيمته المكونة من 13 رقم بحرفين اتنين بس ! ده غير ان في أي وقت عايز تغير قيمة المتغير هتغيرها مرة واحدة بس ومش هنحتاج نغيره في كل سطر من الكود لان اسم المتغير بيعبر عنه.
انشاء المتغير..
في الـGML لازم يكون اسم المتغير يبدأ بحرف والاسم ممكن يحتوي على حروف وأرقام وعلامة الـunderscore '_' على ألا يكون أكتر من 64 رمز (مجموع الحروف والاراقام وعلامات '_')
على سبيل المثال.. انت ممكن تسمي المتغير myspeed , hp , food_amount , num1 ..
ولا يمكن تسمي المتغير 5day , my-speed , food amount , *num1
في أي لغة برمجة لازم تعمل إعلان declare للمتغير قبل ما تستخدمه يعني تعرّف الكمبيوتر ان انت هتعمل متغير اسمه كذا بقيمة كذا عشان يخزنه في الذاكرة عنده , في الجيم ميكر مش بالضرورة دائماً انك تعمل كده لان في أنواع مختلفة منها وهم متغيرات :
- instance : وده أكتر حاجة بنستخدمها وبتبقى خاصة بكل أويجكت لوحده وممكن تستخدمها في أي حدث وفي أي كود
مثال على كده نعمل أوبجكت للاعب في لعبة TDS فنبدأ باننا نفتح step event ونكتب أكواد الحركة على الشكل التالي :
- الكود:
if keyboard_check(ord("A")) {
x -= 2
}
if keyboard_check(ord("D")) {
x += 2
}
if keyboard_check(ord("W")) {
y -= 2
}
if keyboard_check(ord("S")) {
y += 2
}
لما تشغل اللعبة هتلاحظ ان السرعة اللي بيتحرك بيها بطيئة عشان كده هترجع للكود وتغير كل رقم 2 موجود وتخليه 4 مثلاً .. طيب افرض كان الكود أكبر من كده وفي رقم 2 تاني في حتة تانية من الكود هتعد تسأل نفسك هل ده تبع الحركة ولا تبع حاجة تانية هنا بقى ميزة المتغير بانك ممكن تعرف متغير اسمه myspeed وتحطله قيمة وتستخدمه بدل الأرقام بحيث لو عايز تغير السرعة في أي وقت تروح للمتغير وتغيره ويبقى الكود كده:
- الكود:
myspeed = 2
if keyboard_check(ord("A")) {
x -= myspeed
}
if keyboard_check(ord("D")) {
x += myspeed
}
if keyboard_check(ord("W")) {
y -= myspeed
}
if keyboard_check(ord("S")) {
y += myspeed
}
- local : ودي متغيرات لازم تعلن عنها من خلال "var".. ميزتها أنها (مؤقتة) الجيم ميكر بيتعامل معاها خلال الحدث أو الكود اللي موجود فيه المتغيرات دي فقط وبعد كده بينساها (تختفي من الذاكرة) وده بيساعد في انك متستخدمش مساحة كبيرة من الذاكرة لانك لو عملت كده ممكن الذاكرة تتملي وساعتها هيأثر على سرعة اللعبة .. وفي حالة استدعيت متغير من نوع local بعد حذفها ( انتهاء الكود) بتحصل على error : unknown variable
مثال على النوع ده هو انك لو عايز تعمل أوبجكت في مكان عشوائي من الروم
- الكود:
var xx,yy;
xx = x - 32 +irandom(64);
yy = y - 32 +irandom(64);
instance_create(xx, yy, obj_blood);
بمجرد انتهاء تنفيذ الكود اللي فات بيتمسح المتغيرين xx,yy من الذاكرة
- global : ودي متغيرات خاصة باللعبة ككل وليس لأوبجكت بالتحديد .. لازم يتم الإعلان عنها في الأول كمتغير global بعدها تستخدمها عادي, من خلال أي أوبجكت في أي حدث تقدر تغير قيمته أو تسستخدمه
مثال على النوع ده لو عايز تعرف متغير في لعبة استراتيجية مثلا وتسميه money وسعر سلعة ما wood_cost .. ده بيتم بطريقتين أولهم :
- الكود:
globalvar money, wood_cost;
money = 20000;
wood_cose = 100;
وبكده لو عايز تغير قيمته في أي وقت في الروم بتستخدم كلمة money فقط للتعبير عنه مثلا:
- الكود:
if (mouse_check_button_pressed(mb_left) && position_meeting(mouse_x,mouse_y,obj_buy_button))
{
if money >= wood_cost {
money -= wood_cost
}
}
يوجد متغيرات عالمية خاصة بالجيم ميكر وهي score و lives و health ودي بتخص اللعبة.
ملحوظة في طريقة أخرى لاستخدام المتغيرات من نوع global وهو global.variable_name
- built in variables : ودي متغيرات الجيم ميكر بيعلنها بنفسه سواء جوه كل أوبجكت في الروم أو للعبة ككل ودول في منهم global و instance بس مفيش منهم local
ودي زي speed وdirection وx وy ... كل instance له هذه المتغيرات وكمثال لاستخدامها عند اطلاق رصاصة مع اتجاه الماوس:
- الكود:
if mouse_check_button(mb_left) {
mybullet = instance_create(x,y,obj_bullet);
mybullet.speed = 20;
mybullet.direction = point_direction(x,y,mouse_x,mouse_y);
}
نصائح سريعة:
- حاول تختار اسماء للمتغيرات تدل على استخدامها myspeed, myhealth
- خلي اسم المتغير قصير على قد ما تقدر ولكن يجب أن يظل مفهوم
- متعملش متغير بيحتوي على قيمة سالبة في اسمه دي بتلخبط ساعات كتيرة زي PlayerIsNotAlive خليها PlayerIsAlive وخلاص
- اخر حاجة قبل ما تبدا في تسمية المتغيرات فكر شوية .. هل لو سميت المتغير ده player_health هيبقى فيه two players mode وهتضطر اعمل player_two_health وساعتها متهيألي كان من الأفضل ان المتغير يبقى player_one_health
أي حد عنده أي سؤال يرد على الموضوع وان شاء الله نجاوبه في أقرب وقت ممكن
عدل سابقا من قبل Abdullah Alsayed في الإثنين أبريل 27, 2015 4:33 pm عدل 5 مرات
Abdullah Alsayed- Admin
- الجنس :
عدد المساهمات : 1791
رد: [شرح] المتغيرات في GML
مشكور كتير .. موضوع اكثر من رائع
Hopa-
- الجنس :
عدد المساهمات : 596
الأوسمة :
وسام المساعدة
Nephron- Discussion Moderator
- الجنس :
عدد المساهمات : 389
الأوسمة :
وسام المساعدة
رد: [شرح] المتغيرات في GML
درس اكثر من رائع
و في معلومات ما كنت عارفها مثل ان يكون اسم المتغير لا يتجاوز 64 رمز
GM Teacher-
- الجنس :
عدد المساهمات : 748
رد: [شرح] المتغيرات في GML
مفيد جدا و افادني جدا جدا في لعبتي الجديدة
شكرا
شكرا
PIXEL-
- الجنس :
عدد المساهمات : 225
الأوسمة :
رد: [شرح] المتغيرات في GML
درس مفيد جداً!!
ومن الأشياء المفيد فيها هي تعريف الأزرار..ف بدل من استخدام keyboard_check_pressed اكثر من مرة..ممكن نستخدم (في الstep event) اي متغير زي
ومن الأشياء المفيد فيها هي تعريف الأزرار..ف بدل من استخدام keyboard_check_pressed اكثر من مرة..ممكن نستخدم (في الstep event) اي متغير زي
- الكود:
keyup = keyboard_check_pressed(ord('W'));
nexusrex-
- الجنس :
عدد المساهمات : 292
مواضيع مماثلة
» [تم الحل]كيف استخدم المتغيرات
» ملف .gmk يوضح كيفية استعمال المتغيرات
» أنواع المتغيرات (المحلية - العالمية - المؤقتة) | (local - global - temporary)
» مثال يوضح استعمال المتغيرات العالمية global لعمل تغير للاوبجكت
» ملف .gmk يوضح كيفية استعمال المتغيرات
» أنواع المتغيرات (المحلية - العالمية - المؤقتة) | (local - global - temporary)
» مثال يوضح استعمال المتغيرات العالمية global لعمل تغير للاوبجكت
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
السبت فبراير 03, 2018 7:40 pm من طرف ZAHRANI BLACK
» مساعدة ضروورية
الإثنين يناير 29, 2018 10:32 pm من طرف king_of_fun
» شارك رابط تطبيقك من تطبيقك على الاندرويد على وسائل التواصل الاجتماعي
الإثنين يناير 29, 2018 12:45 pm من طرف ibraheem2d
» ازاي اصنع لعبه علي Android
الأحد يناير 28, 2018 4:31 pm من طرف ibraheem2d
» درس صناعة 2D بلاتفورم بسيط باستخدام مكتبة Simple Platform LIB حصريا !
الخميس يناير 11, 2018 2:44 am من طرف Abdullah Alsayed
» اخر مساعدة منكم لي في الجيم ماكر
الأربعاء يناير 03, 2018 2:18 am من طرف king_of_fun
» ادعوكم اصدقائي لتجريب لعبتي الاولي Am Head Soccer
الثلاثاء ديسمبر 26, 2017 2:41 pm من طرف nexusrex
» طلب مساعدة بخصوص لعبة pinball.
الأحد ديسمبر 03, 2017 8:52 pm من طرف moummi.mouh@gmail.com