Java901-Project2.pdf

‫پروژه سری دوم‬
‫درس برنامه نویسی شیءگرا‬
‫موعدارسال‪1390/10/5 :‬‬
‫محمد اصغری‬
‫پروژه سری دوم درس برنامه نویسی شیءگرا‬
‫موعد ارسال‪0931/10/5:‬‬
‫نکات کلی‬
‫‪ ‬ثشای اسسبل ثِ آدسس صیش هشاجؼِ کٌیذ‪:‬‬
‫‪http://arsh.co.ir/java901/‬‬
‫‪ ‬هَػذ اسسبل سبػت ‪ 95:37‬تبسیخ‪1571/10/5‬ثَدُ ٍ ثِ ّیچ ػٌَاى توذیذ ًخَاّذ ضذ‪.‬‬
‫‪ ‬تأخیش تب ‪ 1‬سبػت‪ ،‬ثِ اصای ّش ‪ 5‬دقیقِ هَجت کسش ضذى ‪ً "1‬وشُ‪ ،‬اص ‪ 1‬سبػت تب ‪ 92‬سبػت هَجت کسش ضذى‬
‫‪ً "91‬وشُ‪ ،‬اص ‪ 92‬سبػت تب ‪ 93‬سبػت‪ ،‬ثِ اصای ّش ‪ 9‬دقیقِ هَجت کسش ضذى ‪ً "1‬وشُی دیگش ٍ ثیي ‪ 93‬سبػت‬
‫تب ‪ 26‬سبػت ثبػث کسش ضذى ‪ً "31‬وشُ هیضَد‪ .‬تأخیش ثیطتش اص ‪ 26‬سبػت قبثل قجَل ًیست‪.‬‬
‫‪ ‬قغغ ثَدى ایٌتشًت خَاثگبُ‪ ،‬کٌذی پبیگبُ ایٌتشًتی داًطکذُ‪ ،‬توبم ضذى کبست ایٌتشًت ٍ … ّیچکذام دلیل‬
‫هَجْی ثشای تأخیش ًیستٌذ‪ .‬ثٌبثشایي پیطٌْبد هیضَد جَاةّبی خَد سا دس دانشکدهاسسبل کٌیذ‪.‬‬
‫‪ ‬سَاالت خَد سا ثب فشستبدى ایویل ثِ آدسس ‪ [email protected]‬یب دس گشٍُ دسس هغشح کٌیذ‪.‬‬
‫‪ً ‬حَُی تحَیل حضَسی پشٍطُ ثؼذا ثِ اعالع ضوب خَاّذ سسیذ‪.‬‬
‫‪ ‬دقت کٌیذ کِ ثبیذ ثتَاًیذ دس صهبى تحَیل ّش تغییشی دس کذّب اػوبل کٌیذ‪.‬‬
‫پشٍطُ سشی دٍم دسس ثشًبهِ ًَیسی ضیءگشا‬
‫‪1‬‬
‫مقدمه‬
‫دس فبص دٍم پشٍطُ هی خَاّین یک هحیظ گ شافیکی ثشای ثبصی ثٌَیسین‪ ،‬هحیظ ضجیِ سبصی تػَیشی ّوبى ثبصی هی ثبضذ‪.‬‬
‫الجتِ چٌذ تلِ ٍ قذست جذیذ ّن ثِ دالیلی اضبفِ ضذُ است‪ّ .‬وچٌیي ثب هذیشیت خغبّب آضٌب خَاّیذ ضذ ٍ ػالٍُ ثش ایٌْب‬
‫یک هحیظ رخیشُ ٍ ثبصیبثی گشافیکی ًقطِ ‪ً #map editor$‬یض ثِ پشٍطُ اضبفِ خَاّیذ کشد‪ .‬دس اداهِ ثِ عَس هفػل‬
‫دسثبسُ ی ایي هَاسد تَضیح دادُ خَاّذ ضذ‪.‬‬
‫ویرایش گر نقشه‬
‫دس ایي فبص ثبصی ّب سٍی ًقطِ ّبیی اًجبم هی ضًَذ کِ قجال رخیشُ ضذُ اًذ ٍ ًقطِ دیگش اص ٍسٍدی ًوی آیذ‪ .‬ثٌبثش ایي‬
‫ضوب ثبیذ یک ٍیشایص گش ًقطِ ثٌَیسیذ‪ .‬سبختبس فبیل ّب کبهال اختیبسی است ٍ ّش گًَِ کِ خَدتبى هی خَاّیذ هی‬
‫تَاًیذ آًْب سا ًگْذاسی کٌیذ‪ .‬ایي ٍیشایص گش ثبیذ ثِ غَست کبهال گشافیکی ثبضذ ٍ اهکبًبت صیش سا داضتِ ثبضذ‪:‬‬
‫‪ ‬اهکبى خَاًذى یک ًقطِ اص سٍی ّبسد دیسک ‪#load$‬‬
‫‪ ‬اهکبى رخیشُ ًقطِ ‪#save$‬‬
‫‪ ‬اهکبى تؼییي اثؼبد ًقطِ ٍ اضبفِ کشدى تلِ ٍ قذست ثِ ًقطِ‬
‫‪ ‬اهکبى ‪ undo‬ثِ تؼذاد ًبهحذٍد دس ٌّگبم ٍیشایص ًقطِ‬
‫‪ ‬اهکبى سّب کشدى تغییشات ٍ سبخت ًقطِ جذیذ ‪#new$‬‬
‫محیط بازی‬
‫کبسثش ثبیذ ثتَاًذ اص هحیظ ثبصی یک ًقطِ سا کِ قجال رخیشُ کشدُ است اًتخبة ٍ ثبصی سا ضشٍع کٌذ‪ .‬ثبصی هبًٌذ فبص یک‬
‫است ٍ ضوب ثبیذ اهکبى تبس اًذاختي ثِ ثبصیکي ّب ثذّیذ ٍ دس غَستی کِ قذستی ثِ دست آٍسدًذ ثِ آًْب حق اًتخبة یک‬
‫پشٍطُ سشی دٍم دسس ثشًبهِ ًَیسی ضیءگشا‬
‫‪9‬‬
‫ثبصیکي سا دادُ تب قذست سا سٍی آًْب اػوبل کٌذ‪ .‬جضییبت ثبصی ثِ اختیبس ضوب هی ثبضذ ٍلی ثبیذ ّوِ ی ػولکشدّبی هَسد‬
‫اًتظبس دس ثبصی سا فشاّن کٌیذ‪ ،‬ثشای اهکبًبت اضبفِ ٍ صیجبیی کبس ٍ ‪ً ...‬یض ًوشُ ای دس ًظش گشفتِ ضذُ است کِ هی تَاًیذ‬
‫دس قسوت ًوشُ دّی ثجیٌیذ‪.‬‬
‫انواع تله ها‪ ،‬قدرت ها و بازیکن ها‬
‫ثشای جزاة تش ضذى ثبصی چٌذ ًَع تلِ‪ ،‬قذست ٍ ثبصیکي جذیذ اضبفِ ضذُ است‪.‬‬
‫اًَاع تلِ ّب ثِ ضشح صیشًذ‪:‬‬
‫‪ ‬تلِ هشگ کِ دس فبص یک تَضیح دادُ ضذ‪.‬‬
‫‪ ‬تلِ کٌذ کِ دس فبص یک تَضیح دادُ ضذ‪.‬‬
‫‪ ‬تلِ غیش فؼبل سبصی کِ دس فبص قجل تَضیح دادُ ضذ‪.‬‬
‫‪ ‬تلِ فشستبدى ثِ جبی تػبدفی‪ :‬اگش کسی ٍاسد ایي تلِ ضَد ثِ یکی اص خبًِ ّبی قجلی ثِ غَست تػبدفی فشستبدُ‬
‫هی ضَد‪ ،‬دقت کٌیذ کِ اگش خبًِ هقػذ تلِ یب قذست ثبضذ یب ثبصیکٌی دیگش ثبیذ ثشای ّش کذام کبسی هٌبست‬
‫اًجبم ضَد‬
‫‪ ‬تلِ هؼکَس کٌٌذُ‪ :‬اگش کسی ٍاسد ایي تلِ ضَد‪ ،‬ثشای دٍ دٍس هسیش حشکتص ثشػکس هی ضَد‪ ،‬یؼٌی اگش تبسی‬
‫ثیٌذاصد کِ اٍ سا ‪ 5‬خبًِ ثِ جلَ ثجشد‪ ،‬ثبیذ ‪ 5‬خبًِ ػقت ثشدُ ضَد‪.‬‬
‫اًَاع قذست ّب‪:‬‬
‫‪ ‬قذست فشستبدى ثِ ػقت کِ دس فبص یک تَضیح دادُ ضذ‪.‬‬
‫‪ ‬قذست فشستبدى ثِ ًضدیک تشیي تلِ کِ دس فبص یک تَضیح دادُ ضذ‪.‬‬
‫‪ ‬قذست سشػت‪ ،‬ثب گشفتي ایي قذست ثبصیکي دس دٍ دٍس ثؼذ دٍ ثشاثش پشش هی کٌذ‪ ،‬یؼٌی ثِ جبی ‪ 2‬خبًِ ‪ 4‬خبًِ‬
‫جلَ هی سٍد‪.‬‬
‫اًَاع ثبصیکي ّب‪:‬‬
‫‪ ‬ثبصیکي هْبجن‪ :‬ایي ثبصیکي ّش ثبس کِ تبس هیٌذاصد ‪ 55‬دسغذ احتوبل داسد دٍ ثبس ثپشد‪ ،‬یؼٌی اًگبس دٍ ثبس پطت‬
‫ّن تبس اًذاختِ!‬
‫‪ ‬ثبصیکي هذافغ‪ :‬ایي ثبصیکي ثِ احتوبل ‪ 55‬دسغذ ٍقتی ٍاسد تلِ ضَد‪ ،‬تلِ سا اص ثیي هی ثشد ٍ اتفبقی ثشایص ًوی‬
‫افتذ‪ ،‬اگش ّن ثبصیکٌی ٍاسد خبًِ ی اٍ ضَد‪ ،‬ثبص ثِ احتوبل ‪ 55‬دسغذ اٍ ثبصیکي سا خَاّذ کطت!‬
‫‪ ‬ثبصیکي هشدُ خَس‪:‬دی‪ :‬ایي ثبصیکي ثؼذ اص ّش حشکت ‪ 25‬دسغذ ضبًس داسد تب جبی خَد سا ثب یک ثبصیکي دیگش دس‬
‫صهیي ػَؼ کٌذ‪ ،‬اٍ اگش ثخَاّذ هی تَاًذ اص ایي فشغت استفبدُ ًکٌذ‪.‬‬
‫ًَع ثبصیکي سا ّش ًفش دس اٍل ثبصی هطخع هی کٌذ‬
‫مدیریت خطاها‬
‫ضوب ثبیذ اص سیستن خغبی جبٍا ‪ #catch ،try ،throw$‬ثشای هذیشیت خغبّبی خَد استفبدُ کٌیذ‪ :‬خغبّبیی کِ پشتبة ٍ‬
‫گشفتِ ضًَذ ضبهل هَاسد صیش هی ثبضٌذ‪:‬‬
‫پشٍطُ سشی دٍم دسس ثشًبهِ ًَیسی ضیءگشا‬
‫‪ ‬ثبصیکي هؼوَلی کِ دس پشٍطُ اٍل ًیض ٍجَد داضت‬
‫‪5‬‬
‫‪ ‬ثبصیکٌی خبسج صهیي ثبضذ‪ :‬ایي خغب هشثَط ثِ ٍقتی است کِ کسی ثبصیکٌی سا اًتخبة کٌذ کِ ثیشٍى اص صهیي‬
‫است‪ ،‬هثال ثشای استفبدُ اص قذست!‬
‫‪ ‬ثبصیکٌی ًتَاًذ ػقت ثشٍد‪ٍ :‬قتی کِ کسی سا آًقذس ثِ ػقت ثفشستین کِ اص غفحِ خبسج ضَد‪ ،‬دس ایي غَست فشد‬
‫ثِ ػقت ًوی سٍد ٍ خغبیی ایجبد هی ضَد‬
‫‪ ‬ثبصیکٌی اص جلَی ًقطِ ثیشٍى ثیفتذ‪ ،‬هثال دس خبًِ ی یکی هبًذُ ثِ آخش ثبضذ ٍ ‪ 5‬ثیبٍسد‪ ،‬دس ایي ٌّگبم ًیض ثبیذ‬
‫خغبی هٌبسجی پشتبة ضَد‪.‬‬
‫‪ ‬ػذم ٍجَد ًضدیک تشیي تلِ‪ٍ :‬قتی ًضدیک تشیي تلِ ای ٍجَد ًذاضتِ ثبضذ‬
‫ایي خغبّبیی ثَد کِ ثِ رّي هي سسیذ ٍ اججبسی ّستٌذ‪ ،‬یبفتي ثقیِ ی اًَاع خغبّبی ثبصی ثِ ػْذُ خَدتبى ٍ اختیبسی‬
‫است‪ .‬دقت کٌیذ کِ ثشًبهِ ی ضوب دس الیِ ی ًوبیص ثبیذ ثِ ًحَُ ی هٌبسجی ایي خغبّب سا ًوبیص دّذ‪.‬‬
‫مکانیسم تاس انداختن‬
‫ثِ خبعش هطکالتی کِ هثل ّویطِ ثشای تحَیل حضَسی ٍ تست ثشًبهِ ّبیتبى ٍجَد داسد‪ ،‬گشافیک ضوب ثبیذ دٍ هکبًیضم‬
‫ثشای تبس اًذاختي داضتِ ثبضذ‪ ،‬یکی هکبًیضم تػبدفی کِ فشد ثتَاًذ ثب آى تبس ثیٌذاصد‪ ،‬دٍهی اهکبى ایٌکِ کبسثش ػذد‬
‫تبس سا خَدش ٍاسد کٌذ ٍ اًگبس آى ػذد ٍاقؼب ػذد تبس است‪ ،‬ایي اهکبى غشفب ثشای تحَیل حضَسی ٍ تست هی ثبضذ‪.‬‬
‫نکات پیاده سازی‬
‫ثِ دلیل اّویتی کِ ًحَُ ی ًگشش دسست ثِ هسئلِ ٍ عشاحی هٌبست داسد ثخص خَثی اص ًوشُ ثِ ایي ثخص تؼلق هی‬
‫گیشد ٍ ّویي دلیل ًکبتی دس اداهِ گفتِ خَاّذ ضذ کِ حتوب ثبیذ ثِ آًْب تَجِ کٌیذ‪.‬‬
‫‪ ‬اٍال دس ایي پشٍطُ اًتظبس هی سٍد ضوب کبهال اص هفبّین ‪ٍ polymorphism ،inheritance‬‬
‫‪ ... ٍ encapsulation‬استفبدُ کٌیذ‪.‬‬
‫پشٍطُ سشی دٍم دسس ثشًبهِ ًَیسی ضیءگشا‬
‫‪2‬‬
‫‪ ‬ضوب ثبیذ یک کالس پبیِ ثشای ثبصیکي ّب داضتِ ثبضیذ کِ خَاظ هطتشک ثبصیکي ّب دس آى ثبضذ ٍ ّش ‪ًَ 2‬ع‬
‫ثبصیکي فشصًذ آى ثَدُ ٍ تب حذ اهکبى فقظ تفبٍت ّبی آًْب دس کذّبیطبى ثبضذ ٍ کذ تکشاسی ٍ صایذی ثیي آًْب‬
‫هطتشک ًجبضذ‪ .‬اهکبى ًوًَِ گیشی اص ایي کالس پبیِ ٍجَد ًذاسد‪.‬‬
‫‪ً ‬کتِ ی ثبال ثشای تلِ ّب ٍ قذست ّب ّن ثشقشاس است‪.‬‬
‫‪ ‬خغبّبی ضوب ّش کذام ثبیذ یک کالس ٍ ّوِ ثبیذ فشصًذ یک خغبی پبیِ ثبضٌذ هثال ‪ GameException‬کِ‬
‫خغبّبی ثبصی سا اص اًَاع خغبّبی دیگش دس جبٍا هتوبیض هی کٌذ ٍ ّوِ ی ‪ّ catch‬بی ضوب کِ ثِ قػذ گشفتي‬
‫‪ GameException‬یب فشصًذاى آى ثبضٌذ‪ .‬اص گزاضتي )‪ catch(Exception e‬دس کذ اکیذا خَدداسی‬
‫کٌیذ‪.‬‬
‫‪ ‬عشاحی کالس ّبی هَسد ًیبص ثشای گشافیک ٍ هٌغق ٍ هذیشیت ثبصی ٍ تبس ٍ ‪ ...‬ثِ ػْذُ ی خَدتبى هی ثبضذ‪،‬‬
‫ضوب ثبیذ ثتَاًیذ عشاحی خَد سا تَجیح کٌیذ ٍ دلیل هٌغقی ثشای آى داضتِ ثبضیذ‪ .‬پس قجل اص ضشٍع ثِ کذ‬
‫صدى ثِ عَس کبهل دس هَسد تقسین ثٌذی کالس ّب ٍ سٍاثظ آًْب تفکش کٌیذ‪.‬‬
‫‪ ‬اص صدى کذ کثیف‪ ،‬تکشاسی ٍ تبثغ ّبی عَالًی ٍ جوغ کشدى کذ دس یک کالس یب تبثغ خبظ ٍ هَاسد هطبثِ‬
‫خَدداسی کٌیذ‪.‬‬
‫‪ ‬اص ‪package‬ثٌذی هٌبست ثشای هذیشیت ٍ دستِ ثٌذی فبیلْبی ‪java‬ی خَد استفبدُ کٌیذ ٍ ّوِ سا دس یک‬
‫‪ package‬جوغ ًکٌیذ‪.‬‬
‫‪ ‬ثِ ػٌَاى یک ًکتِ ی ثسیبس هْن ثبیذ تَجِ کٌیذ کِ دس کالس ّبی هٌغق ٍ هذیشیت ثبصی‪ ،‬غفحِ ی ثبصی ٍ‬
‫گشافیک ٍ ‪ ...‬فقظ ثِ کالس ّبی ‪ ٍ GameException‬کالس ّبی پبیِ ی ثبصیکي‪ ،‬تلِ ٍ قذست دستشسی‬
‫داسیذ ٍ ثِ ثچِ ّبی آًْب دستشسی ًذاسیذ ٍ ًجبیذ دس کذ ایي کالس ّب اثشی اص ثچِ ّب دیذُ ضَد‪ .‬اص خػَغیت‬
‫ّبی خَة ایي ًحَُ ی ًَضتي آى است کِ افضٍدى ثبصیکي‪ ،‬قذست‪ ،‬خغب ٍ تلِ ی جذیذ ساحت خَاّذ ثَد ٍ ثِ‬
‫جض ًَضتي کذ ّوبى کالس جذیذ‪ً ،‬یبصی ثِ تغییش دس هٌغق ثشًبهِ ًذاسد‪ .‬ثشای اًجبم ایي کبس ثِ ػٌَاى پیطٌْبد‬
‫هی تَاًیذ اص کالس صیش استفبدُ کٌیذ‪:‬‬
‫کالسی ثِ ػٌَاى ‪ ResourceManager‬ثبیذ داضتِ ثبضیذ کِ کبس آى ثجت لیست ثبصیکي ّب‪ ،‬تلِ ّب ٍ قذست‬
‫ّب هی ثبضذ‪ .‬هثال ایي کالس ثبیذ تَاثؼی هطبثِ صیش داضتِ ثبضذ‪:‬‬
‫تبثغ ّبی هَسد ًیبص سا ثشای آى تلِ پیبدُ سبصی کشدُ دس غَست ًیبص ‪ BaseTrap‬سا کوی تغییش دّین ٍ دس‬
‫پشٍطُ سشی دٍم دسس ثشًبهِ ًَیسی ضیءگشا‬
‫{)‪Public static BaseTrap getTrapByType(int type‬‬
‫)‪If (type == 0‬‬
‫;)(‪Return new DeathTrap‬‬
‫)‪Else if(type == 1‬‬
‫;)(‪Return new SlowTrap‬‬
‫)‪Else if(type == 2‬‬
‫;)(‪Return new DisableTrap‬‬
‫)‪Else if(type == 3‬‬
‫;)(‪Return new RandomBackwardTrap‬‬
‫)‪Else if(type == 4‬‬
‫;)(‪Return new ReverseTrap‬‬
‫;‪Return null‬‬
‫}‬
‫};‪Public static int getTrapTypeCount(){ return 5‬‬
‫حبل اگش هب ثخَاّین ًَع جذیذی تلِ ثِ سیستن اضبفِ کٌین‪ ،‬فقظ ثبیذ یک کالس جذیذ ثشای آى تلِ ثسبصین ٍ‬
‫‪3‬‬
‫ًْبیت ثبیذ دٍ تبثغ ثبال سا ثِ سٍص کٌین ٍ ثشًبهِ ی هب پس اص آى ثذٍى ًیبص ثِ تغییش دیگشی دسست کبس کٌذ‪ .‬هثال‬
‫هی خَاّیذ دس هحیظ ٍیشایص ًقطِ ثِ اصای ّش ًَع تلِ یک دکوِ ثگزاسین کِ ثب صدى آى ثتَاًذ آى ًَع تلِ سا ثِ‬
‫ًقطِ اضبفِ کٌذ‪ ،‬آًگبُ ثبیذ کذی هطبثِ صیش داضتِ ثبضیذ‪:‬‬
‫;)(‪Int trapCount = ResourceManager.getTrapTypeCount‬‬
‫{)‪For (int I = 0; I < trapCount; I++‬‬
‫;)(‪JButton btn = new JButton‬‬
‫;)‪BaseTrap trap = ResourceManager.getTrapByType(I‬‬
‫;))(‪Btn.setImage(trap.getIconImage‬‬
‫‪….‬‬
‫}‬
‫ّوبًغَس کِ هی ثیٌیذ ایي کذ دس غَست دسست ثَدى ‪ ResourceManager‬ثؼذ اص اضبفِ ضذى تلِ ی جذیذ ثذٍى‬
‫ًیبص ثِ تغییش دسست کبس خَاّذ کشد‪.‬‬
‫پشٍطُ سشی دٍم دسس ثشًبهِ ًَیسی ضیءگشا‬
‫‪4‬‬
‫نحوه نمره دهی‬
‫صیجبیی گشافیک‪ً 13 :‬وشُ ‪$‬دقت کٌیذ کِ ایي ًوشُ کبهال سلیقِ ای هی ثبضذ ٍ ثشای ثِ دست آٍسدى آى‪ ،‬گشافیک ضوب ثبیذ‬
‫دس ًگبُ اٍل تبثیش هثجتی ثش ثیٌٌذُ ثگزاسد‪ ،‬ثٌبثش ایي ًوی تَاًیذ ادػبیی دس هَسد ایي ًوشُ داضتِ ثبضیذ‪ ،‬چَى کبهال کیفی‬
‫است‪#‬‬
‫کبسکشد دسست ٍ کبهل‪ً 53 :‬وشُ‬
‫‪ ‬ثبصیکي ّب‪ ،‬تلِ ّب‪ ،‬قذست ّب ّش کذام ‪ً 13‬وشُ‬
‫‪ٍ ‬یشایص گش ًقطِ ‪ً 13‬وشُ‬
‫‪ ‬ثقیِ هَاسد ‪ً 13‬وشُ‬
‫عشاحی دسست کالس ّب ٍ ضیئ گشایی‪ً 41 :‬وشُ‬
‫‪ ‬عشاحی کالس ّبی ثبصیکي‪ ،‬تلِ‪ ،‬قذست ٍ خغبّب ّش کذام ‪ً 11‬وشُ‬
‫‪ ‬عشاحی ثقیِ ی سیستن ثِ غَست گفتِ ضذُ ‪ً 91‬وشُ‬
‫دقت کٌیذ کِ ‪ً 31‬وشُ اضبفِ هی ثبضذ‪.‬‬
‫هَفق ٍ پیشٍص ثبضیذ‬
‫هحوذ اغغشی‬
‫پشٍطُ سشی دٍم دسس ثشًبهِ ًَیسی ضیءگشا‬
‫‪5‬‬