JAVA_902_HW2.pdf

‫تمرین سری دوم‬
‫درس برنامه نویسی شئگرا‬
‫موعد ارسال‪ :‬جمعه ‪ 91‬اسفند ‪9119‬‬
‫تٌْام حاتوی‬
‫توزیي سزی اٍل تزًاهِ ساسی ضیءگزا‬
‫هْلت تحَیل‪ :‬جمعه ‪ 91‬اسفند ‪9119‬‬
‫نکات کلی‬
‫‪ ‬در ایي توزیي ضوا تزًاهِی اجزایی ًویًَیسیذ ٍ کاری کِ اًجام هیدّیذ‪ ،‬پیادُساسی چٌذ کالس است‪.‬‬
‫‪ ‬هطخصات کلی سَال ایي توزیي تِ ایي ضزح است‪:‬‬
‫توزیي‬
‫نام کالس‬
‫نام فایل‬
‫نمره‬
‫توزیي ‪1‬‬
‫‪Othello‬‬
‫‪Othello.java‬‬
‫‪111‬‬
‫‪ّ ‬ذف ایي توزیي‪ ،‬آسهایص درک ضوا اس هفَْم ضئگزایی ٍ تکارگیزی ایي هفَْم در عول است‪ .‬پس اس ایي‬
‫توزیي ضوا تایذ تزاحتی تتَاًیذ هذلّای سادُ جْاى ٍاقعی را تصَرت ضئگزایی هذل کٌیذ‪.‬‬
‫‪ ‬تزای ارسال توزیي تِ آدرس سیز هزاجعِ کٌیذ‪:‬‬
‫‪http://arsh.co/java902/‬‬
‫تَجِ ًواییذ کِ تایذ یک فایل ‪ .java‬را ارسال ًواییذ‪.‬‬
‫‪ ‬هَعذ تحَیل ساعت ‪ 16:5:‬رٍس جوعِ ‪ 1:‬اسفٌذ تَدُ ٍ تِ ّیچ عٌَاى توذیذ ًخَاّذ ضذ‪.‬‬
‫‪ ‬تأخیز تا ‪ 1‬ساعت‪ ،‬تِ اسای ّز ‪ 3‬دقیقِ هَجة کسز ضذى ‪ً %1‬وزُ‪ ،‬اس ‪ 1‬ساعت تا ‪ 42‬ساعت هَجة کسز ضذى‬
‫‪ً %41‬وزُ‪ ،‬اس ‪ 42‬ساعت تا ‪ 45‬ساعت‪ ،‬تِ اسای ّز ‪ 4‬دقیقِ هَجة کسز ضذى ‪ً %1‬وزُی دیگز ٍ تیي ‪ 45‬ساعت‬
‫تا ‪ 24‬ساعت تاعث کسز ضذى ‪ً %51‬وزُ هیضَد‪ .‬تأخیز تیطتز اس ‪ 24‬ساعت قاتل قثَل ًیست‪.‬‬
‫هَجْی تزای تأخیز ًیستٌذ‪ .‬تٌاتزایي پیطٌْاد هیضَد جَابّای خَد را در دانشکده ارسال کٌیذ‪.‬‬
‫‪ ‬اس آًجایی کِ تصحیح تِ ضکل خَد کار اًجام ضَد در ًتیجِ عذم رعایت ًکات ظزیف هاًٌذ ًام هتذّا ٍ ‪ ...‬هَجة‬
‫اختالل در رًٍذ تصحیح (ٍ ًوزُ) خَاّذ ضذ‪.‬‬
‫‪ ‬تالش تزای استفادُ اس هٌاتع سیستن هاًٌذ کارت صذا ٍ پزیٌتز ٍ ًَضتي تِ فایل ٍ ‪ ...‬هٌجز تِ دریافت ًوزُی‬
‫صفز در ایي توزیي هیضَد‪.‬‬
‫توزیي سزی دٍم تزًاهِ ساسی ضیءگزا‬
‫‪ ‬قطع تَدى ایٌتزًت خَاتگاُ‪ ،‬کٌذی پایگاُ ایٌتزًتی داًطکذُ‪ ،‬توام ضذى کارت ایٌتزًت ٍ … ّیچکذام دلیل‬
‫‪1‬‬
‫‪ ‬کالسّا ٍ هتذّای گفتِ ضذُ در آىّا حذاقلّای السم ّستٌذ‪ .‬یعٌی ضوا هیتَاًیذ تزای راحتتز ضذى پیادُ‪-‬‬
‫ساسیتاى یا ضئگزاتز ضذى کذتاى تِ ایي کالسّا هتذّای ‪ Private‬دیگزی اضافِ کٌیذ یا تِ کل توزیي‬
‫کالسّای دیگزی اضافِ کٌیذ‪ٍ .‬لی دقت داضتِ تاضیذ کِ کالسّای گفتِ ضذُ ٍ هتذّای آًْا تایذ تِ ّویي‬
‫ضکل‪ ،‬هَجَد تاضٌذ‪ .‬تَجِ کٌیذ کِ توام هتغیزّای داخلی ضوا تایذ ‪ Private‬تاضٌذ‪.‬‬
‫‪ ‬سَاالت خَد را در سایت ‪ piazza‬هطزح کٌیذ‪.‬‬
‫‪ً ‬حَُ تحَیل حضَری توزیي هتعاقثاً اعالم خَاّذ ضذ‪.‬‬
‫‪ ‬رعایت آداب ًَضتي تزًاهِ (اس جولِ گذاضتي کاهٌت هٌاسة‪ ،‬اسنگذاری هٌاسة‪ً )... ٍ indention ،‬وزُ خَاّذ‬
‫داضت‪.‬‬
‫تمرین‪:‬‬
‫تزای آضٌایی تیصتز تا تاسی ‪ Othello‬کافی است تِ ‪ WikiPedia‬ایي تاسی هزاجعِ کٌیذ‪.‬‬
‫ایي تاسی‪ ،‬یک تاسی دٍ ًفزُ است‪ .‬اتتذا تاسی تا یک صفحِ خالی کِ تٌْا ‪ 2‬خاًِی ٍسط آى پز است ضزٍع هیضَد‪.‬‬
‫ایي ‪ 2‬خاًِ تِ صَرت یک هزتع ‪ 4‬در ‪ّ 4‬ستٌذ کِ دارای قطز اصلی "‪ ٍ "R‬قطز فزعی "‪ "B‬هیتاضذ‪ .‬اتتذا ًَتت‬
‫تاسیکي قزهش است‪ّ .‬ز تاسیکي در ًَتت خَد تٌْا در خاًِّایی هیتَاًذ هْزُی خَد را تگذارد‪ ،‬کِ هْزُای ّنرًگ‬
‫خَد ّنسطز‪ّ ،‬نستَى یا ّنقطز آى ٍجَد داضتِ تاضذ؛ ٍ ّوچٌیي فاصلِی تیي ایي هْزُ ٍ هْزُی ّنرًگ را فقط‬
‫هْزُّای حزیف پَضاًذُ تاضٌذ‪ .‬تا گذاضتي چٌیي هْزُای توام هْزُّای حزیف هَجَد تیي دٍ هْزُی خَدی تِ‬
‫هْزُّای خَدی تثذیل هیضَد‪ .‬در صَرتی کِ حزکتی تزای اًتخاب ٍجَد ًذاضت‪ًَ ،‬تت تِ فزد هقاتل دادُ هیضَد ٍ‬
‫اگز ّیچ یک اس تاسیکٌاى حزکتی تزای اًتخاب ًذاضتِ تاضٌذ‪ ،‬تاسی توام هیضَد‪.‬‬
‫در تاسی گفتِ ضذُ ضوا تایذ کالسّای سیز را پیادُساسی ًواییذ‪.‬‬
‫توزیي سزی دٍم تزًاهِ ساسی ضیءگزا‬
‫‪4‬‬
‫{‪class Game‬‬
‫;)‪public Game(int n‬‬
‫‪// create a new game with Board that have size n*n‬‬
‫;)(‪public String getTurn‬‬
‫;)"‪// return the type ("R" or "B‬‬
‫‪// game starts with "R" turn‬‬
‫;)‪public boolean play(int i, int j‬‬
‫‪// if the play is possible it returns true else false‬‬
‫‪// place the piece of type turn, in the (i, j) cell of the Board‬‬
public boolean isFinished();
// Say that game is finished or not
public int getScore(String type);
// return the number of board’s cell that is of argument type
// for example number of “B” or “R”
public Board getBoard();
// return Board of the Current Game
}
class Board{
public Board(int n);
// creating a Board that have size n*n
// n would be always even
// for initialization of the board see the wiki of the Othello game
public Board();
// creating a Board that have size 8*8
public boolean setCell(int i, int j, String type);
// 0,0 is the top, left cell
// this function would set type of the piece on the (i, j) place of the board
// if cell[i][j] isn't empty the operation isn't possible
// if the operation isn't possible this function would return false, else it would return true
public boolean changeCell(int i, int j, String type);
// this function would change type of the piece on the (i, j) place of the board
// if cell[i][j] is empty the operation isn't possible
// if the operation isn't possible this function would return false, else it would return true
‫توزیي سزی دٍم تزًاهِ ساسی ضیءگزا‬
public int[][] getPossibleChoices(String type);
// return place of available choices, if it's type turn
3
public String toString();
// this function show the board in String format
// for each row we have one row in output string that contains toString of pieces of
// that row which separated with a space
// for example if n = 4 the output would be something like this:
// "R E B E \nB E E B \nR E E B \nE E E E \n"
};
class Piece{
public Piece();
// make an empty Piece
public void setType(string type);
// set the type of the string
// possible type: "R", "E", "B"
public String toString();
// get the type of the Piece
};
‫توزیي سزی دٍم تزًاهِ ساسی ضیءگزا‬
‫هَفق تاضیذ‬
2