پروژه سری اول درس برنامه نویسی شیءگرا موعد ارسال 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 کِ خس اص آى ًام تاصیکٌاى تِ زشزیة ضواسُ آهذُ اسر. هَفق تاضیذ
© Copyright 2026 Paperzz