javaProject2Final.pdf

‫فاز دوم پروژه‬
‫درس برنامه نویسی شئگرا‬
‫بهار ‪92‬‬
‫استاد صفرنژاد‬
‫موعد ارسال‪ 14 :‬تیر‬
‫آرین اربابی‬
‫هادی ذوالفقاری‬
‫فروغ مهرعلیان‬
‫سید علیرضا میر محمد صادقی‬
‫فاز دوم پروژه برنامه سازی شیءگرا‬
‫‪CElization‬‬
‫مهلت تحویل‪ 41 :‬تیر‬
‫نکات کلی‬
‫‪ ‬در این فاز از پروژه باید بازی ساخته شده در فاز قبل را توسعه دهید‪.‬‬
‫‪ ‬مواردی که در این فاز اضافه می شوند قابلیت چند نفره شدن بازی‪ ،‬نیرو های تهاجمی‪ ،‬نبرد‪ ،‬تغییر محیط بازی‬
‫از کنسول به گرافیکی و امکان اجرای بازی روی شبکه می باشد‪.‬‬
‫‪‬‬
‫محل ارسال پروژه‪ ،‬متعاقبا به شما اعالم خواهد شد‪.‬‬
‫‪‬‬
‫فایلهای پروژه خود را در قالب فایل ‪ zip‬ارسال نمایید‪.‬‬
‫‪‬‬
‫موعد تحویل ‪11‬ام تیر بوده و به هیچ عنوان تمدید نخواهد شد‪.‬‬
‫‪‬‬
‫تأخیر تا ‪ 1‬ساعت‪ ،‬به ازای هر ‪ 3‬دقیقه موجب کسر شدن ‪ %1‬نمره‪ ،‬از ‪ 1‬ساعت تا ‪ 41‬ساعت موجب کسر شدن ‪%42‬‬
‫نمره‪ ،‬از ‪ 41‬ساعت تا ‪ 42‬ساعت‪ ،‬به ازای هر ‪ 4‬دقیقه موجب کسر شدن ‪ %1‬نمرهی دیگر و بین ‪ 42‬ساعت تا ‪ 14‬ساعت‬
‫باعث کسر شدن ‪ %22‬نمره میشود‪ .‬تأخیر بیشتر از ‪ 14‬ساعت قابل قبول نیست‪.‬‬
‫‪‬‬
‫قطع بودن اینترنت خوابگاه‪ ،‬کندی پایگاه اینترنتی دانشکده‪ ،‬تمام شدن کارت اینترنت و … هیچکدام دلیل موجهی برای‬
‫تأخیر نیستند‪ .‬بنابراین پیشنهاد میشود جوابهای خود را در دانشکده ارسال کنید‪.‬‬
‫‪‬‬
‫سواالت خود را در ‪ Piazza‬مطرح کنید‪.‬‬
‫‪‬‬
‫نحوه تحویل حضوری تمرین متعاقباً اعالم خواهد شد‪.‬‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫‪1‬‬
‫قابلیت چند نفره شدن بازی‪:‬‬
‫در این فاز بر خالف فاز قبلی بیش از یک کاربر در سرزمین بازی می کند‪ .‬برای هر بازیکن یک رنگ اختصاص داده می‬
‫شود تا بازیکن ها از یکدیگر متمایز شوند‪ .‬رنگ هر بازیکن در نمایش نیروها و ساختمان های آن بازیکن باید مشخص‬
‫باشد‪ .‬هر بازیکن با کامپیوتر خود با بازی در ارتباط است و تمامی فرآیند هایی را که در بازی رخ میدهد‪ ،‬در صورتی که‬
‫در دید نقشه وی باشد‪ ،‬مشاهده می کند‪ .‬اطالعات مربوط به قلمرو هر بازیکن نیز تنها برای خود بازیکن قابل مشاهده‬
‫هستند‪.‬‬
‫در ابتدای بازی به ازای هر بازیکن یک کارگر در یک محل تصادفی از نقشه قرار می گیرد‪ .‬سپس طبق سناریوی بازی که‬
‫در فاز قبلی تعریف شد (و در این فاز این سناریو کامل تر می شود) هر بازیکن به توسعه سرزمین خود می پردازد‪.‬‬
‫تمام منابع کسب شده برای هر بازیکن مستقال متعلق به آن بازیکن است و هر بازیکن با استفاده از منابعی که در اختیار‬
‫دارد می تواند به تولید نیرو و ساخت ساختمان بپردازد‪ .‬بدیهتا هر نیرو یا ساختمان تنها متعلق به بازیکن سازنده ی آن‬
‫می باشد‪.‬‬
‫نحوه ی اجرای بازی‪:‬‬
‫اجرای بازی به صورت فازهای پشت سر هم می باشد‪ .‬در هر فاز هر بازیکن یک نوبت دارد که ترتیب نوبت ها به ترتیب‬
‫شماره بازیکن ها می باشد‪.‬‬
‫در هر نوبت هر بازیکن می تواند دستوراتی را برای اجرا تعیین کند‪ .‬بعد از مشخص کردن دستورات مورد نظر برای آن‬
‫نوبت‪ ،‬بازیکن باید مشخص کند که دستور جدیدی برای این نوبت ندارد و نوبت به بازیکن بعدی برسد‪ .‬همچنین باید یک‬
‫سقف زمان (مثال ‪ 12‬ثانیه) در نظر گرفته شود که بعد از گذشت این زمان سیستم به صورت خودکار نوبت را تمام شده‬
‫فرض کند و نوبت به بازیکن بعدی داده شود‪.‬‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫‪4‬‬
‫نحوه ارتباط بین اجراها‪:‬‬
‫در این فاز باید بتوان بازی را به صورت شبکه ای اجرا کرد‪ .‬جزئیات نحوه ارتباط دست خودتان است و پروتکل ارتباطی را‬
‫باید خودتان طراحی کنید‪.‬‬
‫برای اجرای بازی ابتدا سرور اجرا می شود و بازیکن ها هر کدام در قالب یک کالینت اجرا شده و به سرور با پورت داده‬
‫شده متصل میشوند‪.‬‬
‫فقط سرور است که از همه جزئیات نقشه خبر دارد و در صورت لزوم در اختیار کالینت ها قرار می دهد‪.‬‬
‫امکان دارد در خارج از قوانین بازی درخواستی از طرف بازیکنان وارد شود که باید به نوعی تمامی ارتباط ها و درخواست‬
‫ها و حرکات کنترل شود و با پیغام های مناسب از خرابکاری جلوگیری کند‪.‬‬
‫نحوه شروع بازی‪:‬‬
‫پس از شروع ابتدا شماره پورت سرور خواسته می شود و بعد کالینت ها به تعداد بازیکنان اجرا می شوند و در مورد هر‬
‫کالینت ‪ IP‬و شماره پورت سرور برای برقراری ارتباط داده میشود‪(.‬به این ترتیب بر روی پورت های مختلف امکان‬
‫اجرای بازی های متفاوت و همزمان وجود خواهد داشت)‪.‬‬
‫پس از برقراری ارتباط هر کالینت با سرور‪ ،‬نام بازیکن گرفته میشود و در کل بازی با این نام شناخته میشود‪ .‬و طبق‬
‫روند گقته شده بازی در محیط گرافیکی پیش میرود‪.‬‬
‫تعیین قبلی دستورات‪:‬‬
‫در مدتی که بازیکن منتظر تمام شدن نوبت دیگر بازیکنان است می تواند دستوراتی را برای اجرا در نوبت خود انتخاب‬
‫کند ولی این دستورات تا زمانی که نوبت او نشود اجرا نخواهند شد‪ .‬هنگامی که نوبت بازیکن شود تمام دستوراتی که‬
‫بازیکن از قبل نوبتش تعیین کرده در نظر گرفته می شود‪ .‬اگر بازیکن این دستورات را تغییری ندهد و دستورات همچنان‬
‫معتبر باشند در پایان نوبتش این دستورات قبلی به همراه دستورات جدید محتمل اجرا خواهند شد‪.‬‬
‫انواع دستورات‪:‬‬
‫ساخت و ساز توسط کارگر در خانه ای که در آن حضور دارد‪.‬‬
‫فرستادن کارگر برای کار در معدنی که کارگر در آن حضور دارد‪.‬‬
‫تولید نیرو توسط ساختمانی که امکان تولید نیرو دارد و در حال تولید نیرو نیست‪.‬‬
‫انجام عملیات تجاری در بازار‬
‫جابهجایی نیرو به یک خانه دیگر‬
‫دستور حمله به یک خانه که شامل نیرو یا ساختمان دشمن است‪.‬‬
‫قابلیت جنگ‪:‬‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫انتخاب موضوع تحقیقاتی‬
‫‪3‬‬
‫در این فاز از پروژه دو نوع ساختمان و چهار نوع نیروی جدید اضافه می شود که قابلیت جنگ بین بازیکن ها را بوجود‬
‫می آورند‪.‬‬
‫ساختمانهای جدید‪:‬‬
‫سرباز خانه‪:‬‬
‫در این ساختمان می توان به تولید نیروی جنگی پیاده پرداخت‪.‬‬
‫اصطبل‪:‬‬
‫در این ساختمان می توان به تولید نیروی جنگی اسب سوار پرداخت‪.‬‬
‫نیروهای جنگی‪:‬‬
‫در این فاز ‪ 1‬نیروی جدید می توان تولید کرد که همگی نظامی بوده و از دو رده ی اسب سوار و پیاده تشکیل می شوند‪.‬‬
‫برای هر سرباز چند ویژگی نظامی وجود دارد که پیروزی در نبردها به این ویژگی ها وابسته است‪.‬‬
‫ویژگی ها‬
‫امتیاز در مقابل سرباز‬
‫پیاده‬
‫امتیاز در مقابل اسب سوار‬
‫امتیاز دفاعی‬
‫امتیاز هجومی‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫‪1‬‬
‫حداکثر میزان سالمتی‬
‫انواع نیروها‪:‬‬
‫سرباز نیزه دار‪:‬‬
‫ویژگی ها‬
‫مقدار‬
‫امتیاز در مقابل سرباز‬
‫‪32‬‬
‫پیاده‬
‫امتیاز در مقابل اسب سوار‬
‫‪42‬‬
‫امتیاز دفاعی‬
‫‪02‬‬
‫امتیاز هجومی‬
‫‪42‬‬
‫حداکثر میزان سالمتی‬
‫‪422‬‬
‫سرباز تبر دار‪:‬‬
‫ویژگی ها‬
‫مقدار‬
‫امتیاز در مقابل سرباز‬
‫‪02‬‬
‫پیاده‬
‫امتیاز در مقابل اسب سوار‬
‫‪12‬‬
‫امتیاز دفاعی‬
‫‪02‬‬
‫امتیاز هجومی‬
‫‪42‬‬
‫حداکثر میزان سالمتی‬
‫‪422‬‬
‫ویژگی ها‬
‫مقدار‬
‫امتیاز در مقابل سرباز‬
‫‪22‬‬
‫پیاده‬
‫امتیاز در مقابل اسب سوار‬
‫‪12‬‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫اسب سوار گرز دار‪:‬‬
‫‪2‬‬
‫امتیاز دفاعی‬
‫‪12‬‬
‫امتیاز هجومی‬
‫‪02‬‬
‫حداکثر میزان سالمتی‬
‫‪322‬‬
‫اسب سوار چابک‪:‬‬
‫ویژگی ها‬
‫مقدار‬
‫امتیاز در مقابل سرباز‬
‫‪32‬‬
‫پیاده‬
‫امتیاز در مقابل اسب سوار‬
‫‪22‬‬
‫امتیاز دفاعی‬
‫‪12‬‬
‫امتیاز هجومی‬
‫‪02‬‬
‫حداکثر میزان سالمتی‬
‫‪322‬‬
‫نبرد‪:‬‬
‫برای شروع نبرد بازیکن برای سرباز مورد نظرش یکی از خانه های مجاور را که ساختمان یا نیروی دشمن در آن قرار دارد‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫‪0‬‬
‫را انتخاب می کند‪ .‬با توجه به اینکه در خانه مقصد چه چیزی قرار دارد یکی از حاالت زیر رخ می دهد‪:‬‬
‫‪ -1‬اگر در آن خانه ساختمان دشمن وجود داشت ساختمان از بین خواهد رفت و سرباز مهاجم در آن خانه قرار خواهد‬
‫گرفت‬
‫‪.‬‬
‫‪ -4‬اگر در آن خانه کارگر دشمن قرار داشت آن کارگر کشته شده و از بازی حذف می شود و همچنین سرباز مهاجم در‬
‫آن خانه قرار خواهد گرفت‪.‬‬
‫‪ -3‬اگر در آن خانه نیروی نظامی دشمن وجود داشت برای هر کدام از ‪ 4‬طرف درگیری امتیاز نبرد حساب می شود‪.‬‬
‫برای هر سرباز امتیاز نبرد برابر است با‬
‫با توجه به اینکه سرباز طرف مقابل پیاده یا سوار است امتیاز در مقابل سرباز پیاده یا امتیاز در مقابل اسب سوار‬
‫که‬
‫برای این بازیکن میشود‪.‬‬
‫و‬
‫با توجه اینکه این سرباز در حال حمله به یک خانه است یا در حال دفاع در خانه ی خود است امتیاز هجومی یا‬
‫امتیاز دفاعی می شود‪.‬‬
‫فرض کنید امتیاز نبرد برای دو سرباز درگیر‬
‫مقدار‬
‫و‬
‫و میزان سالمتی آنها‬
‫و‬
‫باشد‪ .‬برای هر کدام از دو سرباز‬
‫را محاسبه می کنیم و هر کدام که مقدار بیشتری باشد سرباز مربوطه برنده ی نبرد می شود‪ .‬سرباز‬
‫مغلوب کشته شده و از بازی حذف می شود و سرباز پیروز در صورتی که دفاع کننده باشد در جای خود باقی می ماند و‬
‫اگر حمله کننده باشد به محل قرار گیری سرباز مدافع کشته شده قرار می گیرد‪ .‬همچنین سالمتی سرباز پیروز به مقدار‬
‫کاهش میابد‪.‬‬
‫هزینه ساخت و ساز نیروها و ساختمان های جدید‪:‬‬
‫ساخت‬
‫سربازخانه‬
‫‪12‬‬
‫‪42‬‬
‫‪22‬‬
‫‪422‬‬
‫‪4‬‬
‫اصطبل‬
‫‪42‬‬
‫‪22‬‬
‫‪22‬‬
‫‪422‬‬
‫‪4‬‬
‫سرباز تبردار‬
‫‪4‬‬
‫‪32‬‬
‫‪2‬‬
‫‪42‬‬
‫‪-‬‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫نام‬
‫نوبت های الزم برای‬
‫طال‬
‫سنگ‬
‫چوب‬
‫اندازه‬
‫‪7‬‬
‫سرباز نیزه دار‬
‫‪4‬‬
‫‪32‬‬
‫‪2‬‬
‫‪22‬‬
‫‪-‬‬
‫اسب سوار گرزدار‬
‫‪11‬‬
‫‪02‬‬
‫‪2‬‬
‫‪122‬‬
‫‪-‬‬
‫اسب سوار چابک‬
‫‪12‬‬
‫‪22‬‬
‫‪2‬‬
‫‪42‬‬
‫‪-‬‬
‫تحقیقات اضافه شده برای بخش نظامی‪:‬‬
‫‪Animal‬‬
‫‪husbandry‬‬
‫‪Horseback‬‬
‫‪Riding‬‬
‫‪Advance‬‬
‫‪d‬‬
‫‪Basic‬‬
‫‪Combat‬‬
‫‪Military‬‬
‫‪Description‬‬
‫امکان تحقیقات بعدی در‬
‫بخش نظامی‬
‫امکان ساخت اصطبل و‬
‫تربیت نیرو های اسب سوار‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫‪4‬‬
‫امکان ساخت سربازخانه و‬
‫سربازهای پیاده‬
‫‪ETA‬‬
‫‪Knowledge‬‬
‫‪Lumber‬‬
‫‪Stone‬‬
‫‪Gold‬‬
‫‪Name‬‬
‫‪Id‬‬
‫‪4‬‬
‫‪0‬‬
‫‪20‬‬
‫‪0‬‬
‫‪20‬‬
‫‪Military‬‬
‫‪26‬‬
‫‪10‬‬
‫‪15‬‬
‫‪40‬‬
‫‪0‬‬
‫‪70‬‬
‫‪Horseback‬‬
‫‪Riding‬‬
‫‪27‬‬
‫‪8‬‬
‫‪15‬‬
‫‪50‬‬
‫‪0‬‬
‫‪50‬‬
‫‪Basic‬‬
‫‪Combat‬‬
‫‪28‬‬
‫‪Animal‬‬
‫‪Husbandry‬‬
‫‪29‬‬
‫میزان امتیاز دفاعی و‬
‫هجومی نیروهای اسب‬
‫‪20‬‬
‫‪30‬‬
‫‪300‬‬
‫‪0‬‬
‫‪200‬‬
‫سوار ‪ %02‬افزایش می یابد‬
‫میزان امتیاز دفاعی و‬
‫هجومی نیروهای پیاده ‪%02‬‬
‫‪20‬‬
‫‪30‬‬
‫‪350‬‬
‫‪0‬‬
‫‪150‬‬
‫‪Advanced‬‬
‫‪Armors‬‬
‫‪30‬‬
‫افزایش می یابد‬
‫گرافیک ‪ 0‬بعدی‪:‬‬
‫برای این فاز باید بازی را در محیط گرافیکی به نمایش بیاورید‪ .‬کاربر باید بتواند سرزمین بازی را به صورت نمایی از باال‬
‫مشاهده کند و بتواند نیروها و ساختمان های روی این نقشه را انتخاب کرده و دستور مورد نظر را به آنها بدهد‪ .‬برای‬
‫دستورات جا به جایی یا حمله کاربر باید بتواند خانه ی مقصد را با کلیک مشخص کند ولی تا زمان به پایان نرسیدن‬
‫نوبت کاربر این جا به جایی یا حمله نباید صورت بگیرد‪ .‬در مدتی که نوبت بازیکن به پایان نرسیده است بازیکن باید‬
‫بتواند با کلیک روی نیروها یا ساختمان ها دستور داده شده به آنها را در صورت وجود نگاه کند‪ .‬مثال برای دستور جا به‬
‫جایی خانه مقصد مشخص شود‪ .‬برای دستورات ساختمان ها می توانید طوری پیاده سازی کنید که با کلیک روی‬
‫ساختمان لیست نیروهای قابل تولید توسط آن ساختمان را مشاهده کنید و با کلیک روی آنها ساختمان به تولید آن نیرو‬
‫بپردا زد‪ .‬همچنین اگر ساختمان در حال تولید نیرویی بود نیز باشد قابل مشاهده باشد‪ .‬در صورتی که دستور مورد نظر‬
‫قابل اجرا نیست مثال نیرو امکان جا به جایی به خانه مقصد را نداشته باشد و ساختمان در حال تولید نیرو بوده و امکان‬
‫تولید نیروی جدید نداشته باشد باید در نظر گرفته شود‪ .‬همچنین باید قابلیت کنسل کردن دستور داده شده به یک نیرو‬
‫یا ساختمان نیز وجود داشته باشد‪.‬‬
‫برای مواردی مانند انتخاب موضوع تحقیقی و موارد مشابه می توانید از منویی در باالی صفحه استفاده کنید‪.‬‬
‫در کل برای ‪ interface‬دست شما باز است و در موقع تحویل با توجه به کیفیت کار ارائه شده نمره داده خواهد شد‪.‬‬
‫قابلیت گفتگوی میان بازیکنان‪:‬‬
‫بازیکنان باید این قابلیت را داشته باشند تا با هم صحبت کنند‪ .‬که این صحبت کردن به صورت متنی و در قالب چت می‬
‫قابلیت ذخیره بازی واجرای ادامه بازی قبلی‪:‬‬
‫قابلیت ‪ save‬و ‪ load‬برای بازی وجود داشته باشد به این صورت که کلیه تاریخچه و اتفاقات رخ داده در بازی ذخیره‬
‫میگردد و در شروع بازی امکان ‪ load‬کردن بازی قبلی و ادامه آن وجود داشته باشد‪.‬‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫باشد برای این منظور در صفحه اصلی امکانات الزم گرافیکی برای این کار را فراهم کنید‪.‬‬
‫‪0‬‬
‫ایجاد امکان بازی با کامپیوتر (‪: )AI‬‬
‫برای این بخش بایستی برنامه شما قابلیت بازی با کامپیوتر را هم داشته باشد‪ .‬به این ترتیب از صفحه اصلی بازیکن‬
‫انتخاب می کند که کامپیوتر جز بازیکنان باشد یا خیر‪ .‬روندی که کامپیوتر برای بازی طی میکند میتواند کامال رندوم‬
‫باشد‪.‬‬
‫(این بخش امتیازی ا ست و افزایش هوشمندی به بازیکن خودکار‪ ،‬به نسبت (به صورت رقابتی) میتواند نمره اضافی خوبی‬
‫داشته باشد ‪)‬‬
‫‪:Documentation‬‬
‫در قالب یک فایل ‪ PDF‬توضیحاتی کوتاه درباره پروژه تحویل داده شده تهیه کنید‪ .‬این فایل موارد زیر را شامل شود‪:‬‬
‫‪‬‬
‫‪ ‬نحوه تعریف پروتکل شبکه‬
‫‪ ‬کالس های تعریف شده (با نمودار)‬
‫‪ ‬نحوه پیاده سازی قسمت های مختلف مثال موارد زیر‪:‬‬
‫‪ o‬گفت و گوی درون بازی‬
‫‪ Save o‬و ‪load‬‬
‫‪AI o‬‬
‫نحوه نمره دهی‬
‫این فاز با احتساب نمره های اضافی حداکثر ‪ 322‬نمره دارد‪ .‬در نظر داشته باید برای هر بخش حداکثر نمره ای که می‬
‫توان گرفت نوشته شده است و نمره ای که در نهایت برای هر مورد داده می شود کامال وابسته به کیفیت کار انجام شده‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫‪12‬‬
‫در آن بخش است‪.‬‬
‫‪ ‬پیاده سازی بازی به صورت شبکه ای (تا سقف ‪ 12‬نمره)‬
‫‪ ‬چند نفره شدن بازی و جابهجای صحیح نوبت بین بازیکن ها (تا سقف ‪ 32‬نمره)‬
‫‪ ‬گرافیک (‪ 42‬نمره)‬
‫‪ o‬در صورت داشتن گرافیک زیبا و پیشرفته تا ‪ 42‬نمره اضافی (در کل ‪ 12‬نمره) امکان پذیر است‬
‫‪ ‬پیاده سازی بخش نظامی (تا سقف ‪ 02‬نمره)‬
‫‪ o‬اضافه کردن تحقیقات نظامی (‪ 42‬نمره)‬
‫‪ o‬اضافه کردن ساختمان ها و نیرو های نظامی (‪ 42‬نمره)‬
‫‪ o‬پیاده سازی نبردها به صورت خواسته شده (‪ 42‬نمره)‬
‫‪ ‬قابلیت گفت و گو (تا سقف ‪ 42‬نمره)‬
‫‪ ‬امکان ‪ save‬و ‪ load‬بازی (تا سقف ‪ 32‬نمره)‬
‫‪ ‬امکان بازی با کامپیوتر (‪( )AI‬تا سقف ‪ 42‬نمره)‬
‫‪ ‬رعایت اصول شی گرایی در کد (تا سقف ‪ 32‬نمره)‬
‫‪( Documentation ‬تا سقف ‪ 32‬نمره)‬
‫همچنین در صورت عدم پیاده سازی موارد مربوط به فاز قبل به نسبت اهمیت آنها برای هر بخش در این فاز نمره کسر‬
‫خواهد شد‪.‬‬
‫فاز اول پروژه برنامه سازی شیءگرا‬
‫‪11‬‬