حلقه های تکرار در بیشتر زبان های برنامه نویسی و بازی سازی وجود دارند. برای مثال در زبان های C و #C حلقه تکرار for وجود دارد. این حلقه تکرار در Game Maker هم است که می تواند به شما خیلی کمک کند. برای مثال برای ایجاد چند آبجکت، ایجاد اتصال، بررسی و... خیلی کار آمد است.

حلقه for دارای سه ورودی است و کار با این دستور اینگونه است:

for (Variable; Bet; Command)
{
statements;
}
for (دستور ;شرط ;متغیر)
{
مجموعه دستورات;
}

اول از هر چیز ما باید متغیری را تعریف کیم. ما این متغیر را برای این تعریف می کنیم که بگوییم دستورات چند بار اجرا بشوند.

بعد باید شرطی تعیین کنیم. توجه کنید که برای تعیین شرط نباید از if استفاده کنید. سپس باید بگوییم که قبل از هر بار اجرا شدن این حلقه متغیر به چه مقدار کم شود یا زیاد شود (دستور) . توجه کنید که هر یک از این ها را باید با ; جدا کرد.

سپس باید زیر آن دستوراتمان را بنویسیم که در هر بار اجرا شدن حلقه اجرا می شوند.

در این مثال ما با استفاده از حلقه for هشت آبجکت obj_Bullet را می سازیم و به هر کدام می گوییم در چه جهتی حرکت کنند.

توجه کنید که این کد را نباید در obj_Bullet بنویسید وگرنه هر obj_Bullet که ساخته می شود چهار obj_Bullet دیگر را می سازد و همین طور ادامه می یابد.

++obj یعنی یکی به متغیر obj اضافه کن.

for (obj=1;obj<9;obj++)
{
       O=instance_create(x,y,obj_Bullet);
       O.direction=obj*90;
}

در اینجا ما متغیری به نام obj درست کرده ایم. شرط این است که اگر obj کوچکتر از 5 بود. برای اینکه فقط به چهار object نیاز داریم.

سپس به obj یکی اضافه کرده ایم.

بعد در دستورات obj_Bullet را ساخته ایم و آن را در متغیر O قرار داده ایم. هر آبجکتی که با تابع instance_create ساخته می شود یک شناسه خاص بر می گرداند که درون متغیر ذخیره می شود. سپس direction هر obj_Bullet که ساخته می شود را ضرب در متغیر obj کرده ایم. این کار باعث می شود که ابتدا جهت 90 باشد (1*90=90) بعد 180 (2*90=180) بعد 270 (3*90=270)

و بعد هم 360، یعنی در 4 جهت obj_Bullet ساخته می شود.

توجه کنید برای حرکت دادن obj_Bullet می توانید کد زیر را به کد های قبلی اضافه کنید.

O.speed=8;

یا کد زیر را در رویداد Create obj_Bullet قرار دهید:

 speed=8;

با این کار هر obj_Bullet که ساخته می شود سرعتش 8 است.

اگر همه چیز درست پیش رفته باشد اینگونه می شود:


دریافت
مدت زمان: 21 ثانیه