سه شنبه 3 اسفند 1395 - 24 جمادي الاول 1438 - 21 فوريه 2017
اگر به بازی اصلی توجه کرده باشید، حرکت دشمنان معمولا به سمت خود پکمن است، در نتیجه هر دشمن برای اینکه تصمیم بگیرد به چه سمتی حرکت کند، لازم است موقعیت خود را نسبت به پکمن بسنجد و سپس حرکت کند، برای اینکه دشمنان بتوانند ....
عکس نویسنده
عکس نویسنده
نویسنده : محسن نصرتی
بازدید :
زمان تقریبی مطالعه :

ساخت بازی با C# - دوره پیشرفته، جلسه سوم

آموزش برنامه نویسی c# - دوره پیشرفته، جلسه سوم


هدف کلی:
آشنایی با پیچیدگی های نوشتن یک بازی


سرفصل های تئوری:
1- الگوریتم تعقیب پکمن توسط دشمنان


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


حرکت دشمنان:
اگر به بازی اصلی توجه کرده باشید، حرکت دشمنان معمولاً به سمت خود پکمن است، در نتیجه هر دشمن برای اینکه تصمیم بگیرد به چه سمتی حرکت کند، لازم است موقعیت خود را نسبت به پکمن بسنجد و سپس حرکت کند، برای اینکه دشمنان بتوانند نزدیک ترین مسیر تا پکمن را بیابند ما برای هر دشمن یک ماتریس به ابعاد زمین بازی در نظر می گیریم و روی هر خانه ی این ماتریس مشخص می کنیم که فاصله تا دشمن چقدر است مانند زیر:

آموزش برنامه نویسی c# - دوره پیشرفته، جلسه سوم

با این کار هر دشمن می تواند بهترین (کوتاه ترین) مسیر خود برای رسیدن به پکمن را محاسبه و پیدا کند، برای پر کردن این ماتریس تابعی مانند زیر در نظر گرفته ایم: 

آموزش برنامه نویسی c# - دوره پیشرفته، جلسه سوم

این تابع به صورت بازگشتی، با شماره گذاری روی خانه های مجاور خانه ی source ماتریس مورد نظر ما را تولید می کند. بعد از استخراج ماتریس، باید متوجه شویم که برای طی کردن کوتاه ترین مسیر، باید در این لحظه به کدام سمت برویم، برای تشخیص جهت حرکت نیز تابعی به صورت زیر نوشتیم که باز هم به صورت بازگشتی عمل می کند و از خانه های اطراف پکمن شروع می کند و رد کوتاه ترین مسیر تا دشمن مورد نظر را ادامه می دهد و در آخر خبر می دهد که حرکت اول دشمن باید به کدام سمت باشد:

آموزش برنامه نویسی c# - دوره پیشرفته، جلسه سوم

در نهایت نیز برای مدیریت این دو تابع و مقدار دهی های اولیه از تابع anamyMove به صورت زیر استفاده کردیم، که در آن ابتدا دو ماتریس برای دو دشمن در نظر گرفته می شود و سپس تمام خانه های ماتریس با مقدار نامعتبر مقدار دهی می شود تا در حین انجام کار بتوانیم خانه ی معتبر و نامعتبر را تشخیص بدهیم، چون هنگام یافتن مسیر همواره دنبال کمترین عدد هستیم، به این خانه ها مقدار 150 که در عمل برای صفحه 144 خانه ای ما بی نهایت است، می دهیم.

آموزش برنامه نویسی c# - دوره پیشرفته، جلسه سوم

از طرفی حرکت دشمنان وابسته به فشرده شدن کلید توسط کاربر نیست در نتیجه می توان تابع حرکت آنها را در رخداد تایمر صدا زد:

آموزش برنامه نویسی c# - دوره پیشرفته، جلسه سوم
 
 
بخش پژوهش های دانش آموزی تبیان، تهیه: محسن نصرتی
تنظیم: نسرین صادقی
تلفن : 81200000
پست الکترونیک : public@tebyan.com
آدرس : بلوارکشاورز ، خیابان نادری ، نبش حجت دوست ، پلاک 12

ارتباط با ما

روابط عمومی

درباره ما

نقشه سایت

تعدادبازدیدکنندگان
افراد آنلاین