در بعضی از بازی ها ما باید یک object را چند بار بسازیم و برای هر آبجکتی که ساخته شد، کدی جداگانه بدهیم. برای انجام این کار بهترین روش این است که از حلقه تکرار for استفاده کنیم....

در بعضی از بازی ها ما باید یک object را چند بار بسازیم و برای هر آبجکتی که ساخته شد، کدی جداگانه بدهیم. برای انجام این کار بهترین روش این است که از حلقه تکرار for استفاده کنیم.

حلقه for سه ورودی از ما می گیرد.

1-متغیر

2-شرط

3-دستور

البته از ما دستور دیگری هم می گیرد که آن جدا است.

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

for (Variable;Bet;Command)
{
Commands
}

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

بعد باید شرطی تعیین کنیم. توجه کنید که برای تعیین شرط نباید از 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 قرار داده ایم.سپس 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 ثانیه