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

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

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


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


سرفصل های تئوری:
1- ساخت و خواندن نقشه ی بازی از روی فایل
2- کشیدن شخصیت های بازی
3- حرکت پکمن


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


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

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

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

ما این مختصات را در یک ماتریس عددی ذخیره می کنیم و هنگام حرکت شخصیت ها آن را تغییر  می دهیم تا بتوانیم برخوردها را تشخیص بدهیم. برای راحتی مقداردهی این ماتریس آن را در یک فایل ذخیره می کنیم و در ابتدای بازی از روی فایل می خوانیم:

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

مساله ی دیگر نحوه ی حرکت پکمن توسط کاربر است، ما برای این کار دکمه هایی به صورت زیر روی صفحه ی بازی قرار دادیم:

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

همچنین دکمه ی menu برای بازگشت به منوی بازی در صورت انصراف کاربر از ادامه ی بازی است و برچسب  score نیز برای نمایش امتیاز بازی کن در حین بازی است. فقط با توجه به اینکه نمی خواهیم در منوی ابتدای بازی این دکمه ها و برچسب ها نمایش داده شوند، در ابتدای برنامه باید آنها پنهان کنیم و هنگامی که کاربر نوع بازی خود را انتخاب کرد مجدد نمایش دهیم و اگر بین بازی دوباره دکمه ی منو را زد مجدد پنهان کنیم، برای اینکه این کار ساده تر شود یک تابع به صورت زیر می نویسیم:

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

و در ابتدای برنامه و هنگام شروع بازی آن را فراخوانی می کنیم:

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

سپس باید متغیرهایی برای نگهداری مکان شخصیت ها و امتیاز پکمن داشته باشیم و مکان اولیه آنها را مشخص و مقدار دهی کنیم:

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

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

سپس کد داخل رخداد مربوط به حرکت پکمن را می نویسم:

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

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

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


رسم شخصیت ها:
مساله ی بعدی کشیده شدن شخصیت ها و دانه ها روی زمین بازی است، برای این کار لازم است در بازه های زمانی مشخصی صفحه به روز رسانی شود، برای این کار از timer ها کمک می گیریم و یک تابع به روز رسانی به صورت زیر می نویسیم و آن را در انتهای تابع Readmap فراخوانی و مقدار interval آن را برابر 1000 مقداردهی می کنیم (با این کار هر ثانیه یک مرتبه صفحه به روز رسانی خواهد شد):

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

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


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

مطالب مرتبط:

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

بخش پژوهش های دانش آموزی تبیان، تهیه: محسن نصرتی
تنظیم: نسرین صادقی