دنیای بازیسازی فارسدا

اخبار و اطلاعات ، مقالات ، دوره های آموزشی و کلی حرف واسه گفتن

دنیای بازیسازی فارسدا

اخبار و اطلاعات ، مقالات ، دوره های آموزشی و کلی حرف واسه گفتن

دنیای بازیسازی فارسدا

تو این وبلاگ می تونی همه چی درمورد بازیسازی پیدا کنی. از اخبار نو تا اطلاعات نوآوری ها و مقالات آموزشی و دوره های آموزشی. تازه اخبار بازی های در دست ساخت خودم رو هم قرار می دم. مطمئن باشید آموزش ها و مقالات صد در صد تولید داخلی (: هستش و کپی برداری از سایت های دیگه نیست. پس بدون وجدان درد از وبلاگ ما استفاده کنید.

طبقه بندی موضوعی
بایگانی

آموزش مقدماتی یونیتی-قسمت نهم

آموزش مقدماتی یونیتی


قسمت نهم : برنامه نویسی سی شارپ 5 - حلقه ها و آرایه ها


نویسنده : محمدهادی ربانی نژاد


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

همونطور که قسمت قبل گفتم. میخوام یه بازی بسازم که اگه جون های بازیکن تموم شد ، امتیازش رو بررسی کنه و بعد از سطح بندی ، به ازای هر سطحی مقداری سکه بهش بده. خب توی تصویر زیر کد ما رو می بینید.

متن کد تمرین

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

حالا میریم سراغ نوشتن شرط. همونطور که می بینید تموم کد از چند تا شرط ساده تشکیل شده. گفتیم اگه مقدار جون کمتر از 1 بود ( یعنی صفر بود ) و متغیر finish نادرست بود ( با گذاشتن علامت تعجب پشت متغیر بولین ) ، برو سراغ شرطای بعدی. برای اینکه بفهمین وجود این بولین بدرد چی می خوره ، می تونید از کد حذفش کنید و نتیجه اش رو ببینید.

تو شرط بعدی گفتیم اگه امتیاز بازیکن بیشتر از 500 بود ، اول از همه یخورده ازش تعریف کن و تو کنسول بگو : «خیلی خیلی خوب». بعد به سکه هاش سه برابر یک دهم امتیازش رو اضافه کن. یعنی اول امتیاز رو تقسیم بر 10 کن و بعد در 3 ضرب کن. فایده ی (int) که تو محاسبه و قبل متغیر امتیاز نوشتیم اینه که نتیجه فقط به صورت عدد صحیح بر می گرده و داخل متغیر ما ریخته میشه.

خب اگه امتیاز ما کمتر از 500 بود چی ؟ با استفاده از else به این سوال پاسخ میدیم و میگیم که در غیر صورت صحیح بودن شرط اول ، بررسی کن که آیا امتیاز بالاتر از 300 هست یا نه ؟ در صورتی که صحیح بود ، همون کارایی که قبلا می کردی رو بکن. فقط با این تفاوت که به جای خیلی خیلی تعریف کردن ، خیلی تعریف کن و دو برابر یک دهم امتیازش رو اضافه کن. حالا اگه کمتر از 300 بود ، بررسی کن که آیا بالاتر از 100 هست که در این صورت یک دهم امتیاز رو به سکه هاش اضافه کن و در نهایت اگه کمتر از 100 بود ، اعلام کن که بازیکن باخته.

سر آخر امتیاز رو صفر کن و بولین finish رو true کنید. با اینکار دوباره شرط تکرار نمیشه و تا ابد بررسی نمی کنه که امتیازش چقدره.

خب بریم سر بحث امروزمون. برای اینکه بخوایم دستورات خاصی رو به تعداد خاصی تکرار کنیم به حلقه ها نیاز داریم. یکی از حلقه ها ، حلقه ی فور ( for ) هستش. ساختار این حلقه به شکل زیره :

for (int i = 0; i < max; i++) {

...

}

این دستور به این شکل عمل می کنه که یه متغیر از نوع عدد صحیح می سازه تا بتونه تعداد تکرار دستورات رو مشخص کنه. بعد شرطی می ذاریم و می گیم که تا زمانی که به مقدار معین نرسیده تکرار بشه و در نهایت یه واحد به متغیر اضافه می کنیم. شما می تونید ابتدا مقداری رو که به متغیر می دید رو تغییر بدید تا از همون عدد شروع بشه. max هم نهایت مقداریه که ما می خوایم و همچنین می تونید به جای اضافه کردن تکی ، هر طور که می خواید کم یا زیاد کنید. مثلا :

for (int i = 15; i > 0; i – 3) {

Debug.Log (i);

}

حلقه ی بعدی While هستش. این حلقه تا زمانیکه که شرط توی پرانتزش صحیح بود ، تکرار میشه. به مثال زیر دقت کنید.

While (x < 100) {

X += 2;

}

این کد تا زمانیکه x کوچیک تر از 100 باشه ، در هر لحظه 2 واحد بهش اضافه میشه. حلقه ی do while هم تقریبا به همین شکل عمل می کنه. با این تفاوت که یکبار دستور do اجرا میشه و بعد بررسی می کنه که آیا شرط while درست هست یا نه. اگه درست بود ، دوباره دستور do تکرار میشه و اگه درست نبود ، از کد خارج میشه. نگاه کنید :

do {

X += 2;

} while (x < 100);

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

foreach (var item in arrrayName) {

...

}

فورایچ در ابتدا یه متغیر از جنس آرایه ی موردنظرمون میسازه و بعد داخل اون آرایه شروع به بررسی می کنه ؛ به این شکل که هر بار که حلقه تکرار میشه ، به ترتیب خونه های آرایه رو تو متغیری که ساخته می ریزه. شما باید به جای var نوع متغیر ، به جای item نام متغیر و به جای arrayName نام آرایه رو بنویسید. کلمه ی in یه کلمه ی کلیدیه. به مثال زیر دقت کنید.

xParameters = {10, 4, 7, 6, 19}; int[]

foreach (int item in xParameters) {

if (item < 10) {

Debug.Log (item.ToString ());

}

}

تو این کد گفتیم که خونه های آرایه رو بررسی کن و خونه هایی که کمتر از 10 هستن رو چاپ کن که نتیجه میشه 4 ، 7 و 6.

خب. بریم سراغ آرایه ها. متغیر ها که معرف حضورتون هستن! همونطور که گفتم آرایه ها ساختمون هایی هستن که تعدادی (بستگی به شما داره) متغیر توش ساکن هستن. این ساختمون های آرایه باعث میشن ، نیازی به تعریف چندین متغیر نداشته باشیم و پراکندگی رو به حداقل می رسونه. برای اینکه یه آرایه تعریف کنید باید مثل تعریف متغیر عمل کنید. با این تفاوت که برای ساخت آرایه باید در کنار نوع داده براکت باز و بسته ([]) استفاده کنید. به مثال زیر دقت کنید:

int[] parameters = new int[10];

من یه آرایه از نوع عدد صحیح ساختم و اسمش رو پارامتر گذاشتم. اگه دقت کنید می بینید که بعد از نامگذاری علامت مساوی و بعد اون عبارت (new int [10]) دیده میشه. برای اینکه بخواید تعداد خونه های متغیر رو معلوم کنید ، باید به این شیوه عمل کنید و به جای int نوع داده ی آرایه تون رو بنویسید و تو براکت تعداد خونه ها رو. البته اگه سطح دسترسی آرایه تون عمومی باشه (public باشه) نیازی به اینکار نیست و می تونید از توی اینسپکتور مقدارش رو معلوم کنید. به مثال حلقه ی فورایچ دقت کنید. می بینید که من بدون اینکه تعداد خونه ها رو معین کنم ، در مقابل آرایه اینبار آکولاد گذاشتم و مقادیری رو به صورت پیش فرض وارد آرایه کردم. این هم راهی برای وارد کردن مقادیر هستش. امیدوارم از این قسمت استفاده کرده باشید. خدانگهدار.


شما می تونید فایل PDF این آموزش رو هم دانلود کنید.

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی