تمرین سری سوم درس برنامه نویسی شیءگرا موعد ارسال :چهارشنبه 1دی 1831 اهیر ضیخْا تمرین سری سوم برنامه سازی شیءگرا مهلت تحویل :چهارشنبه 1دی 1831 نکات کلی در ایي توریي ضوا ترًاهِی قاتل اخرایی ًویًَیسیذ ٍ فقظ چٌذ کالس را پیادُسازی هیکٌیذ. ّ ذف از ایي توریي ،آضٌایی تیطتر تا هفاّین ٍ interface ،exception ،packageکار تیطتر تا هحیظ گرافیکی است. ترای ارسالّ ،وِی فایلّای خَد را در یک فایل تِ ًام STDID.zipقرار دّیذ$ .کِ STDIDضوارُ داًطدَییتاى هیتاضذ #.دقت کٌیذ کِ فایلّای خَد را تذٍى قرار دادى در ّیچ پَضِای در فایل zipقرار دّیذ .در ٍاقغ تایذ داخل فایل zipضوا فقظ پَضِی ٍ irهحتَیات آى قرار داضتِ تاضذ. ترای ارسال توریي تِ آدرس زیر هراخؼِ کٌیذ: http://ce.sharif.edu/~shaikhha/java901 هَػذ ارسال ،ساػت $ 11:5:ظْر #رٍز چْارضٌثِ 1دی 131:تَدُ ٍ تِ ّیچ ػٌَاى توذیذ ًخَاّذ ضذ. تأخیر تا 1ساػت ،تِ ازای ّر 3دقیقِ هَخة کسر ضذى ً "1ورُ ،از 1ساػت تا 42ساػت هَخة کسر ضذى ً "42ورُ ،از 42ساػت تا 45ساػت ،تِ ازای ّر 4دقیقِ هَخة کسر ضذى ً "1ورُی دیگر ٍ تیي 45ساػت تا 21ساػت تاػث کسر ضذى ً "52ورُ هیضَد .تأخیر تیطتر از 21ساػت قاتل قثَل ًیست. قغغ تَدى ایٌترًت خَاتگاُ ،کٌذی پایگاُ ایٌترًتی داًطکذُ ،توام ضذى کارت ایٌترًت ٍ … ّیچکذام دلیل هَخْی ترای تأخیر ًیستٌذ .تٌاترایي پیطٌْاد هیضَد خَابّای خَد را در دانشکده ارسال کٌیذ. ّ رگًَِ رًٍَضت ،1ترای هٌثغ رًٍَضت ٍ ّوچٌیي ًسخِّای رًٍَیسی ضذُ ً -4ورُ در پی خَاّذ داضت .دقت داضتِ تاضیي کِ ها حَاسوَى تِ ّوِ چی ّست! صفر در ایي توریي هیضَد. کالسّا ٍ هتذّای گفتِ ضذُ در آىّا حذاقلّای الزم ّستٌذ .یؼٌی ضوا هیتَاًیذ ترای راحتتر ضذى پیادُ- سازیتاى یا ضیگراتر ضذى کذتاى تِ ایي کالسّا هتذّای دیگری اضافِ کٌیذ یا تِ کل توریي کالسّای دیگری اضافِ کٌیذٍ .لی دقت داضتِ تاضیذ کِ کالسّای گفتِ ضذُ ٍ هتذّای آًْا تایذ تِ ّویي ضکل ،هَخَد تاضٌذ. 1 کپی یا ّواى کُپ توریي سری سَم ترًاهِ سازی ضیءگرا تالش ترای استفادُ از هٌاتغ سیستن هاًٌذ کارت صذا ٍ پریٌتر ٍ ًَضتي تِ فایل ٍ ...هٌدر تِ دریافت ًورُی 1 قسوتی از ًورُ تِ ضیگرا تَدى ترًاهِ ًَضتِ ضذُ تستگی دارد .تٌاترایي تِ ضیگرا ًَضتي ترًاهِتاى دقت کٌیذ. از آًدایی کِ تخطی از ًورُ هرتَط تِ تصحیح خَدکار است ،ػذم رػایت ًکات ظریف هاًٌذ ًام هتذّاً ،ام کالسْا ،صَرت صحیح رضتِّا$اػن از تسرگی ٍ کَچکی کاراکترّا ... ٍ #هَخة اختالل در رًٍذ تصحیح ً ٍ$ورُ# خَاّذ ضذ$ .دقت کٌیذ کِ ایي توریي تصحیح ترخظ ًذارد ٍلی تؼذ از پایاى هْلت ارسال تِ صَرت خَدکار تصحیح هیضَد#. ً حَُی ًورُدّی تِ صَرت زیر هیتاضذ: oتصحیح خَدکار ً "52 ورُ oرػایت اصَل ضیگرایی ٍ آداب ترًاهًَِیسی خاٍا ً "45 ورُ oدادى پیغام هٌاسة تِ ٌّگام ترٍز خغا ً "12 ورُ ٍ oاسظ کارتریً "15 4ورُ سَاالت خَد را تا فرستادى ایویل تِ آدرس [email protected]هغرح کٌیذ. هدذداً دقت داضتِ تاضیذ کِ ها حَاسوَى تِ ّوِ چی ّست! پس فکرای تذتذ ًکٌیي! توریي سری سَم ترًاهِ سازی ضیءگرا 4 4 زیثایی ٍاسظ کارتری ًورُ ًذارد ٍ ،فقظ کارآیی ٍاسظ کارتری ّواىعَر کِ در اداهِ گفتِ خَاّذ ضذ ،هذًظر است. مقدمه در ایي توریي ،ضوا تایذ تازی ضغرًح را پیادُ سازی کٌیذ .ترای اعالػات تیطتر در زهیٌِی ایي تازی هیتَاًیذ تِ آدرس http://en.wikipedia.org/wiki/Chessهراخؼِ فرهائیذ .کلیِی کالسْا ٍ پکیدْای ایي ترًاهِ تایذ داخل پکیح ir.sharif.ce.javaclass.chessتاضٌذ. ترًاهِای کِ هیًَیسیذ تایذ قاتلیت اًدام دادى تازی تصَرت اًساى تا اًساى ٍ َّش هصٌَػی تا َّش هصٌَػی را داضتِ تاضذ. واسط کاربری کلیِی کالسّایی کِ هرتَط تِ ٍاسظ کارتری هیتاضٌذ تایذ داخل پکیح ir.sharif.ce.javaclass.chess.ui تاضٌذّ ٍ$ .وچٌیي کالس ّایی کِ هرتَط تِ ٍاسظ کارتری ًیستٌذ ًثایذ در ایي پکیح تاضٌذ! #دقت کٌیذ کِ ٍاسظ کارتری تٌْا ترای حالت تازی اًساى تا اًساى است ٍ ترای حالت تازی َّش هصٌَػی تا َّش هصٌَػی ًیاز تِ ٍاسظ کارتری ًیست. ضوا تایذ یک راتظ کارتر در ًظر تگیریذ کِ کاتر تتَاًذ تا آى کار کٌذ .ترای ایي کار پیطٌْاد هیضَد از JFrameاستفادُ کٌیذ$.در صَرتیکِ خَاستیذ ،هاًؼی ًذارد کِ از ً Appletیس استفادُ ًوائیذ #.ترای حرکت دادى یک هْرُ ،کارتر تایذ رٍی خاًِ ی آى هْرُ کلیک کٌذ ٍ سپس رٍی هقصذ کلیک کٌذ .در صَرتیکِ هدذداً رٍی ّواى خاًِ کلیک کرد تایذ آى هْرُ از حالت اًتخاب تیرٍى تیایذّ .وچٌیي در صَرتیکِ خارج از صفحِی ضغرًح کلیک کرد ،تایذ آى هْرُ از حالت اًتخاب تیرٍى تیایذ. دقت کٌیذ کِ ٍضؼیت فؼلی تازی $اػن از ًَتت ٍ ایٌکِ تازیکي در حالت کیص ّست یا ًِ #تایذ تِ کارتر ًطاى دادُ ضَد. ایي قسوت در تحَیل حضَری تررسی هیضَد. َّش هصٌَػی کِ تِ تازی ضوا دادُ هیضَد ً$حَُی دادُ ضذى َّش هصٌَػی تِ تازی تؼذاً تَضیح دادُ هیضَد ،#ضی- ای است کِ interfaceزیر را پیادُسازی ) (implementهیکٌذ. { public interface IPlayer ;)public String move(Chess chess } توریي سری سَم ترًاهِ سازی ضیءگرا هوش مصنوعی 3 در ٌّگاهی کِ ًَتت تِ َّش هصٌَػی ترسذ ،ضوا تا فراخَاًی هتذ َّ moveش هصٌَػی ،حرکت هَرد ًظرش را دریافت هیکٌیذ .خرٍخی ایي هتذ یک رضتِ است کِ هطخص هیکٌذ هْرُی درٍىِ چِ خاًِای ،تِ چِ خاًِای ترٍد. ترای هثال اگر خرٍخی ایي هتذ ،رضتِی ” “A2->A4تاضذ ،تایذ هْرُی درٍى خاًِی A2تِ خاًِی A4ترٍدٍ .رٍدی ایي تاتغ یک ضی از خٌس Chessاست کِ ّواى تازی در حال اخراست کِ تؼذاً تَضیح دادُ خَاّذ ضذ$ .دلیل ایٌکِ تایذ ایي گًَِ ٍرٍدی تِ هتذ moveداد ایي است کِ هتذ ،moveدر ٌّگام اخرای یک حرکت ،تایذ هَقؼیت تواهی هْرُّا را تذاًذ#. مهرهها ترای هْرُّا تایذ یک پکیح تحت ًام ir.sharif.ce.javaclass.chess.piecesدر ًظر تگیریذ کِ تایذ در آى یک کالس abstractتحت ًام ٍ Pieceخَد داضتِ تاضذ کِ 4هتذ abstractدارد .ایي هتذّا ػثارتٌذ از$ :پاراهترّای ایي هتذّا تر ػْذُی خَدتاى است#. :draw ایي تاتغ ٍظیفِی رسن هْرُ را تر ػْذُ دارد. :canMoveTo ایي تاتغ آدرس یک خاًِ را هیگیرد ٍ چک هیکٌذ کِ آیا ایي هْرُ هیتَاًذ تِ آى خاًِ ترٍد یا ًًِ$ .یاز تِ پیادُ سازی حرکت ضاُ-قلؼِ ٍ 3ارتقاء سرتازً 2یست# سپس تِ ازای ّر ًَع هْرُ از ضغرًح ،تایذ یک کالس تگیریذ کِ تچِ ایي کالس Pieceتاضذ .ترای ّر ًَع هْرُ ،تایذ هتذ toStringرا overrideکٌیذ کِ خرٍخی آى تصَرت ” “XYهیتاضذً Y .طاىدٌّذُی رًگ هْرُ هیتاضذ $در صَرتیکِ سفیذ تَد ٍ W ،در صَرتیکِ سیاُ تَد B ،خَاّذ تَدًَ ،X ٍ #ع هْرُ هیتاضذ کِ هغاتق تا خذٍل زیر هطخص هیگردد$ :ترای هثال سرتاز سیاُ تصَرت ” ٍ “PBاسة سفیذ تصَرت ” “NWهطخص هیضًَذ#. توریي سری سَم ترًاهِ سازی ضیءگرا 2 اسب فیل وزیر شاه سرباز قلعه (رخ) N B Q K P R خطا ها کلیِی کالسْای هرتَط تِ خغاّا تایذ داخل پکیح ir.sharif.ce.javaclass.chess.exceptionsتاضٌذ. اٍلیي کالسی کِ تایذ در ایي پکیح در ًظر تگیریذ ،کالس ChessExceptionاست کِ تچِی Exceptionهیتاضذ. 3 Castling 2 ٍ :Promotionقتی کِ سرتاز یک تازیکي تِ خاًِی آخر رسیذ ،حق دارد تدای آى یک هْرُی هغلَب تیاٍرد. 5 Exception ترًاهِی ضوا تایذ خغاّای الزم را تِ کارتر تذّذ$ .دقت کٌیذ کِ ایي خغاّا در حالتی کِ 4اًساى تا ّن تازی هی کٌٌذ، تایذ تِ صَرت گرافیکی تِ کارتر ًطاى دادُ ضًَذ ٍ در حالتی کِ َّ 4ش هصٌَػی تا ّن تازی هیکٌٌذ ًثایذ تِ صَرت گرافیکی ًطاى دادُ ضًَذ #خغاّایی کِ پیادُ سازی آًْا ضرٍری است ػثارتٌذ از: حرکت اضتثاُ هْرُّا کیص تَ دى$هَقؼی کِ در حالت کیص تَدى ،حرکتی اًدام دّذ کِ ٌَّز کیص تواًذ یا در ٍضؼیت ػادی، حرکتی کٌذ کِ تِ حالت کیص ترٍد#. پرش از رٍی هْرُّا $ترای هْرُّای غیر اسة!# ػذم رػایت ًَتت خالی تَدى خاًِ زدى هْرُی خَدی#!$ دقت کٌیذ کِ ترای ّر خغا تایذ یک کالس خذاگاًِ تگیریذ کِ تچِی ChessExceptionتاضذ. کالس Chess در ٍاقغ ٍظیفِی ضوا ،پیادُسازی کالسی ّواًٌذ کالس زیر است: {public class Chess public Chess(); // human vs. human game public Chess(IPlayer ai1, IPlayer ai2); // AI vs. AI game ;public void nextMove() throws ChessException ;)(public char getTurn ;)public String getPieceIn(String place } کارتری ًوایص دادُ هیضَد ٍ آهادُی گرفتي حرکت کارتر هیضَد. Constructorدٍم ،ترای حالتی است کِ َّش هصٌَػی تا َّش هصٌَػی تازی هیکٌذ ٍ تَسیلِی دٍ پاراهتر ٍ ai1 ai2آى دٍ َّش هصٌَػی را تِ تازی پاس هیدّین. ترای راحتی هیتَاًیذ از تَاتغ ایستای کالس JOptionPaneاستفادُ کٌیذ. توریي سری سَم ترًاهِ سازی ضیءگرا Constructorاٍل ،ترای حالتی است کِ اًساى تا اًساى تازی هیکٌذ .تا صذا زدُ ضذى ایي ٍ ،constructorاسظ 5 هتذّای تؼذی ترای تست خَدکار ترًاهِ در حالت تازی َّش هصٌَػی تا َّش هصٌَػی هیتاضٌذ ٍ ،ترای حالتی کِ اًساى تا اًساى در حال تازی کردى است ،کاتردی ًذارًذ. هتذ ،nextMoveهتذ moveرا ترای تازیکٌی کِ اکٌَى ًَتت اٍست ،فراخَاًی هیکٌذ .در صَرتیکِ ّر کذام از حالتّای استثٌا رخ دّذ ،هستقل از ًَع خغا ،تایذ یک ChessExceptionحاٍی پیغام ”“Exception for X تیٌذازد کِ در آى Xهطخص کٌٌذُی رًگ هْرُی تازیکٌی است کِ خغا ترای آى رخ دادُ است .ترای هثال اگر ایي خغا ترای تازیکي تا رًگ سفیذ رخ دّذ ،تایذ حاٍی پیغام ” “Exception for Wتاضذ ٍ اگر ترای تازیکي تا رًگ سیاُ رخ دّذ ،تایذ حاٍی پیغام ” “Exception for Bتاضذ. هتذ ،getTurnهطخص هیکٌذ کِ ًَتت کذام تازیکي است .در صَرتیکِ ًَتت تازیکي سیاُ تاضذ ،کاراکتر ’ ٍ ‘Bدر صَرتیکِ ًَتت تازیکي سفیذ تاضذ ،کاراکتر ’ ‘Wرا ترهیگرداًذ. هتذ ،getPieceInایي هتذ هطخص هیکٌذ کِ در خاًِی placeچِ هْرُای قرار دارد .در صَرتیکِ هْرُای در ایي خاًِ قرار داضت ،هقذار خرٍخی ایي هتذّ ،واى هقذار خرٍخی هتذ toStringترای آى هْرُ خَاّذ تَد ٍ در صَرتیکِ هْرُای در ایي خاًِ قرار ًذاضت ،هقذار خرٍخی ترای ایي هتذ “E” ،خَاّذ تَد .دقت کٌیذ کِ رضتِی ،placeرضتِای است کِ کاراکتر اٍل آى ستَى را هطخص هیکٌذ ٍ کاراکتر دٍم آى ،سغر را هطخص هیکٌذ .ترای هثال اگر رضتِی ،palceتصَرت ” “F5تَد ،یؼٌی خاًِی تا ردیف ٍ 5ستَى .Fدقت کٌیذ در ایي هتذ در صَرتیکِ رضتِی هرتَط تِ خاًِی ٍرٍدی ،هداز ًثَد ،هیتَاًیذ از IllegalArgumentExceptionاستفادُ کٌیذ. جمع بندی در ًْایت داضتي کالسْای زیر ترای ایي توریي اخثاری است: Class / Interface Package Chess ir.sharif.ce.javaclass.chess توریي سری سَم ترًاهِ سازی ضیءگرا IPlayer … … ir.sharif.ce.javaclass.chess.ui Piece ir.sharif.ce.javaclass.chess.pieces … 6 more ChessException … 6 more ir.sharif.ce.javaclass.chess.exceptions دقت کٌیذ کِ در ًْایت در صَرتی کِ تازی در حالت َّ 4ش هصٌَػی اخرا ضَدً ،ثایذ هیچ گونه ػولیات گرافیکی اًدام دّذّ .وچٌیي ًیاز تِ پیادُسازی هات نیست. هَفق تاضیذ توریي سری سَم ترًاهِ سازی ضیءگرا 7
© Copyright 2025 Paperzz