LearnGM
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

[شرح] المتغيرات في GML

استعرض الموضوع التالي استعرض الموضوع السابق اذهب الى الأسفل

[شرح] المتغيرات في GML Empty [شرح] المتغيرات في GML

مُساهمة من طرف Abdullah Alsayed الخميس يناير 22, 2015 7:35 pm

تقييم المساهمة: 100% (2)
[شرح] المتغيرات في GML

[شرح] المتغيرات في GML Variab10

زي أي لغة برمجة الـ #GML ( لغة الجيم ميكر ) بتستخدم #المتغيرات كحاجة أساسية في اللغة.. ودي من الناحية المادية بتعتبر أمكان في الذاكرة بتاعت الكمبيوتر بيتخزن فيها قيمة : أرقام (زي 321 و 5.15215 و -521 ...)  ونصوص زي ("Hello world!") , وده عشان تعيد استخدامها في وقت تاني او تستخدمها في الوقت الحالي, ولكل متغير"اسم" خاص بيه بتستخدمه لو عايز تسترجع قيمة المتغير وتستخدمها في حاجة معينة في لعبتك.. المتغيرات ببساطة بتستخدمها عشان تخزن قيمة وتستخدمها في أكتر من عملية باستخدام اسم المتغير وده يخلينا نسأل لماذا لا نستخدم القيمة مباشرة دون المتغير؟

فكر معايا كده لو عندنا حاجة زي الpi ( ط في الرياضيات) واللي قيمته 3.14159265359 وعايزين نعمل برنامج بيجيب محيط الدائرة ومساحة الدائرة اللي نصف قطرها 5 .. بالنسبة للمحيط هنكتب المعادلة:
المحيط = 2 × ط × نصف القطر = 2 × 3.14159265359 × 5 = كذا والمساحة نفس الكلام تخيل بقى كل مرة عايز تستخدم pi هتكتب ثلاثة نقطة واحد أربعة واحد خمسة تسعة Shocked.. وهنا ييجي دور المتغيرات انت هتعمل متغير تسميه pi وتدخل قيمته مرة واحدة وساعة ما تعوز تستخدمه تستبدل قيمته المكونة من 13 رقم بحرفين اتنين بس ! Smile ده غير ان في أي وقت عايز تغير قيمة المتغير هتغيرها مرة واحدة بس ومش هنحتاج نغيره في كل سطر من الكود لان اسم المتغير بيعبر عنه.

انشاء المتغير..
في الـGML لازم يكون اسم المتغير يبدأ بحرف والاسم ممكن يحتوي على حروف وأرقام وعلامة الـunderscore '_' على ألا يكون أكتر من 64 رمز (مجموع الحروف والاراقام وعلامات '_')
على سبيل المثال.. انت ممكن تسمي المتغير myspeed , hp , food_amount , num1 ..
ولا يمكن تسمي المتغير 5day , my-speed , food amount , *num1
في أي لغة برمجة لازم تعمل إعلان declare للمتغير قبل ما تستخدمه يعني تعرّف الكمبيوتر ان انت هتعمل متغير اسمه كذا بقيمة كذا عشان يخزنه في الذاكرة عنده , في الجيم ميكر مش بالضرورة دائماً انك تعمل كده لان في أنواع مختلفة منها وهم متغيرات :


  • instance : وده أكتر حاجة بنستخدمها وبتبقى خاصة بكل أويجكت لوحده وممكن تستخدمها في أي حدث وفي أي كود

مثال على كده نعمل أوبجكت للاعب في لعبة TDS فنبدأ باننا نفتح step event 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 silent خليها PlayerIsAlive وخلاص Very Happy 
  • اخر حاجة قبل ما تبدا في تسمية المتغيرات فكر شوية .. هل لو سميت المتغير ده player_health هيبقى فيه two players mode وهتضطر اعمل player_two_health وساعتها متهيألي كان من الأفضل ان المتغير يبقى player_one_health 


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


عدل سابقا من قبل Abdullah Alsayed في الإثنين أبريل 27, 2015 4:33 pm عدل 5 مرات
Abdullah Alsayed
Abdullah Alsayed
Admin
Admin

الجنس : ذكر
عدد المساهمات : 1791



الرجوع الى أعلى الصفحة اذهب الى الأسفل

[شرح] المتغيرات في GML Empty رد: [شرح] المتغيرات في GML

مُساهمة من طرف Hopa الخميس يناير 22, 2015 8:00 pm

مشكور كتير .. موضوع اكثر من رائع  Thanks well done
Hopa
Hopa
 
 

الجنس : ذكر
عدد المساهمات : 596
الأوسمة :
[شرح] المتغيرات في GML Help10
وسام المساعدة




الرجوع الى أعلى الصفحة اذهب الى الأسفل

[شرح] المتغيرات في GML Empty رد: [شرح] المتغيرات في GML

مُساهمة من طرف Nephron الجمعة يناير 23, 2015 10:12 am

Thanksابدعتflower
Nephron
Nephron
Discussion Moderator
Discussion Moderator

الجنس : ذكر
عدد المساهمات : 389
الأوسمة :
[شرح] المتغيرات في GML Help10
وسام المساعدة




الرجوع الى أعلى الصفحة اذهب الى الأسفل

[شرح] المتغيرات في GML Empty رد: [شرح] المتغيرات في GML

مُساهمة من طرف GM Teacher الجمعة يناير 23, 2015 12:14 pm

درس اكثر من رائع
و في معلومات ما كنت عارفها مثل ان يكون اسم المتغير لا يتجاوز 64 رمز
thank you
GM Teacher
GM Teacher
 
 

الجنس : ذكر
عدد المساهمات : 748



الرجوع الى أعلى الصفحة اذهب الى الأسفل

[شرح] المتغيرات في GML Empty رد: [شرح] المتغيرات في GML

مُساهمة من طرف PIXEL الأحد فبراير 01, 2015 9:11 pm

مفيد جدا و افادني جدا جدا في لعبتي الجديدة Very Happy 
شكرا Smile 
PIXEL
PIXEL
 
 

الجنس : ذكر
عدد المساهمات : 225
الأوسمة :

[شرح] المتغيرات في GML Small-11




الرجوع الى أعلى الصفحة اذهب الى الأسفل

[شرح] المتغيرات في GML Empty رد: [شرح] المتغيرات في GML

مُساهمة من طرف nexusrex الأحد يناير 24, 2016 12:22 am

درس مفيد جداً!!

ومن الأشياء المفيد فيها هي تعريف الأزرار..ف بدل من استخدام keyboard_check_pressed اكثر من مرة..ممكن نستخدم (في الstep event) اي متغير زي
الكود:
keyup = keyboard_check_pressed(ord('W'));
nexusrex
nexusrex
 
 

الجنس : ذكر
عدد المساهمات : 292



الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع التالي استعرض الموضوع السابق الرجوع الى أعلى الصفحة

- مواضيع مماثلة

صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى