JAVA_902_P1.pdf

‫فاز اول پروژه‬
‫درس برنامه نویسی شئگرا‬
‫موعد ارسال‪ :‬شنبه ‪ 91‬فروردین ‪9119‬‬
‫فبس اٍل پزٍصُ ثزًبهِ سبسی ضیءگزا‬
‫هْلت تحَیل‪ :‬شنبه ‪ 91‬فروردین ‪9119‬‬
‫وکات کلی‬
‫‪ ‬ثزای ارسبل ثِ آدرس سیز هزاجؼِ کٌیذ‪:‬‬
‫‪1‬‬
‫‪http://arsh.co/java902/‬‬
‫‪ ‬هَػذ تحَیل سبػت ‪ 16:59‬رٍس ضٌجِ ‪ 19‬فزٍردیي ‪ 1۹91‬ثَدُ ٍ ثِ ّیچ ػٌَاى توذیذ ًخَاّذ ضذ‪.‬‬
‫‪ ‬تأخیز تب ‪ 1‬سبػت‪ ،‬ثِ اسای ّز ‪ ۹‬دقیقِ هَجت کسز ضذى ‪ً "1‬وزُ‪ ،‬اس ‪ 1‬سبػت تب ‪ 42‬سبػت هَجت کسز ضذى‬
‫‪ً "42‬وزُ‪ ،‬اس ‪ 42‬سبػت تب ‪ 45‬سبػت‪ ،‬ثِ اسای ّز ‪ 4‬دقیقِ هَجت کسز ضذى ‪ً "1‬وزُی دیگز ٍ ثیي ‪ 45‬سبػت‬
‫تب ‪ 28‬سبػت ثبػث کسز ضذى ‪ً "52‬وزُ هیضَد‪ .‬تأخیز ثیطتز اس ‪ 28‬سبػت قبثل قجَل ًیست‪.‬‬
‫‪ ‬قغغ ثَدى ایٌتزًت خَاثگبُ‪ ،‬کٌذی پبیگبُ ایٌتزًتی داًطکذُ‪ ،‬توبم ضذى کبرت ایٌتزًت ٍ … ّیچکذام دلیل‬
‫هَجْی ثزای تأخیز ًیستٌذ‪ .‬ثٌبثزایي پیطٌْبد هیضَد جَاةّبی خَد را در دانشکده ارسبل کٌیذ‪.‬‬
‫‪ ‬اس آًجبیی کِ ثخطی اس ًوزُ ضوب ثب تػحیح ثِ ضکل خَدکبر هطخع هیضَد‪ ،‬السم است در پیبدُ سبسی ٍرٍدی‬
‫ٍ خزٍجی دقت سیبدی کٌیذ‪.‬‬
‫‪ ‬تالش ثزای استفبدُ اس هٌبثغ سیستن هبًٌذ کبرت غذا ٍ پزیٌتز ٍ ًَضتي ثِ فبیل ٍ ‪ ...‬هٌجز ثِ دریبفت ًوزُی‬
‫غفز در ایي فبس پزٍصُ هیضَد‪.‬‬
‫‪ ‬سَاالت خَد را در سبیت ‪ ٍ piazza‬ثب تگ هٌبست هغزح کٌیذ‪.‬‬
‫‪ً ‬حَُ تحَیل حضَری هتؼبقجبً اػالم خَاّذ ضذ‪.‬‬
‫فبس اٍل پزٍصُ ثزًبهِ سبسی ضیءگزا‬
‫‪1‬‬
‫دقت کٌیذ کِ آدرس درست ‪ arsh.co‬است ٍ ًِ ‪!arsh.co.ir‬‬
‫‪1‬‬
‫مقدمٍ‬
‫سالم‪،‬‬
‫پزٍصُ ایي درس‪ ،‬پیبدُ سبسی یک ثبسی ثسیبر جبلت ثِ اسن «راس‬
‫جٌگل» ّست‪ .‬ایي ثبسی رٍی یک سهیي ثب تؼذادی خبًِ در یک ًوَدار‬
‫گزاف ضکل اًجبم هیضَد‪ .‬تؼذاد ثبسیکٌبى ثبسی دٍ تب چْبر ًفز است کِ‬
‫ّز کذام یک هْزُ در سهیي دارًذ کِ هکبى آًْب در سهیي را ًطبى‬
‫هیدّذ‪ .‬ثبسی تَسظ دٍ ػذد تبس اًجبم هیضَد‪.‬‬
‫در فبس اٍل‪ ،‬ضوب ایي ثبسی را ثزای اجزا در کٌسَل پیبدُ سبسی‬
‫هیکٌیذ‪ .‬در فبسّبی ثؼذی هحیظ گزافیکی ٍ ثبسی تحت ضجکِ را ثِ آى‬
‫اضبفِ خَاّیذ کزد‪.‬‬
‫قًاویه بازی‬
‫زمیه بازی‬
‫سهیي ثبسی یک ًوَدار گزاف ضکل است کِ در ضکل ‪ً 1‬طبى دادُ ضذُ است‪ .‬خبًِّبی سجش رًگ خبًِ ّبی ػبدی‬
‫ّستٌذ‪ .‬در سیز ّز یک اس سیشدُ خبًِ ی ًبرًجی رًگ یک گٌج پٌْبى ضذُ است ‪$‬در ایي فبس ًبم ایي گٌجْب را حزفْبی ‪A‬‬
‫تب ‪ M‬در ًظز ثگیزیذ‪ .#‬خبًِّبی قزهش ٍ ثٌفص ًیش تَضیح دادُ هیضًَذ‪.‬‬
‫مراحل بازی‬
‫ثبسی در سیشدُ هزحلِ اًجبم هیضَد‪ .‬در ّز هزحلِ یکی اس گٌجّب ثِ غَرت تػبدفی هطخع هیضَد ٍ ثبسیکٌبى ثبیذ‬
‫سؼی کٌذ ثِ آى دست پیذا کٌٌذ‪ّ .‬ز هزحلِ ثب دستیبثی یکی اس ثبسیکٌبى ثِ گٌج آى هزحلِ پبیبى هییبثذ‪.‬‬
‫فبس اٍل پزٍصُ ثزًبهِ سبسی ضیءگزا‬
‫‪4‬‬
‫آغاز بازی‬
‫در اثتذای ثبسی گٌجّب ثِ غَرت تػبدفی در خبًِّبی ًبرًجی پخص هیضًَذ‪ .‬ثبسیکٌبى ًیش در اثتذا در خبًِّبی آثی رًگ‬
‫قزار دارًذ‪.‬‬
‫شکل ‪9‬‬
‫فرایىد بازی‬
‫ًَثت ثبسی ثز اسبس تزتیت ثبسیکٌبى ثیي آًْب هیچزخذ ٍ در ّز ًَثت‪ ،‬دٍ تبس ّوشهبى اًذاختِ هیضَد ٍ ثب تَجِ ثِ‬
‫اػذاد آهذُ ثبسیکي هْزُاش را حزکت هیدّذ‪ .‬حرکت مربوط به هر تاس مستقل انجام میشود ٍ در ٍاقغ در ّز ًَثت‬
‫ّز ثبسیکي دٍ حزکت اًجبم هی دّذ‪ .‬تزتیت اًتخبة اػذاد دٍ تبس در یک ًَثت ثِ دلخَاُ ثبسیکي است ٍلی حزکت هْزُ‬
‫در ّز کذام اس دٍ حزکت ثبیذ در یک جْت ثبضذ ‪$‬ثزای هثبل هوکي است حزکت اٍل رٍ ثِ جلَ ٍ حزکت ثؼذی رٍ ثِ‬
‫ػقت ثبضذ ٍ ثِ عَر هثبل ًویتَاًذ قسوتی اس یک حزکت را ثِ جلَ ٍ قسوتی را ثِ ػقت ثزٍد‪ .#‬در چٌذراّی ّب ّز یک اس‬
‫هسیزّب ثِ غیز اس هسیز ٍرٍد ثِ چٌذ راّی را هیتَاى اًتخبة کزد‪.‬‬
‫آى خبًِ را ثجیٌذ‪$‬در ثبسی ٍاقؼی ًبم گٌج فقظ ثِ ّوبى ثبسیکي ًطبى دادُ هیضَد ٍلی در ایي فبس ًویتَاى ایي قبًَى را‬
‫ثِ درستی اػوبل کزد‪.#‬‬
‫در غَرتی کِ هْزُ یک ثبسیکي در انتهای یک حرکت‪ ،‬در خبًِ قزهش قزار ثگیزد‪ ،‬اٍ هیتَاًذ در غَرتی کِ ثخَاّذ ًظز‬
‫خَد را در هَرد هحل گٌج آى هزحلِ را اػالم کٌذ‪.‬‬
‫فبس اٍل پزٍصُ ثزًبهِ سبسی ضیءگزا‬
‫در غَرتی کِ هْزُ یک ثبسیکي در انتهای یک حرکت‪ ،‬در یکی اس خبًِّبی ًبرًجی رًگ قزار ثگیزد‪ ،‬اٍ هیتَاًذ ًبم گٌج‬
‫‪۹‬‬
‫در غَرت درست ثَدى هحل گٌج اػالم ضذُ‪ ،‬اٍ گٌج را ثِ دست آٍردُ ٍ هزحلِ فؼلی پبیبى هیپذیزد ٍ ًَثت ثؼذی ًیش ثِ‬
‫ػٌَاى جبیشُ ثِ ّوبى ثبسیکي تؼلق هیگیزد‪ .‬در ایي ًَثت ثبسیکي هی تَاًذ هحل گٌج هزحلِ جذیذ را اػالم کٌذ ٍ یب ثب‬
‫اًذاختي تبس ثِ ثبسی اداهِ ثذّذ‪.‬‬
‫در غَرت اضتجبُ ثَدى ًیش‪ ،‬هْزُ ثبسیکي ثِ خبًِّبی آثی رًگ ثزهیگزدد‪.‬‬
‫در غَرتی کِ هْزُ یک ثبسیکي در انتهای یک حرکت‪ ،‬ثز رٍی هْزُی ثبسیکي دیگزی قزار ثگیزد‪ ،‬جبی آى را گزفتِ ٍ‬
‫هْزُی ثبسیکي دٍم ثِ خبًِّبی آثی هٌتقل هیضَد‪.‬‬
‫در غَرتی کِ در یک ًَثت‪ ،‬اػذاد دٍ تبس اًذاختِ ضذُ هطبثِ ثبضٌذ‪ ،‬ثبسیکي هیتَاًذ در غَرتی کِ ثخَاّذ ثِ جبی‬
‫حزکت دادى هْزُّب‪ ،‬یکی اس کبرّبی سیز را اًجبم دّذ‪:‬‬
‫‪ ‬هْزُی خَد را ثِ یکی اس خبًِّبی ًبرًجی خبلی هٌتقل کٌذ ٍ ًبم گٌج آى را ثجیٌذ‪.‬‬
‫‪ ‬هْزُ خَد را ثِ خبًِ ثٌفص هٌتقل کٌذ‪.‬‬
‫‪ ‬گٌج ّذف هزحلِ فؼلی را تغییز دّذ تب گٌج جذیذی ثِ غَرت تػبدفی هطخع ضَد‪.‬‬
‫پایان بازی‬
‫ثب پبیبى یبفتي سیشدُ هزحلِ‪ ،‬ثبسیکٌی کِ تؼذاد گٌجّبی ثیطتزی را ثِ دست آٍردُ است ثزًذُ هیضَد‪.‬‬
‫يريدی ي خريجی‬
‫در اثتذا ثزًبهِ ثب پیبم سیز تؼذاد ثبسیکٌبى را درخَاست هیکٌذ‪:‬‬
‫?‪How many players are going to play‬‬
‫تؼذاد ثبسیکٌبى ثِ ػٌَاى ٍرٍدی ثِ ثزًبهِ دادُ خَاّذ ضذ‪.‬‬
‫در اثتذای ّز هزحلِ ٍ یب ثب تغییز یبفتي گٌج ّذف هزحلِ ٍ پیص اس ضزٍع ًَثت ثبسیکي‪ ،‬گٌج ّذف ثب پیبهی ثِ یکی اس‬
‫فبس اٍل پزٍصُ ثزًبهِ سبسی ضیءگزا‬
‫‪2‬‬
‫غَرتّبی سیز در خزٍجی هطخع هیضَد‪:‬‬
‫‪Round number 5 started, this round's goal treasure is E‬‬
‫‪Round number 5, this round's goal treasure has changed to F‬‬
‫در اثتذای ًَثت ّز ثبسیکي‪ ،‬اػذاد تبسّبی اٍ ثِ ّوزاُ اًتخبةّبی اٍ در خزٍجی هطخع هیضًَذ‪ .‬ثِ ّوزاُ ایي‬
‫اعالػبت‪ٍ ،‬ضؼیت ثبسی ضبهل هَقؼیت ثبسیکٌبى ًیش هطخع هیضَد‪:‬‬
‫‪Current Positions: 1->22 2->57 3->91‬‬
‫‪Dice Numbers for Player 2: 3 5‬‬
‫‪Player 2's Choices:‬‬
‫‪1. Move to 54, and then move 5 cells‬‬
‫‪2. Move to 60(Orange), and then move 5 cells‬‬
‫…‬
‫ثبسیکي یکی اس اًتخبة ّب را ثب دادى ضوبرُ آى هطخع هیکٌذ‪ .‬حزکت دٍم ًیش ثِ غَرت سیز هطخع هیضَد‪:‬‬
‫‪Player 2's Choices(Second Dice):‬‬
‫‪1. Move to 10‬‬
‫)‪2. Move to 66(Orange‬‬
‫…‬
‫در غَرت هطبثِ ثَدى اػذاد تبسّب‪ ،‬اًتخبة ّبی سیز ًیش ثِ اًتخبة ّبی تبس اٍل اضبفِ هیضًَذ‪:‬‬
‫)‪5. Move to 85(Orange‬‬
‫)‪6. Move to 88(Orange‬‬
‫…‬
‫)‪19. Move to 15(Violet‬‬
‫‪20. Change current round's goal treasure‬‬
‫ثبسیکي ثب ٍارد کزدى ضوبرُ اًتخبة در ٍرٍدی‪ ،‬اًتخبثص را هطخع هیکٌذ‪.‬‬
‫در غ َرتی کِ در پبیبى یک حزکت هْزُ ثبسیکي در خبًِ قزهش قزار ثگیزد‪ ،‬پیبم سیز در خزٍجی اس اٍ هیخَاّذ کِ هحل‬
‫گٌج را در غَرت توبیل هطخع کٌذ‪:‬‬
‫‪Player 2 is in 25(Red), and can attempt to guess goal treasure's place:‬‬
‫‪1. I don't know‬‬
‫‪2. 39‬‬
‫‪3. 43‬‬
‫…‬
‫در غَرت درست ثَدى ٍ ثِ دست آٍردى گٌج‪ ،‬پیبم سیز ثبیذ در خزٍجی ایي هَضَع را هطخع کٌذ‪:‬‬
‫غَرتی کِ ثب اًتخبة گشیٌِ ‪ I don't know‬ػذم توبیل خَد را اػالم کٌذ‪ ،‬ثبسی ثب تبس اًذاختي در ًَثت خَدش اداهِ‬
‫پیذا هیکٌذ‪#‬‬
‫در غَرتی کِ ثِ ّز دلیلی یک ثبسیکي ثِ خبًِّبی آثی هٌتقل ضَد السم است کِ پیبم سیز در خزٍجی چبح ضَد‪:‬‬
‫‪Player 2 is moved to Blue cells.‬‬
‫ثِ سٍدی یک ًوًَِ اس ٍرٍدی ٍ خزٍجی در اختیبرتبى قزار دادُ خَاّذ ضذ‪.‬‬
‫فبس اٍل پزٍصُ ثزًبهِ سبسی ضیءگزا‬
‫‪Player 2 has won this round's goal treasure, E‬‬
‫‪$‬پس اس ثِ دست آٍردى گٌج ثِ ثبسیکي هجذداً اجبسُ دادُ هی ضَد تب در غَرت توبیل هحل گٌج جذیذ را هطخع کٌذ‪ .‬در‬
‫‪5‬‬
‫وحًٌ پیادٌ سازی‬
‫در ایي ثخص پیطٌْبد کلی ثزای سبختبر ضئ گزای پیبدُ سبسی ارائِ هیضَد‪.‬‬
‫تؼزیف کالسْبی سیز ثب تَجِ ثِ ثبسی درست ثِ ًظز هیرسذ‪:‬‬
‫کالس ‪ :BoardCell‬ثزای ّز یک اس خبًِّبی سهیي یک ًوًَِ اس ایي کالس هیتَاًذ سبختِ ضَد‪$ .‬دقت کٌیذ کِ‬
‫خبًِّبی سهیي اًَاع هختلفی دارًذ کِ خَة است ثب ٍراثت هذل ضًَذ‪#.‬‬
‫کالس ‪ :Board‬سهیي ثبسی کِ هتطکل اس هْزُّبی ثبسیکٌبى ٍ خبًِّبی سهیي ٍ تبسّب است‪.‬‬
‫کالس ‪ : Player‬ثزای ّز ثبسیکي یک ًوًَِ اس ایي کالس ٍجَد دارد کِ هحل هْزُ ٍ دیگز خَاظ آى ثبسیکي را هطخع‬
‫هیکٌذ‪.‬‬
‫کالس ‪ :DicePool‬ایي کالس فزایٌذ اًذاختي تبس را اًجبم هیدّذ‪.‬‬
‫کالس ‪ : Game‬در ایي کالس ضزٍع ٍ فزایٌذ ثبسی پیبدُسبسی هیضًَذ‪ .‬در ٍاقغ ایي کالس قَاًیي ثبسی هذًظز را‬
‫پیبدُسبسی هی کٌذ‪ .‬اعالػبت هزثَط ثِ ٍضؼیت ثبسی ‪$‬ثِ عَر هستقین ٍ یب غیز هستقین‪ #‬در اختیبر ایي کالس ّستٌذ‪.‬‬
‫کالس ‪ :ConsoleServer‬ایي کالس حبٍی پیبدُ سبسی کٌسَل ثزًبهِ است کِ یک ًوًَِ اس ‪ Game‬ایجبد هیکٌذ ٍ‬
‫ثب کوک ٍاسظ آى‪ ،‬ثبسی را در کٌسَل اجزا هیکٌذ‪ .‬حلقِ اغلی ثزًبهِ در ایي کالس قزار دارد‪.‬‬
‫اس آًجب کِ السم است در فبسّبی ثؼذی هحیظ گزافیکی ًیش ثب پزٍصُ اضبفِ ضًَذ‪ ،‬خَة است اس ّویي االى در پیبدُ سبسی‬
‫ٍاسظ ارتجبعی ثیي ‪ ConsoleServer ٍ Game‬دقت کٌیذ‪ .‬خیلی خَة است اگز اضبفِ کزدى هحیظ گزافیکی ًیبس‬
‫ثِ تغییز در کالس ‪ Game‬را ثِ ّوزاُ ًذاضتِ ثبضذ‪.‬‬
‫فبس اٍل پزٍصُ ثزًبهِ سبسی ضیءگزا‬
‫‪6‬‬
‫ومرٌ بىدی ي ومرٌ اضافی‬
‫‪62‬درغذ ًوزُ ثِ قضبٍت آًالیي ٍ ‪22‬درغذ آى ثِ تحَیل حضَری اختػبظ دارد‪.‬‬
‫در تحَیل حضَری هَارد سیز ثزرسی هیضًَذ‪:‬‬
‫‪ .1‬تسلظ ثز کذ‬
‫‪ .4‬استفبدُ اس هفبّین ضیئ گزا ٍ درستی اًتخبة اضیبء ٍ کالسْب‬
‫‪ً .۹‬حَُی کذ سدى درست‪$‬دراس ًجَدى ثیص اس حذ تَاثغ‪ً ،‬بمگذاری غحیح ٍ ‪#...‬‬
‫‪ .2‬رػبیت هَاردی هبًٌذ ‪ Visibility‬در اػضبی کالسّب‪ ،‬استفبدُ درست اس فیلذّبی ‪… ٍ static‬‬
‫‪ .5‬استفبدُ درست اس سبختبر ‪ّ package‬ب ٍ فبیلّب‬
‫ثِ هَارد سیز ًوزُ اضبفی تؼلق هیگیزد‪:‬‬
‫‪ًَ .1‬ضتي جبٍاداک‪$ #JavaDoc$‬تب حذاکثز ‪12‬درغذ ًوزُ‪#‬‬
‫‪ًَ .4‬ضتي یک ثبسیکي ًوًَِی َّضوٌذ ‪$‬تب حذاکثز ‪12‬درغذ ًوزُ‪#‬‬
‫‪ .۹‬قبثلیت خَاًذى گزاف ًقطِ سهیي اس فبیل ‪$‬تب حذاکثز ‪42‬درغذ ًوزُ‪#‬‬
‫وحًٌ فرستادن کد‬
‫کذ خَد را در قبلت یک فبیل ‪ zip‬ثفزستیذ‪ .‬ریطِ ایي فبیل ‪ zip‬ثبیذ حبٍی یک فَلذر ثب ًبم ‪ razeJangal‬ثبضذ کِ‬
‫هؼبدل ‪ package‬ریطِ ثزًبهِ ثب ّویي ًبم است‪ .‬ایي فبیل ‪ zip‬حبٍی فبیلّبی هتٌی ‪ّ .class ًِ ٍ$ .java‬بی کبهپبیل‬
‫ضذُ‪ #‬است‪ً .‬بم فبیل ‪ zip‬را ‪ 90XYZABC.zip‬ثگذاریذ کِ ‪ 90XYZABC‬را ثب ضوبرُ داًطجَیی خَد جبیگشیي‬
‫کزدُایذ‪.‬‬
‫هتذ ‪ Main‬در ایي فبس ثبیذ در کالس ‪ razeJangal.console.ConsoleRunner‬ثبضذ‪ .‬ایي هتذ ًوًَِّبی‬
‫‪ Game ٍ ConsoleServer‬را هیسبسد ٍ ثبسی را آغبس هیکٌذ‪.‬‬
‫پیص اس ارسبل هغوئي ضَیذ کِ کذ ضوب ثِ درستی کبهپبیل ٍ اجزا هیضَد‪.‬‬
‫هَفق ثبضیذ‬
‫فبس اٍل پزٍصُ ثزًبهِ سبسی ضیءگزا‬
‫‪7‬‬