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

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

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

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


سرفصل های تئوری:
1- ساخت منوی بازی


مقدمه:
در این سری جلسات قصد داریم برنامه ی یک بازی که احتمالاً آن را زیاد دیده اید، با هم بنویسیم. برای نوشتن این بازی از بسیاری از کنترل ها و امکانات زبان استفاده خواهیم کرد بنابر این سعی کنید هر مرحله را با دقت یاد بگیرید و جلو بروید. برای شروع یک پروژه از جنس Windows Forms Application با نام PackMan ایجاد کنید.

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

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


منوی شروع:
معمولا اکثر بازی ها یک منوی شروع دارند که به کاربر این امکان را می دهد که بتواند در مورد بازی اطلاعاتی مانند رکوردها و یا سازندگان بازی کسب کند، مواردی مانند میزان صدا، حالت صفحه (full screen) و یا درجه سختی بازی را انتخاب کند و یا با انتخاب گزینه ای مانند Start و یا Play بازی را شروع کند، مثلاً می توانید منوی ابتدای بازی خود را به صورت زیر طراحی کنید:

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

برای زیباتر شدن منو، فونت را مانند زیر فونت Ravie قرار دهید. و می توانید یک Label هم برای نوشتن نام بازی مانند شکل بالا قرار دهید. همچنین می توانید با تغییر ویژگی در منوی propeties تنظیم کنید که شکل ماوس وقتی روی دکمه ها می آید تغییر بکند:

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

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

هر کدام از این دکمه ها عملکردی متناسب با نام خود دارند و کم کم توابع کلیک آنها را کامل خواهیم کرد:
- Free Game
برای انتخاب آزادانه ی مرحله ی بازی است.
- Play Level Game
برای انجام بازی طبق روال آسان به سخت است.
- Options
برای تنظیم مواردی مانند صدای بازی و نیز حالت صفحه ی نمایش است. (اینکه تمام صفحه باشد یا نباشد)
- Load
برای بازیابی بازی از جای قبلی که ذخیره کردیم است (در بخش خودش مفصل توضیح خواهیم داد)
- Exit
بستن برنامه.


Free Game:
می خواهیم، هنگامی که کاربر این دکمه را زد، بتواند بین سطوح مختلف بازی pacMan که در میزان سختی متفاوت هستند، یکی را انتخاب نماید، می توانید این سطح ها را هر طور که دوست دارید طراحی نمایید، ما فرض کرده ایم که تعداد دشمنان pacMan و نیز تعداد دانه هایی که باید بخورد با جلو رفتن مرحله زیاد می شود و نقشه ی بازی هم پیچیده تر خواهد شد، نقشه هایی مانند زیر برای سطوح مختلف طراحی کنید:
مرحله اول:

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

مرحله دوم:

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

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

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

که در آن کاربر بتواند با نوشتن شماره مرحله (استفاده از NumericUpDown) و یا انتخاب آن (RadioBottun) مرحله و نقشه ی مورد نظر خود را انتخاب نماید، در نتیجه فرم می َتواند به یکی از دو صورت زیر باشد:

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

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

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

راهنمایی (نحوه ی ایجاد یک فرم جدید):
ما برای ایجاد یک فرم اضافی برروی پروژه خود به پنجره SolutionExplorer رفته بر روی آن رایت کلیک نمایید سپس گزینه add را انتخاب کنید و با انتخاب فرم و قرار دادن نام برای فرم خود ن را ایجاد نمایید. با انتخاب فرم بدین صورت فرمی به پروژه شما اضافه می گردد که می توانید با نوشتن دستورات بالا در یک رویداد آن فرم را فرا خوانی نمایید.

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

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


و در فرم اصلی با چک کردن آن مرحله را تعیین می کنیم:

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


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

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

مطالب مرتبط:

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

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