CE-Project .pdf

‫باسمه تعالی‬
‫درس مبانی برنامهسازی‬
‫گروههای ‪ ۱‬و ‪۲‬‬
‫پروژه مبانی برنامهسازی (فرودگاه)‬
‫دانشکدهی مهندسی کامپیوتر‬
‫موعد ارسال فاز اول‪ :‬یکشنبه ‪ ۲۲‬آذر‬
‫● چنانچه سوالی در مورد پروژه داشتید که برای سایرین نیز میتواند مفید باشد در پیاتزا مطرح کنید‪.‬‬
‫● به ازای هر روز تاخیر در تحویل پروژه (حداکثر ‪ ۲‬روز) ‪ ٪۱۱‬از نمرهی آن کاسته میشود‪.‬‬
‫● نحوهی ارسال پروژه متعاقبا در اختیار شما قرار خواهد گرفت‪.‬‬
‫● برنامه ارسالی میبایست به زبان ‪ C‬و با استفاده از کتابخانهی ‪ GTK+‬باشند‪ .‬استفاده از هرگونه‬
‫امکانات زبان ‪ C++‬و یا استفاده از کتابخانههای نوشته شده به این زبان و یا استفاده از موتورهای‬
‫بازی ممنوع است‪.‬‬
‫● این پروژه از ‪ ۱۱۱‬نمره میباشد و نمره امتیازی ندارد‪.‬‬
‫● در صورت مشاهدهی تقلب برای هر دو طرف نمرهی ‪ ۱‬در این پروژه منظور خواهد شد‪.‬‬
‫● پروژه باید به صورت گروههای دونفره انجام شود‪.‬‬
‫● این پروژه به صورت دوفازی تحویل گرفته میشود‪.‬‬
‫● از قسمت موارد دیگر باید حداقل ‪ ۰۱‬نمره بگیرید تا به همراه ‪ ۰۱‬نمره قسمتهای اصلی نمره کامل پروژه‬
‫را دریافت کنید‪.‬‬
‫● فرستادن کدها از طریق جاج صورت میگیرد و نحوه فرستادن آن متعاقبا اعالم میشود‪.‬‬
‫پروژهای که برای این درس در نظر گرفته شده است‪ ،‬پیادهسازی یک بازی به نام فرودگاه است که در زیر توضیح‬
‫داده میشود‪:‬‬
‫هدف بازی‪:‬‬
‫هدف این بازی فرود آوردن هواگردها قبل از اتمام سوخت‪ ،‬بدون برخورد به یکدیگر‪ ،‬در باند یا مکان فرود مربوط‬
‫به خودشان میباشد‪.‬‬
‫صفحه بازی‪:‬‬
‫هر ‪ map‬شامل دو باند است که با زاویه ‪ ۵۰‬درجه نسبت به یکدیگر قرار گرفتهاند‪ .‬یکی از باندها به رنگ قرمز‬
‫و دیگری به رنگ زرد است‪ .‬هواپیماهای زرد باید در باند زرد و هواپیماهای قرمز نیز در باند قرمز فرود بیایند ‪.‬‬
‫برای فرود بالگرد ها هم یک محل فرود اختصاصی وجود دارد که تنها هلیکوپتر ها می توانند در آن فرود بیایند‪.‬‬
‫انواع هواپیما و بالگرد‪:‬‬
‫دو نوع هواپیما در بازی وجود دارد‪ .‬یکی به رنگ قرمز و دیگری به رنگ زرد‪ .‬یک نوع بالگرد نیز در بازی وجود‬
‫دارد‪.‬‬
‫این هواگردها هر ‪ ۷‬ثانیه یک بار به صورت تصادفی از یک نقطه بیرون صفحه وارد میشوند‪.‬‬
‫در هر باند فقط از یک سمت میتوان در آن باند فرود آمد و اجازهی فرود به صورت برعکس از طرف برج مراقبت‬
‫(طراحان پروژه) داده نمیشود‪ .‬‬
‫در صورت فرود هواپیمایی در باند اشتباه امتیازی برای آن منظور نمی شود‪ .‬توجه کنید که هواپیماها منطقا نمی‬
‫توانند در باند هلیکوپتر فرود بیایند !‬
‫مسیرحرکت‪:‬‬
‫کاربر با کلیک بر روی یک هواگرد و کشیدن ماوس بر روی صفحه میتواند مسیر حرکت آن هواگرد را تعیین کند‪.‬‬
‫در صورت عدم تعیین مسیر حرکت برای هرکدام از هواگردها ‪ ،‬آن هواگرد در همان راستا به حرکت خود ادامه‬
‫خواهد داد و در صورتیکه به صورت کامل از صفحه خارج شود منفجر میشود‪.‬‬
‫تنها قسمتی از مسیر که هنوز طی نشده باید نمایش داده شود‪.‬‬
‫سوخت‪:‬‬
‫با توجه به کیفیت عالی ساخت هواپیماها و هلیکوپتر های بازی ‪ ،‬همه آن ها دچار مشکل نشت سوخت هستند !‬
‫هر هواپیما حداکثر ‪ ۰۱‬ثانیه و هر بالگرد نیز حداکثر ‪ ۵۱‬ثانیه فرصت دارد تا فرود بیاید ‪ ،‬وگرنه در اثر نشت‬
‫سوخت منفجر خواهد شد ! ‪ ‬ظرفیت سوخت هر هواگرد باید در کنار آن نشان داده شود‪.‬‬
‫امتیازدهی (‪:)statistics‬‬
‫تعداد هواپیماها و هلیکوپتر های نشانده شده در باند درست به عنوان امتیاز فرض میشود‪ .‬همچنین باید‬
‫بیشترین امتیاز ثبت شده بازی در هر ‪ )highscore( map‬را نشان دهید‪.‬‬
‫اتمام بازی‪:‬‬
‫درصورتیکه یک هواگرد منفجر شود بازی به اتمام میرسد‪ .‬حال ممکن است این منفجر شدن هنگام خروج یک‬
‫هواگرد از صفحه باشد یا بر اثر نشت سوخت و یا اینکه هنگام برخورد دو هواپیما این انفجار صورت گرفته باشد‪.‬‬
‫موارد اصلی پروژه‪:‬‬
‫ درست نشان دادن صفحه بازی (باندها‪ ،‬مسیرحرکت هواگرد ها)‬‫ صحیح بودن منطق بازی‬‫ دارا بودن منو برای شروع بازی‬‫موارد دیگر‪:‬‬
‫ ‪ ۲۱( : Save / Load‬امتیاز)‬‫کاربر این امکان را داشته باشد که در حین بازی آن را ذخیره کرده و بعدا دوباره ‪ load‬کند‪ .‬به این نکته توجه‬
‫کنید که مسیر حرکت اجسام که توسط کاربر تعیین شده نیز باید ذخیره شود‪.‬‬
‫ ‪ ۲۱( : Pause‬امتیاز)‬‫کاربر بتواند بازی را متوقف کند و پس از آن با زدن دکمه ای دوباره به بازی خود ادامه دهد ‪.‬هواگرد ها نیز پس‬
‫از شروع دوباره بازی در ادامه همان مسیر قبلی خود حرکت کنند‪.‬‬
‫ صداگذاری ‪ ۲۱( :‬امتیاز)‬‫به طور مثال می توانید برای موتور هواپیما ها و هلیکوپتر ها و نیز انفجار آن ها از افکت های صوتی استفاده‬
‫کنید ‪.‬‬
‫‪ library‬پیشنهادی‪gstreamer :‬‬
‫ سایه ‪ ۱۱( :‬امتیاز)‬‫هنگام حرکت هواپیما و هلی کوپتر سایه ی آن ها روی زمین نمایش داده شود و با نزدیک شدن به زمین هنگام‬
‫فرود اندازه سایه تغییر کند‪.‬‬
‫ انیمیشنها ‪ ۱۱( :‬امتیاز)‬‫از انیمیشن در جاهایی مثل چرخش پرههای هلیکوپتر ‪ ،‬انفجارها ‪ ،‬فرودآمدن هواپیما (برای مثال هنگام فرود‬
‫هواپیما کوچکتر شود) استفاده میشود‪.‬‬
‫ مپهای مختلف ‪ ۲۱( :‬امتیاز)‬‫قبل از ورود به بازی کاربر نقشه مورد نظر خود را انتخاب میکند و این نقشه ها باید دارای پس زمینه ‪ ،‬موقعیت‬
‫قرارگیری باند ها و … متفاوتی باشد‪.‬‬
‫ هشدار قبل از برخورد دو هواگرد (‪ ۱۱‬امتیاز)‬‫اگر در صورت عوض نشدن مسیر دو هواگرد در چند ثانیهی آینده برخوردی بین آن ها اتفاق بیفتد ‪ ،‬بازی باید‬
‫به کاربر هشدار دهد (مثال با عوض کردن رنگ هواگرد ها یا کشیدن دایرهای رنگی دور آنها)‬
‫ وزش باد (‪ ۱۰‬امتیاز)‬‫برای حرکت در خالف جهت باد باید سوخت بیشتری مصرف کنیم و حرکت در جهت باد سبب صرفه جویی در‬
‫مصرف سوخت می شود‪ .‬از آن جا بازی خیلی به شرایط واقعی شبیه است در محیط آن باد هم می وزد ! جهت‬
‫وزش هم باید به طور مالیم در طول بازی تغییر کند ‪ .‬همچنین باید مکانیزمی برای نشان دادن جهت وزش باد‬
‫به کاربر پیاده کنید ‪ .‬مقدار تاثیر باد در سوخت به عهده خود شماست و میتوانید به دلخواه خود و برحسب‬
‫منطقی بودن آن مقدار تاثیردهی باد را تعیین کنید ‪.‬‬
‫فاز بندی پروژه ‪:‬‬
‫این پروژه در دو فاز تحویل گرفته خواهد شد ‪ .‬فاز اول شامل پیاده سازی منطق بازی و محیط گرافیکی آن می‬
‫باشد به این ترتیب که یک نقشه به همراه باندهای فرود داریم که هواگرد ها صرفا از نقطه ای وارد محیط شده و‬
‫به پرواز خود ادامه میدهند‪.‬‬
‫در فاز دوم باید امکان تعیین مسیر برای هواگردها و فرود آمدن آن ها را پیاده سازی کنید ‪ .‬همچنین مواردی‬
‫مانند انفجار و ثبت امتیاز هم باید در این فاز پیاده شود‪.‬‬
‫موفق باشید؟!‬