در این بخش شما می آموزید که چگونه تابع ،متغیری یا اسکریپتی را با استفاده از کلید واژه های انتساب به ابجکت ها انتساب دهید هر یک از این کلید واژه ها دارای یک مقدار عددی منفی هستند اما به هیچ وجه پیشنهاد نمی شود از مقدار آن ها به جای نام آن ها استفاده کنید.

کلیدواژه توضیحات مقدار
self این کلید شی را که در حال اجرای کد است را برمیگرداند ، البته شما هیچ وقت به استفاده از این کلید نیازی پیدا نخواهید کرد -1
other برگرداندن شناسه شی مقابل ، این کلید فقط در دو حالت قابل استفاده میباشد یکی در ایونت برخورد (collision) و دیگری در استفاده از with -2
all اعمال بر روی تمام اشیا فعال موجود در اتاق ، توجه داشته باشید نمیتوانید از این کلید برای اشاره به اشیا کل اتاق و ایجاد تغییر استفاده کنید اما میتوانید با استفاده از with این کار را انجام دهید -3
noone هیچ شی ، ممکن است عجیب باشد اما در هنگام برنامه نویسی ممکن است شما بررسی کنید که ایا شی در مقصد وجود دارد یا خیر -4

مثال ها : مثالی از کاربرد other در برخورد : فرض کنید در اتاق چندین دشمن وجود دارد هر دشمن تیر های خود را دارد و هر تیر خسارت (damage) مخصوص خود را دارد،وقتی یک تیر به شی پلیر برخورد میکند توسط مثال زیر میتوانیم میزان خسارت تیر را تشخیص دهیم :

hp -= other.damage;
if hp <= 0 instance_destroy();

کد بالا در ایونت برخورد (collision) بین تیر و ابجکت پلیر است که در آن از کلید واژه other برای اشاره به شی مقابل که همان تیر است استفاده شده و ما مستقیما از ان ادرسی دهی متغیر را انجام داده ایم در خط 2 بررسی میشود که اگر میزان سلامتی شی پلیر کمتر یا برابر با 0 بود شی پلیر حذف شود بدین شکل بازیکن میبازد مثال از کاربرد other توسط with : در مثال قبل دیدیم که هنگام برخورد تیر با بازیکن خسارت تیر از سلامتی بازیکن کم میشود حالا باید تیر اصابت کرده حذف گردد ما میتوانیم به دو صورت ان را انجام بدهیم یا از سمت تیر در رویداد (event) برخورد تیر با بازیکن تیر را حذف کنیم یا از سمت شی بازیکن که ما این راه را انتخاب میکنیم به کد زیر دقت کنید:

hp -= other.damage;
if hp <= 0 instance_destroy();
with (other) instance_destroy();

همان طور که مشاهده میکنید با استفاده از عبارت with به شی مقابل اشاره کردیم و ان را در برخورد تیر و شی بازیکن حذف کردیم مثالی از کاربرد all

همانطور که در تعریف کلیدواژه all گفته شد امکان استفاده مستقیم آن مانند کلید other وجود ندارد و باید از with استفاده شود به کد زیر دقت کنید :

with (all)
    {
    speed = 0;
    }

در کد فوق ما با استفاده از کلید all سرعت تمام اشیا موجود فعال در اتاق را برابر با 0 قراردادیم مثال دیگر از کاربر all در توابع:

inst = instance_position(mouse_x, mouse_y, all);

توضیح : بررسی یک نقطه که اگر شی فعال در آن وجود دارد آن را برگرداند 

if collision_line(x, y, mouse_x, mouse_y, all, false, true) {}

توضیح : بررسی برخورد با خط توسط اشیا فعال در اتاق 

mp_grid_add_instances(grid, all, false);

توضیح : اضافه کردن تمام اشیا فعال اتاق به یک گرید برنامه ریزی حرکت

مثال استفاده از noone :          

if instance_nearest(x, y, obj_enemy) != noone
    {
    //do something as there is an enemy instance near
    }

در مثال بالا بررسی می شود که اگر شی از ابجکت obj_enemy نزدیک است کاری انجام دهد از noone برای مقایسه مقدار بازگشتی نزدیک ترین شی استفاده شده است



نسخه PDF این مطلب را دانلود کنید






نویسنده: hadi eb