Project2.pdf

‫پروژه سری دوم‬
‫درس برنامه نویسی شیءگرا‬
‫موعد ارسال‪0391/3/9 :‬‬
‫علیرضا مظلومی‬
‫تا تكىط اظ ؾاحل قطیفی همسم ‪ -‬هْؿا لطتاًی ‪ -‬قازی ػثساللْیاى‬
‫پروژه سری دوم درس برنامه نویسی شیءگرا‬
‫موعد ارسال‪0391/3/9 :‬‬
‫نکات کلی‬
‫‪ ‬تطای اضؾال تِ آزضؼ ظیط هطاجؼِ وٌیس‪:‬‬
‫‪http://judge.ce.sharif.edu/‬‬
‫زلت وٌیس وِ تایس فایلّای ذَز ضا زاذل یه فایل ‪ zip‬تِ ًام ‪ STDID( STDID.zip‬قواضُ زاًكجَییتاى‬
‫هیتاقس‪ ).‬لطاض زّیس (هثل ‪ ٍ )87123456.zip‬فایل ‪ zip‬ضا اضؾال وٌیس‪( .‬زلت وٌیس وِ تسٍى ایٌىِ زاذل‬
‫ّیچ قاذِ ای لطاض زّیس‪ ،‬فایل ّای ذَز ضا ‪ zip‬وٌیس‪ ).‬زلت وٌیس وِ فایل اضؾالی قوا تایس حاٍی یه فایل‬
‫‪ Main.java‬تاقس وِ زضٍى ّیچ قاذِای ًیؿت ٍ ‪ main‬اجطایی تطًاهِ زض آى اؾت‪ّ .‬وچٌیي الظم اؾت زض‬
‫ایي پطٍغُ قوا هیاى وسّایتاى هؿتٌس ؾاظی ضا تِ ووه جاٍازان اًجام زّیس (ٌّگام اضؾال فایل ّای ‪ html‬ضا‬
‫تَلیس ًىٌیس)‪ .‬زض ایي هؿتٌسات قوا تایس تطای ّط والؼ ٍ ّویٌطَض تطای ّط وسام اظ تاتغ ّای والؼ ایي‬
‫تَضیحات ضا تٌَیؿیس تِ طَضی وِ تا ظزى زؾتَض جاٍازان فایل ّای ‪ html‬ای وِ تِ زؾت هی آیٌس تِ طَض‬
‫واهل تیاًگط چگًَگی واضوطز تطًاهِ تاقٌس‪ .‬زلت وٌیس فایل ‪ Main.java‬تایس زاذل ّیچ پَقِ ای لطاض ًگیطًس‪.‬‬
‫‪ ‬هَػس اضؾال ؾاػت ‪ 23:52‬تاضید ‪ 1320/3/2‬تَزُ ٍ تِ ّیچ ػٌَاى توسیس ًرَاّس قس‪.‬‬
‫‪ ‬تأذیط تا ‪ 1‬ؾاػت‪ ،‬تِ اظای ّط ‪ 3‬زلیمِ هَجة وؿط قسى ‪ً %1‬وطُ‪ ،‬اظ ‪ 1‬ؾاػت تا ‪ 24‬ؾاػت هَجة وؿط قسى‬
‫‪ً %20‬وطُ‪ ،‬اظ ‪ 24‬ؾاػت تا ‪ 25‬ؾاػت‪ ،‬تِ اظای ّط ‪ 2‬زلیمِ هَجة وؿط قسى ‪ً %1‬وطُی زیگط ٍ تیي ‪ 25‬ؾاػت‬
‫تا ‪ 44‬ؾاػت تاػث وؿط قسى ‪ً %50‬وطُ هیقَز‪ .‬تأذیط تیكتط اظ ‪ 44‬ؾاػت لاتل لثَل ًیؿت‪.‬‬
‫‪ ‬لطغ تَزى ایٌتطًت ذَاتگاُ‪ ،‬وٌسی پایگاُ ایٌتطًتی زاًكىسُ‪ ،‬توام قسى واضت ایٌتطًت ٍ … ّیچوسام زلیل‬
‫‪ ‬ؾَاالت ذَز ضا تا فطؾتازى ایویل تِ آزضؼ ‪ [email protected]‬هططح وٌیس‪.‬‬
‫‪ً ‬حَُی تحَیل حضَضی پطٍغُ تؼسا تِ اطالع قوا ذَاّس ضؾیس‪.‬‬
‫‪ ‬زلت وٌیس وِ تایس تتَاًیس زض ظهاى تحَیل ّط تغییطی زض وسّا اػوال وٌیس‪.‬‬
‫پطٍغُ ؾطی زٍم زضؼ تطًاهِ ًَیؿی قیءگطا‬
‫هَجْی تطای تأذیط ًیؿتٌس‪ .‬تٌاتطایي پیكٌْاز هیقَز جَابّای ذَز ضا زض دانشکده اضؾال وٌیس‪.‬‬
‫‪1‬‬
‫مقدمه‬
‫زض ایي فاظ اظ پطٍغُ قوا تایس فاظ لثلی پطٍغُ ی ذَز ضا تىویل ًوَزُ ٍ تاظی ضا تِ صَضت گطافیىی زض تیاٍضیس‪ .‬تَجِ وٌیس‬
‫وِ زض ایي فاظ ٍ فاظ تؼسی والؼ ّای وِ تایس تگیطیس ٍ ؾاذتاض پطٍغُ تِ قوا گفتِ ًویكَز ٍ ططاحی آى ًیع جعٍ ٍظایف‬
‫قواؾت‪.‬‬
‫پطٍغُ ی قوا تایس تط ضٍی فاظ یىتاى تٌا قسُ تاقس ٍ اهىاًات ٍ ٍیػگی ّای آى ضا زاقتِ تاقس‪.‬‬
‫اهىاًاتی وِ تایس پیازُ ؾاظی قًَس‪:‬‬
‫‪ٍ ‬یطایف‪ ،‬ؾاذت‪ ،‬شذیطُ ضٍی فایل ٍ تاظیاتی اظ فایل ًمكِ ّا ‪ .‬فایل ّایی وِ تطای ًمكِ ّا اؾتفازُ هیكًَس تایس‬
‫تا پؿًَس ‪ .map‬تاقٌس‪( .‬فطهت شذیطُ تط ضٍی فایل ّا زؾت ذَزتاى اؾت‪ .‬هیتَاًیس ّط گًَِ وِ ذَاؾتیس‬
‫شذیطُ ٍ تاظیاتی وٌیس‪).‬‬
‫‪ ‬اجطای تاظی؛ وِ ایي زلیما هاًٌس ّواًی اؾت وِ زض فاظ ‪ٍ 1‬جَز زاقت ٍ تایس تِ صَضت گطافیىی زض تیایس‪.‬‬
‫‪ ‬هسیطیت ذطا(‪ :)exception handling‬تطًاهِ ی قوا تایس تتَاًس ذطاّایی وِ هوىي اؾت زض تطًاهِ ضخ‬
‫زّس ضا هسیطیت وٌس‪ .‬زض صَضت ضخ زاز ّط وسام اظ آًْا واضتط ضا تا پیغام هٌاؾة هطلغ ؾاظز‪.‬‬
‫لطفا صَضت پطٍغُ ضا زلیك ترَاًیس تا ًوطُ ای اظ زؾت ًسّیس‪ .‬زض صَضت ٍجَز اتْام تِ گطٍُ زضؾی ایویل وٌیس‪.‬‬
‫قسمتهای اصلی‬
‫هحیط تطًاهِ ی قوا تایس زاضای یه صفحِ ی ‪ JFrame‬یا ‪ JApllet‬تاقس وِ صفحِ ی هٌَ ًام زاضز‪.‬‬
‫تا اجطای تطًاهِ تایس ًمكِ ی زیفالت تِ اًساظُ ی ‪ 4‬زض ‪ 4‬وِ ّوِ ی ذاًِ ّا ظهیي ّؿتٌس ؾاذتِ قَز ٍ ٍاضز صفحِ ی‬
‫هٌَی قَز‪.‬‬
‫پطٍغُ ؾطی زٍم زضؼ تطًاهِ ًَیؿی قیءگطا‬
‫‪2‬‬
‫زووِ ّایی وِ زض هٌَ ٍجَز زاضًس‪ edit map, load map, start game :‬وِ زووِ ّا زض ظیط قطح زازُ هیكَز‪:‬‬
‫‪ : Load map‬تا ظزى ایي زووِ واضتط تایس تتَاًس اظ تیي ً مكِ ّای هَجَز وِ ضٍی فایل شذیطُ قسُ اًس یىی ضا اًتراب‬
‫وٌس تا ایي واض ًمكِ ی اًتراب قسُ اظ ضٍی فایل ذَاًسُ هیكَز ٍ ضٍی حافظِ لطاض هیگیطز‪.‬‬
‫‪ :Start game‬تا ایي زووِ تطًاهِ تا اؾتفازُ اظ ًمكِ ای وِ ضٍی حافظِ اؾت ٍاضز هحیط تاظی هیكَز‪.‬‬
‫‪ : Edit map‬تا ظزى ایي زووِ تطًاهِ تِ ضٍی ًمكِ ی ضٍی حافظِ تِ حالت ٍیطایف زض هی آیس‪.‬‬
‫هحیط ٍیطایف‪:‬‬
‫زض ایي لؿوت تایس واضتط تتَاًس ًمكِ ضا ٍیطایف وٌس‪ .‬تطای ًكاى زازى ًمكِ اظ ػىؽ ّای هٌاؾة تطای ‪ّ block‬ا‬
‫هرتلف اؾتفازُ وٌیس‪( .‬پیكٌْاز هیكَز وِ ‪ block‬ضا تچِ ی ‪ ٍ JButton‬یا ‪ JLabel‬لطاض زّیس)‪ .‬تا ولیه وطزى تط‬
‫ضٍی ّط وسام اظ ذاًِ ّای ًمكِ تا تاظ قسى هٌَیی تایس ًَع ‪ block‬اظ واضتط طلة قَز ٍ تا اًتراب اظ ؾَی واضتط آى‬
‫ذاًِ ػَض قَز‪ .‬زض ایي هحیط تایس زووِ ّای ‪ٍ new ٍ undo ٍ save‬جَز زاقتِ تاقس‪.‬‬
‫واض زووِ ی ‪ save‬ایي اؾت وِ ًمكِ ای وِ هكاّسُ هیكَز ضا ضٍی فایلی شذیطُ وٌس (تَجِ وٌیس وِ ّوِ ی فایل ّا‬
‫تایس زض پَقِ ای تِ ًام ‪ maps‬زض وٌاض پطٍغُ ی قوا شذیطُ ٍ تاظیاتی قَز‪ .‬زض صَضتی وِ اؾوی وِ اظ واضتط زضیافت‬
‫هیكَز ٍجَز زاقتِ تاقس تایس تا زازى ‪ warning‬واضتط ضا اظ ایي لضیِ هطلغ ؾاظیس ٍ زض صَضت هَافمت واضتط آى ضا ضٍی‬
‫ّواى فایل شذیطُ وٌیس‪.‬‬
‫زووِ ی ‪ً undo‬یع آذطیي تغییطی وِ واضتط زا زُ اؾت ضا تایس تِ ػمة تاظگطزاًس (ایي تغییطات ًاهحسٍز اؾت ٍ ّوِ ی‬
‫تغییطاتی وِ اظ ظهاًی وِ ٍاضز هحیط ٍیطایف قسُ ایس تایس ٍجَز زاقتِ تاقس)‪.‬‬
‫زووِ ی ‪ new‬وِ تایس طَل ٍ ػطض ًمكِ ضا اظ واضتط زضیافت وٌس ٍ ًمكِ ی زیفالت تِ ایي اًساظُ ضا ایجاز وٌس‪.‬‬
‫هحیط تاظی‪:‬‬
‫زض ایي لؿوت تطًاهِ ی قوا تایس لاتلیت اجط ای تاظی تِ صَضت ًَتتی ضا تِ واضتط تسّس‪ٌّ .‬گام قطٍع تاظی تایس تؼساز‬
‫تاظیىي ّا اظ واضتط تپطؾیس(حساوثط ‪ 4‬تاظیىي)‪ .‬زض ٌّگام قطٍع جای تاظیىي ّا تِ صَضت ضًسم ضٍی یىی اظ ذاًِ ّای‬
‫‪ Ground‬تؼییي هیكَز‪ .‬تطای تاظی وطزى تایس تا زووِ ّای ویثَضز ایي اتفاق تیفتس وِ تِ ایي هٌظَض‪ ،‬زووِ ّای‬
‫‪ّ arrow key‬ا تطای حطوت ّؿتٌس وِ ‪ up‬تطای حطوت تِ جلَ ٍ ‪ down‬تطای حطوت تِ ػمة ٍ ‪ right‬تطای‬
‫چطذف تِ ضاؾت ٍ ‪ left‬تطای چطذف تِ چپ‪ّ .‬ویٌطَض لثل اظ اًجام حطوت تاًه حك زاضز تا ظزى زووِ ی ‪enter‬‬
‫السام تِ قلیه ًوایس ٍ تؼس حطوت وٌس ٍ یا ایي وِ قلیه ًىٌس ٍ هؿتمیوا حطوت وٌس‪ .‬تَجِ وٌیس وِ زض هحیط تاظی‬
‫هتفاٍت اؾتفازُ وٌیس‪.‬‬
‫لاتلیت زیگطی وِ تایس پیازُ ؾاظی وٌیس اًیویكي اؾت‪ٌّ .‬گاهی وِ تاًىی لصس زاضز تچطذس تایس تِ گًَِ ای ػىؽ ّا ضا‬
‫پكت ؾط ّن لطاض زّیس تا اتفاق هاًٌس اًیویكي زیسُ قَز ٍ تِ صَضت پیَؾتِ لَلِ ی تاًه حطوت وٌس‪( .‬ضاٌّوایی‪ :‬تایس‬
‫تؼساز ظیازی ػىؽ اظ تاًه تا ظاٍیِ ی لَلِ ی هرتلف زاقتِ تاقس ٍ آًْا ضا تِ پكت ؾط ّن تِ ًوایف تگصاضیس‪).‬‬
‫‪ ‬تَجِ وٌیس وِ تاظی زض ایي فاظ ًیع تِ صَضت ًَتتی اؾت ٍ قوا تایس زلیما لَاػسـ هثل فاظ اٍل پطٍغُ تاقس‪.‬‬
‫‪ ‬زض ّط لحظِ تایس ایي هَضَع وِ ًَتت وسام تاًه اؾت زض تاالی صفحِ تا ضًگ آى تاًه ًوایف زازُ قَز‪.‬‬
‫پطٍغُ ؾطی زٍم زضؼ تطًاهِ ًَیؿی قیءگطا‬
‫تاًه ّا زاضای جْت ّؿتٌس ٍ تایس جْت آًْا تِ زضؾتی ًوایف زازُ قًَس‪ .‬تطای ًوایف ّط تاًه اظ ػىؿی تا ضًگ‬
‫‪3‬‬
‫‪ ‬تَجِ وٌیس وِ هاًٌس فاظ یه اگط تاًىی زؾتَض حطوت زاز‪ ،‬چِ تَاًؿت حطوت وٌس ٍ چِ ًتَاًؿت ًَتت اظ اٍ‬
‫گطفتِ هیكَز‪.‬‬
‫ؾیؿتن هسیطیت ذطا‬
‫زض ایي فاظ قوا تایس ؾیؿتن هسیطیت ذطا زاقتِ تاقس ‪ .‬تِ ایي صَضت وِ والؾی زاقتِ تاقیس تا ًام‬
‫‪ CETankException extends Exception‬وِ ذطاّای ظیط تچِ ّای آى ّؿتٌس‪:‬‬
‫‪ToWallException‬‬
‫‪ToBoxException‬‬
‫‪CanNotFireException‬‬
‫‪MapOutOfBoundException‬‬
‫وِ ‪ exception‬اٍل ظهاًی ضٍی هیسّس وِ تاًىی لصس حطوت تِ ذاًِ ی زیَاض ضا زاقتِ تاقس‪.‬‬
‫ٍ ‪ exception‬زٍم ظهاًی ضخ هیسّس وِ تاًىی لصس حطوت تِ ذاًِ ی جؼثِ ضا زاقتِ تاقس‪.‬‬
‫ٍ ‪ exception‬ؾَم ظهاًی ضخ هیسّس وِ تاًىی لصس قلیه گلَ لِ ضا زاقتِ تاقس ٍلی گلَلِ ای تطای قلیه ًساقتِ‬
‫تاقس‪.‬‬
‫ٍ ‪ exception‬زٍم ظهاًی ضخ هیسّس وِ تاًىی لصس حطوت تِ ذاًِ ی تیطٍى اظ ًمكِ ضا زاقتِ تاقس‪.‬‬
‫‪ ‬تَجِ وٌیسوِ ایي ‪ّ exception‬ا تایس زضٍى تطًاهِ ی قوا تاقٌس ٍ ‪ throw‬قًَس ٍ زض صَضت ضخ زاز ّط‬
‫وسام اظ آًْا تا ‪ catch‬وطزى آًْا پیغام هٌاؾة ضا تِ واتط ًوایف زّیس‪.‬‬
‫پطٍغُ ؾطی زٍم زضؼ تطًاهِ ًَیؿی قیءگطا‬
‫‪4‬‬
‫نمره ی اضافی‬
‫لؿوتی اظ ًوطُ ی اضافی ایي فاظ تِ ظیثایی گطافیىی تطًاهِ تؼلك زاضز‪ .‬تطًاهِ ی قوا تایس تا حس اهىاى ‪user friendly‬‬
‫تاقس‪.‬‬
‫لؿوت اصلی ًوطُ اضافی تِ ‪ powerup‬تؼلك زاضز‪ .‬تِ ایي صَضت وِ تؼسازی ‪ٍ item‬جَز زاضًس وِ تا ذَضزى آًْا ّط‬
‫تاًىی ٍیػگی ذاصی پیسا ذَاّس وطز‪ّ item .‬ا تا تطویسى جؼثِ ّا ٍ تا احتوال ‪ % 50‬اظ جؼثِ ذاضج ذَاٌّس قس ٍ جای‬
‫آًْا ذَاٌّس ًكؿت‪(.‬ایي وِ وسام یه اظ ‪ّ powerup‬ا تاقس ًیع تِ صَضت ضًسم ٍ تا احتوال تطاتط تؼییي هیكَز) ّط‬
‫تاًىی تا ٍضٍز تِ آى ذاًِ هیتَاًس آى ‪ item‬ضا وؿة وٌس ٍ ٍیػگی هطتَطِ ضا پیسا وٌس‪ .‬ایي ٍیػگی ّا زائوی ذَاٌّس تَز‪.‬‬
‫ّط وسام اظ ‪ّ powerup‬ا تایس تا ػىؿی هٌاؾة ًكاى زازُ قًَس‪.‬‬
‫ٍ اها ‪ّ powerup‬ای هَجَز زض ایي پطٍغُ‪:‬‬
‫‪ - 1‬لسضت گلَلِ‪ :‬تا گطفتي ایي ‪ item‬گلَلِ ّای تاًه اظ تَی زیَاض ّا ٍ جؼثِ ّا ضز هیكًَس‪ .‬اگط اظ تَی جؼثِ ّا‬
‫ضز قًَس جؼثِ ّا هیتطوٌس ٍ اگط اظ زیَاض ضز قًَس ّیچ اتفالی ًوی افتس ٍ اگط اظ ‪ Trap‬ضز قَز ‪ Trap‬تثسیل‬
‫تِ ظهیي هیكَز ‪ .‬تَجِ وٌیس وِ تیط هاًٌس ذاًِ ّای زیگط تایس ذاًِ ّای جؼثِ ٍ زیَاض ضا طی وٌس‪.‬‬
‫‪ - 2‬ؾطػت گلَلِ‪ :‬تا گطفتي ایي ‪ item‬گلَلِ ّای تاًه زض ّط ًَتت یه ذاًِ ی تیكتط ضا طی هیىٌٌس‪ .‬هثال زض اتتسا‬
‫ایٌگًَِ اؾت وِ گلَلِ ی تاًه ّا زض ّط ًَتت حطوت فمط یه ذاًِ تِ جلَ هیطٍز‪ .‬تا یه تاض ذَضزى ایي‬
‫‪ item‬ایي ػسز تِ ‪ 2‬افعایف هیاتس یؼٌی گلَلِ زض ّط ًَتت ‪ 2‬ذاًِ جلَ هیطٍز ٍ زلیما ّواى ذاصیتْای حطوت‬
‫تِ صَضت ‪ 1‬ذاًِ ‪ 1‬ذاًِ ضا زاضز‪ ،‬هثال اگط تِ زیَاض ترَضز هتَلف هیكَز‪ ٍ .‬تا ذَضزى زٍتاضُ ایي ػسز تِ ‪3‬‬
‫هیطؾس ٍ ّویٌطَض الی آذط‪.‬‬
‫‪ - 3‬تؼساز گلَلِ‪ :‬تا گطفتي ایي ‪ item‬تاًه هیتَاًس یه گلَلِ ی تیكتط تِ صَضت قلیه قسُ ٍ ّوعهاى زاقتِ‬
‫تاقس‪( .‬ایي ػسز زض اتتسا ‪ 1‬اؾت)‪ .‬هثال اگط تاًىی ‪ 2‬تا اظ ایي ‪ّ item‬ا ضا زضیافت وطز‪ .‬هیتَاًس تِ صَضت ّوعهاى‬
‫‪ 3‬گلَلِ قلیه قسُ زاقتِ تاقس‪.‬‬
‫تَجِ وٌیس وِ ‪ّ item‬ا زض صَضت تطذَضز گلَلِ هٌْسم هیكًَس ٍ ّویٌطَض گلَلِ ًیع اظ تیي هیطٍز‪.‬‬
‫نمره بندی‬
‫گطافیه تطًاهِ ٍ اجطای صحیح هحیط ٍیطایف ٍ هحیط تاظی‪ 50 :‬اهتیاظ‬
‫شذیطُ ٍ تاظیاتی اطالػات ًمكِ ‪ 30‬اهتیاظ‬
‫ؾیؿتن هسیطیت ذطا‪ 20 :‬اهتیاظ‬
‫ظیثایی گطافیىی تطًاهِ‪ +10 :‬اهتیاظ‬
‫پطٍغُ ؾطی زٍم زضؼ تطًاهِ ًَیؿی قیءگطا‬
‫‪ +40 :powerup‬اهتیاظ‬
‫‪5‬‬