پروژه سری اول درس برنامه نویسی شیءگرا موعد ارسال0991/2/9 : علیرضا مظلومی تا زـىش اص ػاحل ؿشیفی همذم -هْؼا لشتاًی -ؿادی ػثذاللْیاى پروژه سری اول درس برنامه نویسی شیءگرا موعد ارسال9/2/1390 : نکات کلی تشای اسػال تِ آدسع صیش هشاجؼِ وٌیذ: http://ce.sharif.edu/~shaikhha/java901 دلر وٌیذ وِ تایذ فایل ّای خَد سا داخل یه فایل zipتِ ًام STDID( STDID.zipؿواسُ داًـجَییساى هی تاؿذ ).لشاس دّیذ (هثل ٍ )87123456.zipفایل zipسا اسػال وٌیذ( .دلر وٌیذ وِ تذٍى ایٌىِ داخل ّیچ ؿاخِ ای لشاس دّیذ ،فایل ّای خَد سا zipوٌیذ ).دلر وٌیذ وِ فایل اسػالی ؿوا تایذ حاٍی یه فایل Main.javaتاؿذ وِ دسٍى ّیچ ؿاخِای ًیؼر ٍ mainاجشایی تشًاهِ دس آى اػرّ .وچٌیي الصم اػر دس ایي خشٍطُ ؿوا هیاى وذّایساى هؼسٌذ ػاصی سا تِ ووه جاٍادان اًجام دّیذ (ٌّگام اسػال فایل ّای htmlسا زَلیذ ًىٌیذ) .دس ایي هؼسٌذاذ ؿوا تایذ تشای ّش والع ٍ ّویٌؽَس تشای ّش وذام اص زاتغ ّای والع ایي زَظیحاذ سا تٌَیؼیذ تِ ؼَسی وِ تا صدى دػسَس جاٍادان فایل ّای htmlای وِ تِ دػر هی آیٌذ تِ ؼَس واهل تیاًگش چگًَگی واسوشد تشًاهِ تاؿٌذ .دلر وٌیذ وِ فایل ٍ pdfفایل Main.javaتایذ داخل ّیچ خَؿِ ای لشاس ًگیشًذ. هَػذ اسػال ػاػر 32:59سٍص 9/2/1390تَدُ ٍ تِ ّیچ ػٌَاى زوذیذ ًخَاّذ ؿذ. زأخیش زا 1ػاػر ،تِ اصای ّش 2دلیمِ هَجة وؼش ؿذى ً %1وشُ ،اص 1ػاػر زا 32ػاػر هَجة وؼش ؿذى ً %32وشُ ،اص 32ػاػر زا 35ػاػر ،تِ اصای ّش 3دلیمِ هَجة وؼش ؿذى ً %1وشُی دیگش ٍ تیي 35ػاػر زا 28ػاػر تاػث وؼش ؿذى ً %52وشُ هی ؿَد .زأخیش تیـسش اص 28ػاػر لاتل لثَل ًیؼر. هَجْی تشای زأخیش ًیؼسٌذ .تٌاتشایي خیـٌْاد هیؿَد جَابّای خَد سا دس دانشکده اسػال وٌیذ. ػَاالذ خَد سا تا فشػسادى ایویل تِ آدسع [email protected]هؽشح وٌیذ. دس صَسذ اػسفادُ اص ّشگًَِ هٌثؼی ،تایذ آى هٌثغ دس خَد هىاى اػسفادُ (تِ صَسذ واهٌر) آٍسدُ ؿَد .دلر وٌیذ وِ حسی دس صَسزی وِ ایي هٌثغ سا اص یىی اص دٍػساًساى گشفسِ ایذ ،اػن فشد تایذ روش ؿَد. ً حَُ ی زحَیل حعَسی خشٍطُ تؼذا تِ اؼالع ؿوا خَاّذ سػیذ. دلر وٌیذ وِ تایذ تسَاًیذ دس صهاى زحَیل ّش زغییشی دس وذّا اػوال وٌیذ. خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا لؽغ تَدى ایٌسشًر خَاتگاُ ،وٌذی خایگاُ ایٌسشًسی داًـىذُ ،زوام ؿذى واسذ ایٌسشًر ٍ … ّیچوذام دلیل 1 مقدمه ؿوا دس ایي خشٍطُ تایذ همذهاذ ًگاسؽ تاصی CE Tanksسا وِ لشاس اػر دس خشٍطُ ّای تؼذ زىویل وٌیذ فشاّن وٌیذ. ؿوا دس ایي فاص تایذ یه map editorسا خیادُ ػاصی وٌیذّ .ویٌؽَس دس ایي هشحلِ تایذ زَاًایی اًجام تاصی دس حذ اتسذایی سا دس consoleتِ واستش تذّیذ .تاصی تِ ایي صَسذ اػر وِ زؼذادی زاًه دس ًمـِ ٍجَد داسًذ ٍ ّش زاًىی زالؽ هیىٌذ وِ زاًه ّای دیگش سا تا ؿلیه گلَلِ هٌْذم وٌذً .مـِ ی ؿوا اص زؼذادی blockزـىیل ؿذُ اػر ٍ ّش وذام خاصیر خَد سا داسًذ. تاصی تِ ایي صَسذ اػر وِ ّش زاًىی یه جْسی داسد ٍ هیسَاًذ تِ ػور ساػر ٍ یا چح خَد تچشخذّ .ویٌؽَس دس جْسی وِ لشاس داسد تِ ػور جلَ ٍ یا ػمة حشور وٌیذ .واس دیگشی وِ یه زاًه هیسَاًذ اًجام دّذ ایي اػر وِ گلَلِای سا ؿلیه وٌذ وِ تا ای ي واس یه گلَلِ دس خاًِ ی جلَی زاًه لشاس هیگیشد ٍ جْر حشور آى هـخص هیـَد ٍ اص آى تِ تؼذ دس ّش حشور یه خاًِ تِ جلَ هیشٍد. زَجِ وٌیذ وِ دس ایي فاص والع ّای خشٍطُ ای وِ تایذ تٌَیؼیذ تِ صَسذ خیـٌْادی دس صَسذ خشٍطُ ٍجَد داسد .هیسَاًیذ اص آى ّا اػسفادُ وٌیذ ٍ وذ خَد سا ػاخر یافسِ وٌیذ .زَجِ وٌیذ وِ دس فاص ّای تؼذی چگًَگی والع تٌذی ٍ ایي وِ دس ّش والع چِ تایذ ٍجَد داؿسِ تاؿذ تِ ؿوا گفسِ ًخَاّذ ؿذ خغ تِ چگًَگی والع تٌذی دس ایي فاص دلر وٌیذ چَى وِ تایذ چگًَگی والع تٌذی سا یاد تگیشیذ ٍ دس فاص ّای تؼذی ایي واس سا اًجام دّیذ. قسمتهای اصلی دس ایي خشٍطُ ؿوا تایذ چٌذ والع سا خیادُ ػاصی وٌیذ وِ دس صیش تِ زَظیح آًْا خشداخسین: والع : Tankایي والع تشای ًگْذاسی ّش تاصیىي ٍ هـخصاذ هشتَغ تِ آى اػر. خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا 3 هسذ ّایی وِ دس ایي والع ٍجَد داسًذ دس صیش آهذُ اػر : ;)public Tank(int number,String name ;)(public char getDirection ;)public void setDirection(char dir ;)(public String toString ;)(public String getName ;)(public int getNumber ;)(public void setCol ;)(public void setRow ;)(public int getCol ;)(public int getRow زاتغ اٍل ػاصًذُ ی والع Tankاػر ٍ ؿواسُ ٍ ًام تاصیىي سا هیگیشد. زاتغ دٍم هـخصاذ تاصیىي سا چاج هیىٌذ وِ هثال اگش تاصیىي ؿواسُ ٍ 3تِ ًام ٍ Alirezaدس ػؽش ٍ 2ػسَى ٍ 3 جْر آى تِ ػور تاال تَد حاصل تِ ایي صَسذ اػر: Tank No 2 Alireza at (3,2) u زاتغ ّای دیگش تِ ػٌَاى ّ getter ٍ setterؼسٌذ. جْر ّای هوىي ّ u,l,d,r :ؼسٌذ وِ تِ زشزیة ًـاًذٌّذُ ی تاال ،چح ،خاییي ٍ ساػر هیثاؿٌذ. والع : Bulletایي والع ًـاى دٌّذُ ی یه گلَلِ اػر .زاتغ ّایی وِ تایذ ٍجَد داؿسِ تاؿٌذ: ;)(public String toString ;)(public Tank getTank ;)(public int getRow ;)(public int getCol ;)(public void setRow ;)(public void getDirection وِ زاتغ اٍل هـخصاذ گلَلِ سا چاج هیىٌذ .وِ هثال اگش گلَلِ اص جاًة زاًه ؿواسُ 3ؿلیه ؿذُ تاؿذ ٍ دس ػؽش ٍ 2 ػسَى ٍ 3دس جْر چح تاؿذ تِ ایي صَسذ اػر: Bullet at (3,2) form Tank no 2 زاتغ دٍم ّن زاًىی وِ ایي گلَلِ سا ؿلیه وشدُ تش هیگشداًذ. زاتغ ّای تؼذی ّ setter ٍ getterای هشتَغ تِ گلَلِ اػر. خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا ;)(public void setCol 2 والع : Blockایي والع تِ صَسذ abstractاػر ٍ دس ٍالغ خذس ّوِ ی ّ blockای هَجَد دس ًمـِ اػر. هسذ ّایی وِ دس ایي والع ٍجَد داسًذ: ;)(public abstract String toString ;)(public int getRow ;)(public int getCol ;)(public void setRow ;)(public void setCol ;)(public abstract getCharacter وِ زاتغ اٍل هـخصاذ blockسا چاج هیىٌذ .هثال اگش تشای Wallصذا صدُ ؿَد وِ دس ػؽش ٍ 2ػسَى 3تاؿذ حاصل تِ ؿىل صیش اػر: )Wall at (3,2 چْاس زاتغ تؼذی setter ٍ getterتشای ػؽش ٍ ػسَى ّؼسٌذ .زَجِ وٌیذ وِ ایي زاتغ ّا ً abstractیؼسٌذ (تِ ایي خاؼش وِ ایي ٍیظگی دس ّوِ ی ّ blockا هـسشن اػر خغ آى سا دس والع خذس لشاس هیذّین) زاتغ آخش ًیض واساوسش هشتَغ تِ والع سا تش هیگشداًذ .وِ ایي واساوسش حشف اٍل ًام ّش blockاػر. حال تِ تیاى ّ blockای هَجَد دس ًمـِ ٍ ٍیظگی ّای آًْا هیدشداصینّ( :ش وذام اص ایي ّا یه والع ّؼسٌذ وِ فشصًذ والع ّ Blockؼسٌذ). خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا 2 - : Groundایي تلَن صهیي ػادی اػر ٍ خاصیر خاصی ًذاسد. - : Wallایي تلَن دیَاس اػر ٍ ًِ گلَلِ ٍ ًِ زاًه حك ٍسٍد تِ آى سا ًذاسًذ .دس صَسذ اصاتر گلَلِ تِ ایي blockگلَلِ اص تیي هیشٍد. : Boxایي تلَن یه جؼثِ اػر ٍ ّیچ زاًىی حك ٍسٍد تِ آى سا ًذاسد .دس صَسذ اصاتر گلَلِ ،گلَلِ اص تیيهیشٍد ٍ تلَن Boxزثذیل تِ تلَن Groundخَاّذ ؿذ. : Iceایي تلَن صفحِ ی یخی اػر .دس صَسزی وِ زاًىی ٍاسد آى ؿَد دس جا ػش هیخَسد ٍ اص ؼشف دیگشخاسج هیـَد( .زَجِ وٌیذ وِ اگش دس ؼشف دیگش یخ دیَاس یا جؼثِ تَد ٍ یا ایي وِ اًسْای ًمـِ تَد ،دس صَسذ ٍسٍد ّش زاًه زاًه سٍی ایي خاًِ هی ایؼسذ ).دس صَسزی وِ گلَلِ ای ٍاسد ؿَد تشخَسد ایي تلَن تا گلَلِ هاًٌذ تشخَسد صهیي ػادی اػر. - : Trapایي خاًِ زلِ هیثاؿذ .دس صَسزی وِ زاًىی ٍاسد آى ؿَد خَاّذ تاخر ٍ زلِ زثذیل تِ Ground هیـَد .دس صَسذ اصاتر گلَلِ تِ ایي تلَن ،تلَن زثذیل تِ Groundهیـَد. - : Randomایي تلَن خاًِ ی سًذم اػر .تِ ایي صَسذ وِ زا صهاًی وِ دس هحیػ ٍیشایؾ ًمـِ ّؼسین ایي blockیه تلَن Randomاػر ٍ تِ هحط ایي وِ تاصی خَاػر ؿشٍ ع ؿَد تایذ زثذیل تِ یىی اص تلَنّای تاال ؿَد. والع : Mapایي والع تشای ًگْذاسی ًمـِ اػر .زاتغ ّایی وِ تایذ دس ایي والع ٍجَد داؿسِ تاؿٌذ: ;)public Map(int col,int row ;)public void edit(int col, int row, Block block ;)(public String toString ;)(public int getRows ;)(public int getRows زاتغ اٍل ػاصًذُ ی ایي والع اػر ٍ ًمـِ ای تِ زؼذاد ػؽش ٍ ػسَى ّای دادُ ؿذُ هیؼاصد .دس لحظِ ی ػاخسي ّوِی تلَن ّا تِ صَسذ دیفالر تِ تلَن Groundزثذیل هیـًَذ. زاتغ دٍم یه خاًِ اص ًمـِ سا ٍیشایؾ هیىٌذ ٍ آى سا تِ تلَن خاع دادُ ؿذُ setهیىٌذ. زاتغ ػَم ًمـِ سا چاج هیىٌذ؛ تِ ایي صَسذ وِ تِ اصای ّش خاًِ حاصل getCharacterسا چاج هیىٌذ ٍ تیي خاًِّای ّش سدیف یه tabصدُ هیـَد ) ٍ (\tدس اًسْای خػ ّن یه \r\nتایذ گزاؿسِ ؿَد .تِ ػٌَاى هثال چٌیي سؿسِ ای تشگشداًذُ هیـَد( :سؿسِ ی صیش تشای ًمـِ ای وِ داسای 2ػسَى ٍ 3سدیف اػر هیثاؿذ) W\tG\tG\tT\r\nW\tB\tR\tI\r\n تشًاهِ ی ؿوا تِ جض هحیػ ٍیشایؾ هحیػ تاصی ّن داسد. والع : Gameایي والع ًگْذاسًذُ ی ٍظؼیر تاصی اػر .زاتغ ّایی وِ دس آى ٍجَد داسًذ : ;)public Game(Tank[] tanks, Map map ;)(public Tank getTank ;)public boolean move(char move خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا دٍ زاتغ آخش ًیض getterزؼذاد ػؽش ٍ ػسَى ّا ّؼسٌذ. 5 ;)(public Map getMap زاتغ اٍل ػاصًذُ ی ایي والع اػر ٍ زاًه ّا ٍ ًمـِ سا تِ ػٌَاى ٍسٍدی هیگیشد. زاتغ دٍم زاًىی وِ دس حال حاظش ًَتر حشور اٍ اػر سا تشهیگشداًذ. زاتغ ػَم دػسَس گفسِ ؿذُ سا تشای زاًىی وِ اوٌَى ًَتر آى اػر اًجام خَاّذ داد .دػسَس ّا تِ ایي صَسذ ّؼسٌذ : - uتشای حشور تِ ػور جلَ - lتشای چشخیذى تِ ػور چح - rتشای چشخیذى تِ ػور ساػر - dتشای حشور تِ ػمة fتشای ؿلیه گلَلِدس حیي اجشای ایي حشور دٍ حالر هحسول اػر وِ آیا حشور هَفمیر آهیض تَد یا خیش وِ تا trueیا falseهـخص هیـَد. زاتغ چْاسم ّن وِ ًمـِ سا تشهیگشداًذ. تاصی دس ایي فاص تِ صَسذ ًَتسی اجشا هیـَد تِ ایي صَسذ وِ دس ّش ًَتر ّش تاصیىي حك یه حشور سا داسد ٍ ٌّگاهی وِ آى حشور سا اًجام داد چِ هَفمیر آ هیض تَد ٍ چِ ًثَد ًَتر اص اٍ گشفسِ هیـَد ٍ تِ تاصیىي تؼذی دادُ خَاّذ ؿذ. دس اتسذای تاصی جْ ر ّوِ ی زاًه ّا تِ صَسذ خیـفشض تِ ػور تاال اػر ٍ زؼذاد تاصیىي ّا حذاوثش 2اػر. ٌّگاهی وِ دػسَسی دادُ هیـَد ّوِ ی گلَلِ ّا ًیض یه خاًِ تِ ػور جلَ حشور خَاٌّذ وشد. خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا 6 زَجِ وٌیذ وِ ٍیظگی ّایی وِ تشای تلَن ّا گفسِ ؿذ سا خیادُ ػاصی وٌیذ .ػالٍُ تش ایي لاًَى ّا ،دٍ لاًَى دیگش ٍجَد داسًذ وِ یىی تیاى هیىٌذ وِ ّیچ زاًىی حك خشٍج اص ًمـِ سا ًذاسد ٍ دیگش ایي وِ ّش زاًىی فمػ یه گلَلِ ی فؼال دس ًمـِ هیسَاًذ داؿسِ تاؿذ .خغ دس صَسزی و ِ گلَلِ ای اص زاًىی وِ ًَتر آى تَد ٍجَد داؿر ٍ دػسَس ؿلیه دادُ ؿذ ایي زاًه زَاًایی ؿلیه ًخَاّذ داؿر. اگش زاًىی تِ گلَلِ اصاتر وٌذ ،گلَلِ اص تیي هیشٍد ٍ آى زاًه خَاّذ تاخر. زاًىی تشًذُ ی تاصی اػر وِ صًذُ تالی تواًذ ٍ تمیِ ی زاًه ّا هٌْذم ؿًَذ. نحوه ی اجرای برنامه زَجِ وٌیذ وِ ایي خشٍطُ تا زصحیح خَدواس چه خَاّذ ؿذ .تِ ایي صَسذ وِ تشًاهِ ی ؿوا زحر وٌؼَل تایذ تسَاًذ اجشا ؿَد. تِ ایي هٌظَس تایذ والع Mainای داؿسِ تاؿیذ وِ دس default packageتاؿذ ٍ داسای زاتغ mainتاؿذ. تشًاهِ داسای دٍ هحیػ ػاخسِ ؿذُ اػر وِ یىی هحیػ editوشدى ًمـِ ٍ دیگشی هحیػ اجشای تاصی اػر. تشًاهِ تِ ایي صَسذ اجشا هیـَد وِ دس خػ اٍل زؼذاد ػؽش ّا ،دس خػ دٍم زؼذاد ػسَى ّا ٍ دس خػ ػَم زؼذاد تاصیىيّا ٍاسد هیـَد ٍ .ػدغ تالفاصلِ تاصی تایذ ٍاسد هحیػ ادیر ؿَد. دس ّش وذام اص هحیػ ّا دػسَسازی ٍجَد داسًذ وِ دس صیش آهذُ اػر: دػسَساذ هحیػ ٍیشایؾ ًمـِ: edit #row #col character وِ ً blockمؽِ ی دادُ ؿذُ سا تِ Blockای وِ تا حشف دادُ ؿذُ ؿشٍع هیـَد ػَض هیىٌذ .هثال: edit 3 4 W دػسَس : print print وِ حاصل ً toStringمـِ سا خشیٌر هیىٌذ ( زَجِ وٌیذوِ اص زاتغ printاػسفادُ وٌیذ ٍ ًِ ) println دػسَس : setStart setStart #row #col #number setStart 3 4 2 وِ هىاى ؿشٍع زاًه ؿواسُ ی 3سا تشاتش ػؽش ٍ 2ػسَى 2لشاس هیذّذ. دػسَس : Game Game name_1 name_2 name_3 …. خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا وِ ًمؽِ ی ؿشٍع زاًه تِ ؿواسُ دادُ ؿذُ سا زؼییي هیىٌذ .هثال: 7 وِ تا ایي دػسَس ًام ّش وذام اص تاصیىي ّا دادُ هیـَد ٍ تشًاهِ تا ایي دػسَس ٍاسد هحیػ تاصی هیـَد .تا ایي واس ًَتر زاًه ؿواسُ 1اػر زا حشور وٌذ. دس زؼر ّا ّوَاسُ ّوِ ی تاصیىي ّا setStartهیـًَذ. ّ وَاسُ ّ setStartا سٍی خاًِ ی Groundدادُ هیـًَذ. دػسَساذ هحیػ تاصی: دػسَس : move move character وِ تا ایي دػسَس دػسَس هساًظش تا characterتایذ تشای زاًىی وِ ًَتر آى اػر اجشا ؿَد .وِ دػسَس ّا ّواى 5زایی ّؼسٌذ وِ دس تاال گفسِ ؿذ .دس ٌّگام اجشای ایي دػسَس ازفالازی هوىي اػر ازفاق تیَفسذ وِ تایذ تا سؿسِ ای هٌاػة ًوایؾ دادُ ؿَد: ازفالاذ هوىي: ػذم زَاًایی اجشای دػسَس : oدس صَسزی وِ دػسَس حشور وشدى دادُ ؿذُ تَد فمػ دس صَسزی وِ زاًىی وِ تایذ حشور وٌذ دس اًسْای حشور دس ّواى جای اٍل تالی هاًذ خػ صیش چاج هیـَد: No Move. oدس صَسزی وِ دػسَس ؿلیه تَد ٍ زَاًایی ؿلیه ٍجَد ًذاؿر خػ صیش چاج هیـَد: No Fire. خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا 8 تاخسي تاصیىي :وِ تایذ سؿسِ ای تِ ایي صَسذ چاج ؿَد: Tank (tank name) loses. وِ تِ جای خشاًسض تایذ ًام تاصیىي چاج ؿَد .هثال: Tank Alireza loses. تشد تاصیىي :وِ تایذ سؿسِ ای تِ ایي صَسذ چاج ؿَد: Tank (tank name) wins. وِ تِ جای خشاًسض تایذ ًام تاصیىي لشاس تگیشد .هثال: Tank Alireza wins. زَجِ داؿسِ تاؿیذ وِ تا صدى دػسَس moveزشزیة ٍلَع ازفالاذ تذیي زشزیة اػر: .1حشور گفسِ ؿذُ دس صَسذ اهىاى اجشا هیـَد. .3گلَلِ ّا ّش یه تِ اًذاصُ ی یه خاًِ تِ جلَ حشور هیىٌٌذ. زشزیة دس ایي هشحلِ هْن ًیؼر( .زؼسی تِ تشًاهِ ؿوا دادُ ًویـَد وِ زشزیة ایي وِ وذام گلَلِ اٍل حشور وٌذ هْن تاؿذ) خشٍطُ ػشی اٍل دسع تشًاهِ ًَیؼی ؿیءگشا 9
© Copyright 2026 Paperzz