پروژه سری اول درس برنامه نویسی شیءگرا موعدارسال1390/9/4 : محمد اصغری ثب تـکش اص ػلیشضب هظلَهی پروژه سری اول درس برنامه نویسی شیءگرا موعد ارسال0991/9/4 : نکات کلی ثشای اسػبل ثِ آدسع صیش هشاجؼِ کٌیذ: http://arsh.co.ir/java901/ هَػذ اسػبل ػبػت 95:39تبسیخ1591/9/4ثَدُ ٍ ثِ ّیچ ػٌَاى توذیذ ًخَاّذ ؿذ. تأخیش تب 1ػبػت ،ثِ اصای ّش 5دقیقِ هَجت کؼش ؿذى ً "1وشُ ،اص 1ػبػت تب 94ػبػت هَجت کؼش ؿذى ً "91وشُ ،اص 94ػبػت تب 93ػبػت ،ثِ اصای ّش 9دقیقِ هَجت کؼش ؿذى ً "1وشُی دیگش ٍ ثیي 93ػبػت تب 48ػبػت ثبػث کؼش ؿذى ً "31وشُ هیؿَد .تأخیش ثیـتش اص 48ػبػت قبثل قجَل ًیؼت. قغغ ثَدى ایٌتشًت خَاثگبُ ،کٌذی پبیگبُ ایٌتشًتی داًـکذُ ،توبم ؿذى کبست ایٌتشًت ٍ … ّیچکذام دلیل هَجْی ثشای تأخیش ًیؼتٌذ .ثٌبثشایي پیـٌْبد هیؿَد جَاةّبی خَد سا دس دانشکدهاسػبل کٌیذ. ػَاالت خَد سا ثب فشػتبدى ایویل ثِ آدسع javaTA911@GMail.comیب دس گشٍُ دسع هغشح کٌیذ. ً حَُی تحَیل حضَسی پشٍطُ ثؼذا ثِ اعالع ؿوب خَاّذ سػیذ. دقت کٌیذ کِ ثبیذ ثتَاًیذ دس صهبى تحَیل ّش تغییشی دس کذّب اػوبل کٌیذ. پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا 1 مقدمه ػالم ،اهیذٍاسم تب ایٌجب اص دسع جبٍا لزت ثشدُ ثبؿیذ ٍ آهبدگی کبفی ثشای ؿشٍع پشٍطُ ّب سا ثِ دػت آٍسدُ ثبؿیذ .دس ایي تشم قصذ داسین ثب ّن یک ثبصی ػبدُ ٍ خَة سا کِ ثب تبع اًجبم هی ؿَد پیبدُ ػبصی کٌین .ایي ثبصی ؿبهل یک صفحِ Nدس Nاػت کِ اص تؼذادی خبًِ ی تلِ ٍ یب قذست تـکیل ؿذُ اػت ٍ ثِ کوک تبع ثبصیکي ّب دس آى جلَ هی سًٍذّ .ذف سػیذى ثِ خبًِ ی آخش قجل اص سقجبی دیگش اػت .دس فبص اٍل پشٍطُ ّوبًغَس کِ دس اداهِ ثِ عَس کبهل تَضیح دادُ هی ؿَد ؿوب یک حبلت ػبدُ اص ثبصی سا دس کٌؼَل اجشا خَاّیذ کشدّ .ذف اصلی اص ایي فبص آصهَدى هْبست ّبی اٍلیِ ؿیئ گشایی ٍ تَاًبیی ؿوب دس هذل کشدى ًیبصهٌذی ّبی ػبدُ هی ثبؿذ. قسمتهای اصلی دس اثتذا ّوِ ی ثبصیکي ّب ثیشٍى اص صهیي ثبصی قشاس داسًذ ٍ ثِ تشتیت تبع هی اًذاصًذّ .ش ًفش کِ ػذد 6ثیبٍسد هی تَاًذ ٍاسد صهیي ثبصی ؿَد .دس حبلت کلی ًیض ثؼذ اص ّش ػذد 6ثبصیکي هی تَاًذ یک تبع دیگش ثیٌذاصد .ػپغ ثبصی اداهِ پیذا هی کٌذ تب ایٌکِ اٍلیي ًفش ثِ خبًِ ی آخش ثشػذ .دقت کٌیذ کِ ّیچ ٍقت ًجبیذ دس خبًِ ی آخش تلِ یب قذستی قشاس داؿتِ ثبؿذ. زمین بازی ّوبًغَس کِ گفتِ ؿذ صهیي ثبصی هشثؼی Nدس Nاػت$ .حذاکثش هقذاس 02 ،Nاػت #خبًِ ّبی ایي صهیي یکی اص ػِ حبلت صیش سا داسًذ. خبًِ هؼوَلی :ایي خبًِ ّب ّیچ خغشی ًذاسًذ ٍ ثبصیکٌبى هی تَاًٌذ دس آًْب تب ًَثت ثؼذی اػتشاحت کٌٌذ. تٌْب خغشی کِ دس ایي خبًِ ّب ٍجَد داسد ٍاسد ؿذى یک ثبصیکي دیگش ثِ آى هی ثبؿذ کِ ثبػث ثیشٍى پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا 9 سفتي ثبصیکي اٍل اص صهیي هی ؿَد. تلِ :خبًِ ّبی تلِ اصَال خبًِ ّبی خغشًبکی ّؼتٌذ ٍ ،ثؼذ اص ّش ثبس اثش کشدى ،آى تلِ اص ثیي هی سٍد ٍ آى خبًِ ثِ یک خبًِ هؼوَلی تجذیل هی ؿَد .تلِ ّب ثِ ؿشح صیش هی ثبؿٌذ: تلِ ی ًبثَدگش :اگش ثبصیکٌی ٍاسد ایي تلِ ؿَد ،آى ثبصیکي اص صهیي خبسج هی ؿَد ٍ ثبیذ اص ًَ ثبصی سا ؿشٍع کٌذ تلِ کٌذ :اگش ثبصیکٌی ٍاسد ایي تلِ ؿَد ثشای دٍ حشکت ثؼذی اؽ 02دسصذ کٌذ خَاّذ ؿذ .هثال اگش تبع 4یب 0ثیبٍسد فقظ 0خبًِ ثِ جلَ خَاّذ سفت. تلِ غیش فؼبل گش :اگش ثبصیکٌی ٍاسد ایي تلِ ؿَد .دس ًَثت ثؼذی قبدس ثِ ثبصی ًخَاّذ ثَد .تَجِ کٌیذ کِ هثال اگش ثبصیکي ثب تبع ٍ 6اسد ایي خبًِ ؿَد دیگش ًویتَاًذ حشکت کٌذٍ ،لی اص حشکت ثؼذی هیتَاًذ ثِ حشکت خَد اداهِ دّذ$ .یؼٌی فقظ جبیضُ اؽ اص ثیي هیشٍدٍ #لی اگش ثب ٍ 6اسد ًـذُ ثَد دس ًَثت ثؼذی قبدس ثِ ثبصی کشدى ًیؼت ٍ یک ًَثت اص اٍ گشفتِ هیـَد. قذست :قذس ت ًیض هبًٌذ تلِ فقظ یک ثبس هصشف هی ؿَد ٍ اص ثیي هی سٍد .لیؼت قذست ّب دس صیش آهذُ اػت. قذست فشػتبدى ثِ ػقت :ثؼذ اص ثِ دػت آٍسدى ایي قذست ثبصیکي حق داسد یک ثبصیکي دلخَاُ سا ثِ ػقت ُّل ثذّذ. قذست فشػتبدى ثِ ًضدیکتشیي تلِ :ثؼذ اص ثِ دػت آٍسدى ایي قذست ثبصیکي هی تَاًذ یک ثبصیکي دیگش سا اًتخبة کٌذ ٍ ثبصیکي اًتخبة ؿذُ ثِ ًضدیک تشیي تلِ فشػتبدُ هی ؿَد. الصم ثِ رکش اػت یک ثبصیکي ّیچ ٍقت خَدؽ سا ّل ًخَاّذ داد یب ثِ تلِ ای ًخَاّذ فشػتبد ،یؼٌی آى قذس ػول تبع اًذاختي سا تکشاس هی کٌیذ کِ ػذدی غیش آى ثبصیکي ثیبیذ! پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا 5 ورودی برنامه ًکتِ ای کِ دس هَسد تؼت آًالیي ایي ثشًبهِ ٍجَد داسد هؼئلِ تبع اػت ،ثٌبثش ایي تبع ّب اص ٍسٍدی ثِ ؿوب دادُ خَاٌّذ ؿذ ٍ ؿوب ثِ جبی اػتفبدُ اص تَاثغ تَلیذ اػذاد تصبدفی جبٍا اص ٍسٍدی اػذاد تصبدفی سا ثخَاًیذ. ٍسٍدی ثشًبهِ دس چٌذیي خظ اػت کِ ثِ ؿکل کلی صیش اػت: خظ اٍل تؼذاد تبع ّبی ٍسٍدی ٍ خظ ثؼذ ثِ ّوبى تؼذاد تبع کِ اػذاد ثیي 6 ٍ 1 ّؼتٌذ .دس خظ ػَم ٍ چْبسم دٍثبسُ تؼذاد تبع ّبی ٍسٍدی ٍ ثِ ّوبى تؼذاد ػذد ایي ثبس ثیي ٍ 1تؼذاد ثبصیکي ّب ّؼتٌذ .ایي تبع ثشای قذست ّب کبسثشد داسد .ػپغ Nکِ اًذاصُ صفحِ ثبصی اػت ٍ قجال آى سا تؼشیف کشدُ این .ثؼذ Mکِ تؼذاد ثبصیکي ّبػت هی آیذ ٍ دس خظ ثؼذی Mسؿتِ کِ ًبم ثبصیکي ّبػت آهذُ اػت .دقت کٌیذ کِ ثبصیکي ّب ثِ ّوبى تشتیت کِ دس ٍسٍدی ًبم ثشدُ ؿذُ اًذ ثبصی خَاٌّذ کشد .ػپغ ػذد Pقشاس داسد کِ هجوَع تؼذاد تلِ ّب ٍ قذست ّبػت ٍ دس ّش کذام اص Pخظ ثؼذی ًیض ػِ ػذد آهذُ اػت کِ ثِ تشتیت ؿوبسُ ػغش ٍ ػتَى ٍ ًَع آى خبًِ هی ثبؿذ .اًَاع خبًِ ؿبهل $TRتلِ ًبثَدگش$TS ،#تلِ کٌذ$TD ،#تلِ غیش فؼبل گش$PB ،#قذست فشػتبدى ثِ ػقتٍ # $PNقذست فشػتبدى ثِ ًضدیک تشیي خبًِ #هی ثبؿذ. T A1 A2 …. At S B1 B2 …. Bs N M S1 S2 …. Sm P X 1 Y 1 Z1 ….. X p Y p Zp یک ًوًَِ اص ٍسٍدی ثِ صَست صیش اػت: پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا 4 14 13623164131662 3 112 4 2 Me You 5 2 3 TS 3 3 PB 4 3 TR 1 2 TD 1 3 PN ًکتِ ّبیی کِ ثبیذ دس ًظش ثگیشیذ ثِ ؿشح صیش اػت: اػذاد Y ٍ Xاص 1تب ّ Nؼتٌذ. ّ یچ تلِ یب قذستی دس خبًِ آخش قشاس ًذاسد اگش ثِ کوک قذست ثبصیکي Aثبصیکي Bسا ثِ خبًِ ای فشػتبد کِ ثبصیکي Cدس آى قشاس داسد ،ثبصیکي Cاص ثبصی خبسج هی ؿَد اگش ًضدیکتشیي تلِ اص دٍ ػوت ثبصیکي ثِ یک فبصلِ ثبؿذ اٍلَیت ثب تلِ ػقت اػت اگش ّیچ ًضدیکتشیي تلِ ای ٍجَد ًذاؿتِ ثبؿذّ .یچ اتفبقی ثشای ثبصیکي ًوی افتذ ٍ چیضی ّن چبح ًوی ؿَد ًَثت اضبفی ثؼذ اص ّش تبع 6فشاهَؽ ًـَد. نحوه ی پیاده سازی ثب تَجِ ثِ ایي کِ پشٍطُ ی اٍ ل اػت ،هقذاسی تَضیح ساجغ ثِ ًَع پیبدُ ػبصی ٍ چگًَگی گشفتي ّ Objectب دادُ هیـَد .دس پشٍطُ ّبی ثؼذی ایي کِ چگًَِ عشاحی ٍ پیبدُ ػبصی کٌیذ ثش ػْذُ ی خَد ؿوبػت. کالع ّبیی کِ پیـٌْبد هیـَد گشفتِ ؿًَذ ثِ ؿشح صیش اػت: کالع :BoardCell ایي کالع ثِ اصای ّش کذام اص خبًِ ّبی صفحِ ی ثبصی اػت؛ پغ ثِ تؼذاد N*Nتب اص ایي کالع ثبیذ instanceگشفتِ ؿَد .ثبیذ هـخصبت هشثَط ثِ ّش خبًِ ای دس ایي کالع قبثل دػتیبثی ٍ یب تغییش ثبؿذ. کالع :Board ایي کالع ثِ اصای یک صفحِ ی ثبصی اػت ،پغ ثبیذ دس آى N*Nتب اص ّ BoardCellب ثبؿذّ .ویي عَس کبسّبی هشثَط ثِ صفحِ ی ثبصی ثبیذ دس ایي کالع اًجبم ؿَد .هثال ثبیذ یک تبثغ داؿتِ ثبؿذ کِ ثب گشفتي ؿوبسُ ی ثبصیکي ٍ تبػی کِ آٍسدُ اػت حشکت هشثَعِ سا سٍی صفحِ اًجبم دّذ. دس ایي کالع ثبیذ اعالػبت هشثَط ثِ تبع ّب ثبؿذ ،ایي کِ چِ تبع ّبیی اص ٍسٍدی آهذُ ٍ االى ًَثت اجشای کذام تبع اػت ٍ ... کالع :Player ایي کالع ثبیذ هـخصبت ٍ هکبى حضَس ٍ ّویٌغَس قذست ّب ٍ یب تلِ ّبیی کِ ثِ ایي ثبصیکي ثشخَسد کشدُ اػت سا جَسی دس آى پیبدُ ػبصی کٌیذ تب هـخص ثبؿذ کِ ایي ثبصیکي ثبیذ چگًَِ حشکت کٌذ .ایي کالع ثبیذ کبس ّبی هشثَط ثِ ثبصیکي سا ًیض اًجبم دّذ هثال ثِ سٍص سػبًی ٍیظگی ّبی ثبصیکي. پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا کالع :DicePool 3 کالع :PlayerList ایي کالع یک لیؼت اص ثبصیکي ّب سا دس خَد ًگْذاسی هیکٌذ ٍ ّویٌغَس ًگِ هیذاسد کِ ًَثت کذام یک اص ثبصیکي ّب اػت .اص ایي کالع هیتَاى ثِ ػٌَاى ایي کِ ّش ثبصیکي دس کذام خبًِ قشاس داسد ٍ دس چِ ٍضؼیتی اػت کوک گشفتّ ،ویٌغَس هیتَاى تـخیص داد کِ آیب ثبصیکٌی ثبصی سا ثشدُ اػت یب خیش. کالع :Game ایي کالع کالع اصلی پشٍطُ اػت کِ دس آى ثبیذ کبس ّبی کلی هشثَط ثِ ثبصی سا اًجبم دّیذ ،پغ ایي کالع داسای یک یب چٌذ ًوًَِ اص کالع ٍ DicePoolیک ًوًَِ اص کالع ٍ Boardیک ًوًَِ اص کالع PlayerListثبؿذ. ّوچٌیي حلقِ ی اصلی اجشای ثبصی دس ایي کالع اػت. کالع :Main ایي کالع فقظ ًقغِ ی ؿشٍع اجشای ثشًبهِ ی پشٍطُ اػت ٍ خبصیت دیگشی ًذاسد. پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا 6 خروجی برنامه هَاسدی کِ ثبیذ دس خشٍجی چبح ؿًَذ ثِ ؿشح صیش اػت: ٍ قتی کؼی ثشًذُ هی ؿَد ثبیذ پیبم صیش چبح ؿَد کِ اصَال آخشیي پیبم ثبصی اػت ،دقت کٌیذ کِ ثبصی دس ّوِ پیبم ّب ثیي دٍ ثبصیکي You ٍ Meهی ثبؿذ: ![Me] has won the game ٍ قتی کؼی تبع هی اًذاصد: ![You] dice = 3 ٍ قتی کؼی ثالیی ػشؽ هی آیذ: ![Me] is reset ![Me] is slowed ![Me] is disabled ٍ قتی کؼی قذستی سا اػتفبدُ هی کٌذ: ![Me] send You back by 3 ![Me] send You to nearest trap at 50 ٍ قتی کؼی ثب ٍسٍد ثِ خبًِ ای کغ دیگشی سا هی کـذ ![Me] killed You ٍ قتی ًَثت کؼی هی ؿَد: ![Me] ‘s turn to play ![Me] moved to 50 ثِ هحض ٍاسد ؿذى ثبصیکٌی ثِ یک خبًِ: [Me] @ X! (X = Normal place/ Slow trap/ Reset trap/ Disable trap/ SendBack powerup/ )SendToNearest powerup ثؼذ اص پبیبى کبس ّش ثبصیکي ًیض ثبیذ تختِ ی ثبصی چبح ؿَد .هٌظَس اص پبیبى کبس یؼٌی ثؼذ اص آًکِ تؼذادی 6یب غیشُ آٍسد ٍ قجل اص ایٌکِ ًفش ثؼذی تبع ثیبًذاصد .تختِ ثِ ؿکل صیش چبح هی ؿَد. پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا ٍ قتی کؼی هی خَاّذ ٍاسد خبًِ ای ؿَد: 7 تختِ ثِ صَست یک ػشی ًوبد دٍ حشفی هبًٌذ ؿکل صیش چبح خَاّذ ؿذ کِ __ ًوبیبًگش خبًِ هؼوَلی ٍ 0 ػالهت گفتِ ؿذُ ثشای تلِ ّب ٍ قذست ّب ًوبد ّش یک اص آًْب ٍ ؿوبسُ ّب ّن ًوبد ثبصیکي ّب خَاٌّذ ثَد .ضوٌب ّیچ تؼتی ثیؾ اص 99ثبصیکي ًخَاّذ داؿت. 01 02 __ __ __ __ PB __ TD TS __ TR __ __ __ __ ًکتِ ای کِ ثبیذ حتوب تَجِ کٌیذ ایي اػت کِ تختِ اص ًظش ؿوبسُ خبًِ ثبیذ ثِ صَست هبسپیچ چبح ؿَد ،یؼٌی ثِ صَست صیش: 4 3 2 1 5 6 7 8 12 11 10 9 13 14 15 16 هثال دس ؿکل ثبال ثبصیکي اٍل دس خبًِ ٍ 4ثبصیکي دٍم دس خبًِ 0قشاس داسد ٍ .تلِ کٌذ کٌٌذُ ًیض دس خبًِ 7قشاس گشفتِ اػت. ًکبتی کِ دس هَسد خشٍجی ثبیذ سػبیت ؿَد ثِ ؿشح صیش اػت: ّ وِ ی ؿوبسُ خبًِ ّب دس چبح اص یک ؿشٍع هی ؿًَذ ثؼذ اص ّش 6دٍثبسُ ػجبست ! [Me] ‘s turn to playچبح ؿَد اگش خبًِ ی ثؼذی یک ًفش خبسج اص صفحِ اػت $قجل اص دس ًظش گشفتي تلِ ٍ قذست #ػجبست [Me] moved to !ً 50جبیذ چبح ؿَد پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا 8 تب چٌذ سٍص آیٌذُ یک ًوًَِ اص ٍسٍدی ٍ خشٍجی دسػت ثِ گشٍُ فشػتبدُ خَاّذ ؿذ تب دسػتی ثشًبهِ ّبی خَد سا ثب آى ثؼٌجیذ! نمره ی اضافی جبٍاداکً 11 :وشُ تویض ٍ خَاًب ثَدى کذ ٍ ػذم ٍجَد کذ تکشاسیً 11 :وشُ نمره بندی ًوشُ قضبٍت آًالیي60 : ًوشُ تحَیل حضَسی40 : تحَیل حضَسی ؿبهل هَاسدی هبًٌذ تؼلظ ثش کذ ٍ اػتفبدُ اص هفبّین ً ،Object orientedبم گزاسی صحیحً ،حَُ ی کذ صًی صحیح ،سػبیت ، visibilityػذم اػتفبدُ ی ًبدسػت اص فیلذ ّبی ... ٍ static هیثبؿذ. نحوه قضاوت ؿوب ثبیذ یک فبیل ثِ ًبم Main.javaؿبهل ّوِ کالع ّب اص جولِ کالع Mainکِ دس آى تبثغ Mainقشاس داسد سا دس ػبیت آپلَد کٌیذ .اص عشفی ثشای ساحتی ؿوب دس ٌّگبم کذ صدى ٍ تویض ٍ هـخص ثَدى کالع ّب دس تحَیل حضَسی ثبیذ کالع ّب دس فبیل ّبی جذا ثبؿٌذ! ثٌبثش ایي ؿوب دس آخش ثبیذ اثتذا فبیلْبی پشٍطُ سا دس یک فبیل zipثِ ًبم ؿوبسُ داًـجَیی خَد دس Judgeآپلَد کٌیذّ .ذف اص ایي کبس داًلَد آى ثشای تحَیل حضَسی هی ثبؿذً .وشُ ی ؿوب ثؼذ اص ایي کبس صفش خَاّذ ؿذ ثٌبثش ایي ػپغ ّوِ سا دس یک فبیل ثب ًبم Main.javaدس Judgeآپلَد کٌیذ تب ًوشُ ی قضبٍت آًالیي ؿوب ًیض ثجت ؿَد .لغفب ایي تشتیت سا سػبیت کٌیذ .ثشای ایٌکِ ّش ثبس فبیل ّبی خَد سا ػش ّن ٍ جذا ًکٌیذ ،ثشًبهِ ای ثِ ّوشاُ ایي پشٍطُ ثِ ؿوب دادُ هی ؿَد کِ ایي کبس سا ثشای ؿوب اًجبم هی دّذ .الصم ثِ رکش اػت ثشای هَفق ٍ پیشٍص ثبؿیذ هحوذ اصغشی پشٍطُ ػشی اٍل دسع ثشًبهِ ًَیؼی ؿیءگشا اػتفبدُ اص ایي ثشًبهِ ّوِ ی کالع ّبی ؿوب ثبیذ دس default packageثبؿٌذ. 9
© Copyright 2025 Paperzz