Project1.pdf

‫پروژه سری اول‬
‫درس برنامه نویسی شیءگرا‬
‫موعد ارسال‪ 71 :‬آذر ‪7319‬‬
‫ػلیشضا هظلَهی ‪ -‬کاهیاس اللَْسدی‬
‫پروژه سری اول درس برنامه نویسی شیءگرا‬
‫موعد ارسال‪ 71 :‬آذر ‪7831‬‬
‫نکات کلی‬
‫‪ ‬تشای اسسال تِ آدسس صیش هشاجؼِ کٌیذ‪:‬‬
‫‪http://ce.sharif.edu/~shaikhha/java901‬‬
‫دقر کٌیذ کِ تایذ فایلّای خَد سا داخل یک فایل ‪ zip‬تِ ًام ‪ STDID( STDID.zip‬ضواسُ داًطجَییساى‬
‫هیتاضذ‪ ).‬قشاس دّیذ (هثل ‪ ٍ )87123456.zip‬فایل ‪ zip‬سا اسسال کٌیذ‪( .‬دقر کٌیذ کِ تذٍى ایٌکِ داخل‬
‫ّیچ ضاخِ ای قشاس دّیذ‪ ،‬فایل ّای خَد سا ‪ zip‬کٌیذ‪ ).‬دقر کٌیذ کِ فایل اسسالی ضوا تایذ حاٍی یک فایل‬
‫‪ Main.java‬تاضذ کِ دسٍى ّیچ ضاخِای ًیسر ٍ ‪ main‬اجشایی تشًاهِ دس آى اسر‪ّ .‬وچٌیي تایذ یک فایل‬
‫‪ PDF‬تِ ًام ‪ STDID.pdf‬دس ایي فایل ‪ zip‬هَجَد تاضذ کِ حاٍی هسسٌذاذ خشٍطُ هی تاضذ‪ .‬ایي فایل تایذ‬
‫ضاهل خالصِی ػولکشد ّش یک اص ‪ّclass‬ای تشًاهِزاى‪ ،‬چگًَگی کاهدایل ٍ اجشا کشدى تشًاهِ‪ ،‬سًٍذ اجشای‬
‫تشًاهِ ٍ ایذُّای کلی تشًاهِزاى تاضذ‪ .‬دقر کٌیذ کِ فایل ‪ ٍ pdf‬فایل ‪ Main.java‬تایذ داخل ّیچ خَضِ ای‬
‫قشاس ًگیشًذ‪.‬‬
‫‪ ‬هَػذ اسسال ساػر ‪( 11:11‬ظْش) سٍص ‪ 11‬آرس ‪ 1831‬تَدُ ٍ تِ ّیچ ػٌَاى زوذیذ ًخَاّذ ضذ‪.‬‬
‫‪ ‬زأخیش زا ‪ 1‬ساػر‪ ،‬تِ اصای ّش ‪ 8‬دقیقِ هَجة کسش ضذى ‪ً %1‬وشُ‪ ،‬اص ‪ 1‬ساػر زا ‪ 42‬ساػر هَجة کسش ضذى‬
‫‪ً %42‬وشُ‪ ،‬اص ‪ 42‬ساػر زا ‪ 41‬ساػر‪ ،‬تِ اصای ّش ‪ 4‬دقیقِ هَجة کسش ضذى ‪ً %1‬وشُی دیگش ٍ تیي ‪ 41‬ساػر‬
‫زا ‪ 23‬ساػر تاػث کسش ضذى ‪ً %12‬وشُ هیضَد‪ .‬زأخیش تیطسش اص ‪ 23‬ساػر قاتل قثَل ًیسر‪.‬‬
‫‪ ‬قغغ تَدى ایٌسشًر خَاتگاُ‪ ،‬کٌذی خایگاُ ایٌسشًسی داًطکذُ‪ ،‬زوام ضذى کاسذ ایٌسشًر ٍ … ّیچکذام دلیل‬
‫‪ ‬سَاالذ خَد سا تا فشسسادى ایویل تِ آدسس ‪ [email protected]‬هغشح کٌیذ‪.‬‬
‫‪ ‬دس صَسذ اسسفادُ اص ّشگًَِ هٌثؼی‪ ،‬تایذ آى هٌثغ ّن دس فایل ‪ّ ٍ PDF‬ن دس خَد هکاى اسسفادُ (تِ صَسذ‬
‫کاهٌر) آٍسدُ ضَد‪ .‬دقر کٌیذ کِ حسی دس صَسزی کِ ایي هٌثغ سا اص یکی اص دٍسساًساى گشفسِ ایذ‪ ،‬اسن فشد تایذ‬
‫رکش ضَد‪.‬‬
‫‪ً ‬حَُی زحَیل حضَسی خشٍطُ تؼذا تِ اعالع ضوا خَاّذ سسیذ‪.‬‬
‫‪ ‬دقر کٌیذ کِ تایذ تسَاًیذ دس صهاى زحَیل ّش زغییشی دس کذّا اػوال کٌیذ‪.‬‬
‫خشٍطُ سشی اٍل دسس تشًاهِ ًَیسی ضیءگشا‬
‫هَجْی تشای زأخیش ًیسسٌذ‪ .‬تٌاتشایي خیطٌْاد هیضَد جَابّای خَد سا دس دانشکده اسسال کٌیذ‪.‬‬
‫‪1‬‬
‫مقدمه‬
‫دس ایي خشٍطُ ضوا تایذ هقذهاذ ًگاسش تاصی ‪ CE BOMBER‬کِ قشاس اسر دس خشٍطُ ّای تؼذ زکویل کٌیذ سا فشاّن‬
‫کٌیذ‪ .‬ضوا دس ایي هشحلِ تایذ یک ‪ map editor‬سا تشای ایي تاصی خیادُ ساصی کٌیذ‪ّ .‬ویٌغَس دس ایي هشحلِ تایذ‬
‫زَاًایی اًجام تاصی دس حذ اتسذایی دس ‪ console‬سا تِ کاستش تذّیذ‪ .‬ایي تاصی تِ ایي صَسذ اسر کِ یک تاصیکي داسین کِ‬
‫دس ًقطِ ای حشکر هیکٌذ‪ .‬ایي ًقطِ اص زؼذادی ‪ block‬زطکیل ضذُ ٍ ّش کذام خاصیر خاصی داسًذ‪ .‬دس ایي فاص ضوا‬
‫تایذ یک ‪ editor‬تشای ایي ًقطِ تٌَیسیذ ّوچٌیي تایذ اهکاى تاصی کشدى سا تِ چٌذ کاستش تِ صَسذ ًَتسی دس‬
‫‪ console‬تذّیذ‪.‬‬
‫قسمتهای اصلی‬
‫دس ایي خشٍطُ ضوا تایذ چٌذ کالس سا خیادُ ساصی کٌیذ کِ قسور اٍل آًْا کالس ‪ Player‬اسر کِ داسای هسذ ّای صیش‬
‫اسر‪:‬‬
‫;)‪public Player(int number,String name‬‬
‫;)(‪public String toString‬‬
‫;)(‪public String getName‬‬
‫;)(‪public int getNumber‬‬
‫زاتغ اٍل کِ ساصًذُ ی ‪ Player‬اسر ٍ ضواسُ ی تاصیکي ٍ ًام آى سا هیگیشد‪.‬‬
‫زاتغ دٍم هطخصاذ تاصیکي سا چاج هیکٌذ کِ هثال اگش تاصیکي ضواسُ ‪ ٍ 8‬تِ ًام ‪ human‬تاضذ حاصل تِ صَسذ صیش‬
‫اسر‪:‬‬
‫خشٍطُ سشی اٍل دسس تشًاهِ ًَیسی ضیءگشا‬
‫‪4‬‬
‫‪Player Number 3, human‬‬
‫زاتغ سَم ٍ چْاسم ّن کِ هطخصاذ تاصیکي سا تشهیگشداًٌذ‪.‬‬
‫قسور دٍم ایٌسر کِ ضوا تایذ کالس ‪ Block‬سا خیادُ ساصی کٌیذ‪ .‬ایي کالس یک کالس ‪ abstract‬اسر کِ تذیي‬
‫صَسذ اسر‪:‬‬
‫{‪abstract class Block‬‬
‫;)(‪public abstract String toString‬‬
‫;)(‪public abstract int getRow‬‬
‫;)(‪public abstract int getColumn‬‬
‫;)(‪public abstract char getCharacter‬‬
‫}‬
‫کِ زاتغ اٍل اگش هثال تِ سٍی ‪ Wall‬صذا صدُ ضَد کِ دس سغش دٍم ٍ سسَى سَم اسر سضسِ ی تِ ضکل صیش سا‬
‫تشهیگشداًذ‪:‬‬
‫)‪Wall at (3,2‬‬
‫ٍ زاتغ دٍم ٍ سَم هَقؼیر ‪ Block‬سا هطخص هیکٌذ‪( .‬دقر کٌیذ‪ ،‬زواهی سدیف ّا ٍ سسًَْای تصَسذ خایِ ‪ 2‬یا ‪zero-‬‬
‫‪ based‬زؼشیف هیضًَذ‪).‬‬
‫ٍ زاتغ چْاسم حشف اٍل کاساکسش کالس سا تشهیگشداًذ‪.‬‬
‫حال ‪ّ Block‬ایی کِ دس ًقطِ ٍجَد داسًذ‪( :‬ایٌْا دس ٍاقغ کالسْایی ّسسٌذ کِ تچۀ کالس ‪ Block‬هیتاضٌذ)‬
‫‪ : Ground‬ایي ‪ block‬هؼوَلی اسر ٍ خاصیر خاصی ًذاسد‪.‬‬
‫‪ : Wall‬ایي ‪ block‬دیَاس اسر ٍ ّیچ تاصیکٌی حق ٍسٍد تِ آى سا ًذاسد‪.‬‬
‫‪ : Random‬ایي ‪ block‬تِ صَسذ زصادفی دس ٌّگام ضشٍع تاصی یؼٌی صهاًی کِ کاستش ٍاسد هحیظ اجشای تاصی ضذ تِ‬
‫یکی اص تلَک ّای دیگش هیضَد‪.‬‬
‫‪ : Bomb‬ایي ‪ block‬خاًِ ی توة اسر‪ .‬اگش تاصیکٌی ٍاسد آى ضَد تاصی سا هیثاصد‪.‬‬
‫‪ : IceTile‬ایي ‪ block‬صهیي یخی اسر اگش تاصیکٌی تِ آى ٍاسد ضَد دس ّواى ساسسا یک خاًِ سش هیخَسد‪ .‬تاصیکٌی کِ‬
‫ٍاسد ایي خاًِ ضَد تایذ دس ّواى ًَتر یک خاًِ ی دیگش تِ جلَ تشٍد‪ .‬زَجِ کٌیذ کِ هوکي اسر چٌذ خاًِ ی ‪IceTile‬‬
‫‪ : Finish‬ایي ‪ً block‬قغِ ی خایاًی تاصی اسر‪ .‬اگش تاصیکٌی ٍاسد آى ضَد تاصی سا هیثشد‪.‬‬
‫ضوا تایذ یک ‪ map editor‬تشای ایي تاصی تٌَیسیذ تِ ایي صَسذ کِ کالسی تِ ًام ‪ Map‬داضسِ تاضیذ کِ داسای‬
‫زَاتغ صیش تاضذ‪:‬‬
‫;)‪public boolean edit(int col, int row,Block block‬‬
‫;)(‪public String toString‬‬
‫;)(‪public int getRows‬‬
‫خشٍطُ سشی اٍل دسس تشًاهِ ًَیسی ضیءگشا‬
‫خطر سش ّن تاضٌذ‪.‬‬
‫‪8‬‬
‫;)(‪public int getColumn‬‬
‫;)‪public Map(int col, int row,int number‬‬
‫;)‪public boolean setStart(int col, int row, int pNumber‬‬
‫کِ زاتغ اٍل یک ‪ً block‬قطِ سا زغییش هیذّذ تِ ‪ Block‬خاس دادُ ضذُ ٍ اگش هَفقیر آهیض تَد ‪ true‬تشهیگشداًذ‪.‬‬
‫زاتغ دٍم هطخصاذ ًقطِ سا تِ صَسذ یک سضسِ تشهیگشداًذ تِ ایي صَسذ کِ دس تیي ّش دٍ سسَى یک ‪ tab‬خَسدُ ضَد‬
‫ٍ تیي ّش دٍ سغش دقیقا یک ‪ enter‬خَسدُ تاضذ‪ .‬تشای ّش خاًِ ّن ّواى ‪ char‬ای کِ تا آى هقذاس دّی هیطَد تایذ‬
‫چاج ضَد‪ .‬زَجِ کٌیذ کِ اگش آى خاًِ خاًِ ی ضشٍع تاصیکي ‪ n‬ام تَد تایذ ػذد ‪ n‬چاج ضَد‪.‬‬
‫زاتغ سَم ٍ چْاسم زؼذاد سغش ّا ٍ سسَى ّای ًقطِ سا تشهیگشداًذ‪.‬‬
‫زاتغ خٌجن ّن کِ ساصًذُ ی کالس اسر کِ زؼذاد سغش ٍ سسَى ٍ زؼذاد تاصیکٌاى سا هیگیشد‪ .‬دس ٌّگام ساخسي ‪map‬‬
‫دقر کٌیذ کِ ّوِ ی ‪ّ Block‬ا تِ صَسذ ‪ default‬تِ ‪ Ground‬هقذاس دّی هیطًَذ‪.‬‬
‫زاتغ آخش ّن ًقغِ ی ضشٍع تاصیکي ‪ pNumber‬سا ‪ set‬هیکٌذ ٍ دس صَسذ اًجام ‪ true‬تشهیگشداًذ‪ .‬تایذ دس ًقطِ ًگِ‬
‫داسیذ کِ ًقاط ضشٍع تاصیکٌاى کجاسر‪.‬‬
‫تشًاهِ ی ضوا تایذ تسَاًذ اص هحیظ ‪ edit‬خاسج ضَد ٍ تاصی سا اجشا کٌذ تشای ایي کاس یک کالس تِ ًام ‪ Game‬تٌَیسیذ‬
‫کِ دسٍى خَد ضیء ای اص ‪ Map‬داضسِ تاضذ ٍ داسای زَاتغ صیش تاضذ‪:‬‬
‫;)‪public int move(char move‬‬
‫;)‪public Game(Player[] players‬‬
‫;)( ‪public Player getPlayer‬‬
‫خشٍطُ سشی اٍل دسس تشًاهِ ًَیسی ضیءگشا‬
‫‪2‬‬
‫;)(‪public Map getMap‬‬
‫دس زاتغ اٍل تایذ تا گشفسي یک کاساکسش کِ یکی اص ‪ u,d,l,r‬اسر کِ ساسر ٍ چح ٍ خاییي ٍ تاال ّسسٌذ ٍ تا زَجِ تِ ایي‬
‫کِ االى ًَتر کذام تاصیکي اسر زالش تشای حشکر کٌذ ٍ دس صَسزی کِ ایي کاس اهکاى خزیش ًثَد ػذد ‪ ٍ 2‬اگش تا هَفقیر‬
‫اًجام ضذ ػذد ‪ ٍ 1‬اگش دس ایي حشکر تاصیکي تاخر ػذد ‪ ٍ 4‬اگش تاصی سا تشد ػذد ‪ 8‬سا تشگشداًذ‪.‬‬
‫زاتغ دٍم ّن ساصًذُ ی ایي کالس اسر کِ آسایِ ای اص تاصیکٌاى سا تِ ػٌَاى ٍسٍدی هیگیشد‪.‬‬
‫زاتغ سَم تاصیکٌی کِ دس حال حاضش ًَتسص اسر سا تشهیگشداًذ‪.‬‬
‫دس صَسزی کِ ّش کذام اص تاصیکي ّا صٍد زش تِ ًقغِ ی خایاى تشسذ تشًذُ ی تاصی اسر‪.‬‬
‫نحوه ی اجرای برنامه‬
‫زَجِ کٌیذ کِ ایي خشٍطُ ًیض تا زصحیح خَدکاس چک خَاّذ ضذ‪ .‬تِ ایي صَسذ کِ تشًاهِ ی ضوا زحر کٌسَل تایذ تسَاًذ‬
‫اجشا ضَد‪.‬‬
‫تِ ایي هٌظَس‪ ،‬تایذ کالس ‪Main‬ی داضسِ تاضیذ کِ زاتغ ‪ main‬ضوا دسٍى آى قشاس داسد‪.‬‬
‫تشًاهِ اص دٍ هحیظ ساخسِ ضذُ اسر کِ یکی هحیظ ‪ edit‬کشدى ‪ map‬اسر ٍ دیگشی هحیظ اجشای تاصی‪ .‬کِ دس ّش‬
‫هحیغی کاستش تِ کوک دسسَسازی تا تشًاهِ ساتغِ تشقشاس خَاّذ کشد‪:‬‬
‫هحیظ ‪ map editor‬داسای دسسَساذ صیش اسر‪:‬‬
‫دسسَس ‪:edit‬‬
‫‪edit #row #column character‬‬
‫کِ ‪ً Block‬قغِ ی دادُ ضذُ سا تِ ‪ Block‬ای کِ حشف ضشٍع آى دادُ ضذُ ػَض هیکٌذ‪ .‬هثال‪:‬‬
‫‪edit 3 4 W‬‬
‫کِ ‪ Block‬دس سغش ‪ 8‬ام ٍ سسَى ‪ 2‬ام اص ًَع ‪ Wall‬هیطَد‪.‬‬
‫دسسَس ‪:print‬‬
‫‪print‬‬
‫کِ حاصل ‪ً toString‬قطِ سا چاج هیکٌذ‪.‬‬
‫‪setStart #row #column #number‬‬
‫کِ هکاى ضشٍع تاصیکي ضواسُ ی ‪ #number‬سا قشاس هیذّذ‪ .‬هثال‪:‬‬
‫‪setStart 3 4 2‬‬
‫کِ هکاى ضشٍع تاصیکي ‪ 4‬تشاتش خاًِ ی سغش ‪ 8‬ام ٍ سسَى ‪ 2‬ام خَاّذ ضذ‪.‬‬
‫خشٍطُ سشی اٍل دسس تشًاهِ ًَیسی ضیءگشا‬
‫دسسَس ‪:setStart‬‬
‫‪1‬‬
‫هحیظ تاصی داسای دسسَساذ صیش اسر‪:‬‬
‫‪move character‬‬
‫کِ تاصیکٌی کِ دس حال حاضش ًَتر اٍ اسر سا تِ سور دادُ ضذُ حشکر هیذّذ هثال‪:‬‬
‫‪move u‬‬
‫کِ تاصیکٌی کِ دس حال حاضش ًَتر اٍ اسر سا زالش هیکٌذ کِ تِ سور تاال حشکر کٌذ‪.‬‬
‫دس صَسزی کِ خاًِ ای کِ هیخَاّذ تِ آى تشٍد ‪ Wall‬تَد تایذ ایي سضسِ سا چاج کٌذ‪.‬‬
‫‪No Move.‬‬
‫دس صَسزی کِ خاًِ ای کِ هیخَاّذ تِ آى تشٍد توة تَد تایذ تاصیکي اص لیسر تاصیکٌاى حزف ضَد (دیگش ًَتسی تِ اٍ دادُ‬
‫ًویطَد) ٍ سضسِ ی صیش چاج هیطَد‪.‬‬
‫‪Player (player name) loses.‬‬
‫کِ تِ جای آى خشاًسض تایذ ًام تاصیکي چاج ضَد‪ .‬هثال‪:‬‬
‫‪Player Alireza loses.‬‬
‫دس صَسزی کِ تاصیکٌی کِ تاخر تاصیکي آخش تَد تایذ ػالٍُ تش خظ تاال یک خظ دیگش چاج ضَد ٍ اجشای تشًاهِ تِ خایاى‬
‫تشسذ‪:‬‬
‫‪All Players left the game. Game finished.‬‬
‫دس صَسزی کِ خاًِ ای کِ هیخَاّذ تِ آى تشٍد ًقغِ ی خایاى تَد تایذ سضسِ ی صیش چاج ضَد ٍ اجشای تشًاهِ تِ خایاى‬
‫تشسذ‪.‬‬
‫خشٍطُ سشی اٍل دسس تشًاهِ ًَیسی ضیءگشا‬
‫‪6‬‬
‫‪Player (player name) wins.‬‬
‫زسر کیس ّایی کِ تِ ضوا دادُ هیطَد تذیي گًَِ اسر کِ دس خظ اٍل ٍ دٍم زؼذاد سغش ٍ سسَى دادُ خَاّذ ضذ‬ ٍ دس‬
‫خظ تؼذی زؼذاد تاصیکي ٍ سدس تالفاصلِ دس هحیظ ‪ٍ edit‬اسد هیطَین ٍ تا دادى دسسَس ‪ Game‬تایذ ٍاسد هحیظ تاصی‬
‫ضَیذ کِ ایي دسسَس تذیي صَسذ اسر‪:‬‬
‫… )‪Game (player name_1) (player name_2) (player name_3‬‬
‫کِ خس اص آى ًام تاصیکٌاى تِ زشزیة ضواسُ آهذُ اسر‪.‬‬
‫هَفق تاضیذ‬