Assignment4.pdf

‫ﺑﺮﻧﺎﻣﻪﺳﺎزی ﭘﯿﺸﺮﻓﺘﻪ ﺟﺎوا‬
‫ﻧﯿﻢﺳﺎل اول ‪٩٣-٩٢‬‬
‫ﻣﺪرس‪ :‬ﭘﯿﻤﺎن دوداﻧﮕﻪ‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﺗﻤﺮﯾﻦ ﭼﻬﺎرم‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﯾﻞ ‪ ١٢‬آذر ‪١٣٩٢‬‬
‫‪ .١‬ﻣﻮﻋﺪ ﺗﺤﻮﯾﻞ ﺳﺎﻋﺖ ‪ ۵٩:٢٣‬دﻗﯿﻘﻪ روز ‪ ١٢‬آذر اﺳﺖ و ﺗﻤﺪﯾﺪ ﻧﺨﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ .٢‬ﺑﺎ ﻫﺮﮔﻮﻧﻪ ﺗﻘﻠﺐ ﺑﺮﺧﻮرد ﺟﺪی ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ .٣‬ﻧﺎم ﮐﻼسﻫﺎ و ﺗﻮاﺑﻊ ﺑﺎﯾﺪ دﻗﯿﻘﺎ ﺑﺎ ﻧﺎم ذﮐﺮﺷﺪه در ﺗﻤﺮﯾﻦ ﯾ‬
‫ﺑﺎﺷﺪ‪.‬‬
‫‪ .۴‬در ﺻﻮرت داﺷﺘﻦ ﻫﺮﮔﻮﻧﻪ ﻣﺸ ﻞ‪ ،‬ﺳﻮال ﺧﻮد را ﺑﺎ ﺗﮓ ﻣﻨﺎﺳﺐ در ‪ P iazza‬ﻣﻄﺮح ﮐﻨﯿﺪ‪.‬‬
‫‪١‬‬
‫ﺳﺆال ‪ .١‬ﺷ ﻞﻫﺎ )‪ ۴٠‬اﻣﺘﯿﺎز(‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ ﻣ ﺧﻮاﻫﯿﻢ ﺗﻌﺪادی از اﺷ ﺎل ﻫﻨﺪﺳ و ﺗﻮاﺑﻌ ﻣﺮﺑﻮط ﺑﻪ آنﻫﺎ را ﺑﺎ اﺳﺘﻔﺎده از ارثﺑﺮی و ﭼﻨﺪرﯾﺨﺘ‬
‫ﭘﯿﺎدهﺳﺎزی ﮐﻨﯿﻢ‪ .‬ﺷﺮح ﮐﻼسﻫﺎ و ﻣﺘﺪﻫﺎی آنﻫﺎ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪:‬‬
‫‪class Point‬‬
‫;)‪public Point ( double x, double y‬‬
‫ﯾ‬
‫ﻧﻘﻄﻪ را ﺑﺎ ﮔﺮﻓﺘﻦ ﻣﺨﺘﺼﺎﺗﺶ ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public double getX‬‬
‫ﻃﻮل ﻧﻘﻄﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public double getY‬‬
‫ﻋﺮض ﻧﻘﻄﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)‪public double getDistance (Point point‬‬
‫ﻓﺎﺻﻠﻪ ﻧﻘﻄﻪ را از ﻧﻘﻄﻪ ﮔﺮﻓﺘﻪﺷﺪه در ورودی ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫‪abstract class Shape‬‬
‫;)( ‪public abstract double getArea‬‬
‫اﯾﻦ ﺗﺎﺑﻊ ﻣﺴﺎﺣﺖ اﯾﻦ ﺷ ﻞ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪ .‬دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ اﯾﻦ ﺗﺎﺑﻊ ‪ abstract‬ﺑﻮده و ﺑﺎﯾﺪ در ﺗﻤﺎم ﺑﭽﻪﻫﺎی ﮐﻼس‬
‫‪ Shape‬ﭘﯿﺎدهﺳﺎزی ﺷﻮد‪.‬‬
‫;)( ‪public abstract double getPerimeter‬‬
‫‪٢‬‬
‫ ﺑﻮده و ﺑﺎﯾﺪ در ﺗﻤﺎم ﺑﭽﻪﻫﺎی ﮐﻼس‬abstract ‫ دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ اﯾﻦ ﺗﺎﺑﻊ‬.‫اﯾﻦ ﺗﺎﺑﻊ ﻣﺤﯿﻂ اﯾﻦ ﺷ ﻞ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
.‫ ﭘﯿﺎدهﺳﺎزی ﺷﻮد‬Shape
interface Symmetric
Point getPointOfSymmetry ();
Symmetric ‫ ﺑﻮده و ﺑﺎﯾﺪ در ﺗﻤﺎم ﮐﻼسﻫﺎﯾﯽ ﮐﻪ‬abstract ‫ دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ اﯾﻦ ﺗﺎﺑﻊ‬.‫ﻣﺮﮐﺰ ﺗﻘﺎرن ﺷ ﻞ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
.‫را ﭘﯿﺎدهﺳﺎزی ﻣ ﮐﻨﻨﺪ ﭘﯿﺎدهﺳﺎزی ﺷﻮد‬
class Triangle extends Shape
public Triangle ( Point firstPoint , Point secondPoint , Point thirdPoint );
.‫ﻣﺜﻠﺚ را ﺑﺎ ﮔﺮﻓﺘﻦ ﺳﻪ ﻧﻘﻄﻪ ﻣ ﺳﺎزد‬
‫ﯾ‬
public Point getFirstPoint ();
(.‫ اﺳﺖ‬constructor ‫ ﮔﺮﻓﺘﻪﺷﺪه در‬firstPoint ‫ )ﻧﻘﻄﻪ اول ﻣﺜﻠﺚ ﻫﻤﺎن‬.‫ﻧﻘﻄﻪ اول ﻣﺜﻠﺚ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public Point getSecondPoint ();
(.‫ اﺳﺖ‬constructor ‫ ﮔﺮﻓﺘﻪﺷﺪه در‬secondPoint ‫ )ﻧﻘﻄﻪ دوم ﻣﺜﻠﺚ ﻫﻤﺎن‬.‫ﻧﻘﻄﻪ دوم ﻣﺜﻠﺚ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public Point getThirdPoint ();
(.‫ اﺳﺖ‬constructor ‫ ﮔﺮﻓﺘﻪﺷﺪه در‬thirdPoint ‫ )ﻧﻘﻄﻪ ﺳﻮم ﻣﺜﻠﺚ ﻫﻤﺎن‬.‫ﻧﻘﻄﻪ ﺳﻮم ﻣﺜﻠﺚ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
class Rectangle extends Shape
public Rectangle ( Point topLeftPoint , double length , double width );
٣
.‫ﻣﺴﺘﻄﯿﻞ را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﻘﻄﻪ ﺑﺎﻻ ﺳﻤﺖ ﭼﭗ آن و ﻃﻮل و ﻋﺮض آن ﻣ ﺳﺎزد‬
‫ﯾ‬
public Point getTopLeftPoint ();
.‫ﻧﻘﻄﻪ ﺑﺎﻻ ﺳﻤﺖ ﭼﭗ ﻣﺴﺘﻄﯿﻞ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public double getLength ();
.‫ﻃﻮل ﻣﺴﺘﻄﯿﻞ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public double getWidth ();
.‫ﻋﺮض ﻣﺴﺘﻄﯿﻞ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
class Circle extends Shape implements Symmetric
public Circle ( Point center , double radius );
.‫داﯾﺮه را ﺑﺎ ﮔﺮﻓﺘﻦ ﻣﺮﮐﺰ و ﺷﻌﺎع آن ﻣ ﺳﺎزد‬
‫ﯾ‬
public Point getCenter ();
.‫ﻣﺮﮐﺰ داﯾﺮه را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public double getRadius ();
.‫ﺷﻌﺎع داﯾﺮه را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
۴
‫‪class Trapezoid extends Shape‬‬
‫‪public Trapezoid ( Point topLeftPoint , Point bottomLeftPoint , double‬‬
‫) ‪topSide , double bottomSide‬‬
‫ﯾ‬
‫ذوزﻧﻘﻪ را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﻘﻄﻪ ﺑﺎﻻ ﺳﻤﺖ ﭼﭗ‪ ،‬ﻧﻘﻄﻪ ﭘﺎﯾﯿﻦ ﺳﻤﺖ ﭼﭗ‪ ،‬ﻃﻮل ﻗﺎﻋﺪه ﺑﺎﻻ و ﻃﻮل ﻗﺎﻋﺪه ﭘﺎﯾﯿﻦ آن ﻣ ﺳﺎزد‪.‬‬
‫;)( ‪public Point getTopLeftPoint‬‬
‫ﻧﻘﻄﻪ ﺑﺎﻻ ﺳﻤﺖ ﭼﭗ ذوزﻧﻘﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public Point getBottomLeftPoint‬‬
‫ﻧﻘﻄﻪ ﭘﺎﯾﯿﻦ ﺳﻤﺖ ﭼﭗ ذوزﻧﻘﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public double getTopSide‬‬
‫ﻃﻮل ﻗﺎﻋﺪه ﺑﺎﻻی ذوزﻧﻘﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public double getBottomSide‬‬
‫ﻃﻮل ﻗﺎﻋﺪه ﭘﺎﯾﯿﻦ ذوزﻧﻘﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫‪class EquilateralTriangle extends Triangle implements Symmetric‬‬
‫;)‪public EquilateralTriangle (Point topPoint , double side‬‬
‫ﯾ ﻣﺜﻠﺚ ﻣﺘﺴﺎویاﻻﺿﻼع را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﻘﻄﻪ ﺑﺎﻻی آن و ﻃﻮل ﺿﻠﻊ آن ﻣ ﺳﺎزد‪) .‬دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ دو ﻧﻘﻄﻪ ﭘﺎﯾﯿﻦ‬
‫ﻣﺜﻠﺚ دارای ﻋﺮض ﺑﺮاﺑﺮﻧﺪ و ﻫﻤﭽﻨﯿﻦ ﺗﻮاﺑﻊ )(‪ getSecondPoint() ،getFirstPoint‬و )(‪getThirdPoint‬‬
‫ﮐﻼس ﻣﺜﻠﺚ ﺑﺎﯾﺪ ﺑﻪ ﺗﺮﺗﯿﺐ ﻧﻘﻄﻪ ﺑﺎﻻ‪ ،‬ﻧﻘﻄﻪ ﭘﺎﯾﯿﻦ ﺳﻤﺖ ﭼﭗ‪ ،‬و ﻧﻘﻄﻪ ﭘﺎﯾﯿﻦ ﺳﻤﺖ راﺳﺖ ﻣﺜﻠﺚ ﻣﺘﺴﺎویاﻻﺿﻼع‬
‫را ﺑﺮﮔﺮداﻧﻨﺪ‪(.‬‬
‫‪۵‬‬
public Point getTopPoint ();
.‫ﻧﻘﻄﻪ ﺑﺎﻻی ﻣﺜﻠﺚ ﻣﺘﺴﺎویاﻻﺿﻼع را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public double getSide ();
.‫ﻃﻮل ﺿﻠﻊ ﻣﺜﻠﺚ ﻣﺘﺴﺎویاﻻﺿﻼع را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
class Square extends Rectangle implements Symmetric
public Square ( Point topLeftPoint , double side);
.‫ﻣﺮﺑﻊ را ﺑﺎ ﮔﺮﻓﺘﻦ ﻧﻘﻄﻪ ﺑﺎﻻ ﺳﻤﺖ ﭼﭗ و ﻃﻮل ﺿﻠﻊ آن ﻣ ﺳﺎزد‬
‫ﯾ‬
public double getSide ();
.‫ﻃﻮل ﺿﻠﻊ ﻣﺮﺑﻊ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public class Plain
public Plain ();
.‫ﺻﻔﺤﻪ ﻣ ﺳﺎزد‬
‫ﯾ‬
public Shape [] getShapes ();
(.‫ )ﺗﺮﺗﯿﺐ ﺷ ﻞﻫﺎ درون آراﯾﻪ ﻣﻬﻢ ﻧﯿﺴﺖ‬.‫ﺷ ﻞﻫﺎی درون ﺻﻔﺤﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‬
public void addShape (Shape shape );
۶
‫ﯾ‬
‫ﺷ ﻞ ﻣ ﮔﯿﺮد و آن را ﺑﻪ ﺷ ﻞﻫﺎی درون ﺻﻔﺤﻪ اﺿﺎﻓﻪ ﻣ ﮐﻨﺪ‪.‬‬
‫;)( ‪public double getSumOfAreas‬‬
‫ﻣﺠﻤﻮع ﻣﺴﺎﺣﺖﻫﺎی ﺷ ﻞﻫﺎی درون ﺻﻔﺤﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪) .‬اﺷﺘﺮاک ﺷ ﻞﻫﺎ را در ﻧﻈﺮ ﻧﮕﯿﺮﯾﺪ ﯾﻌﻨ ﻗﺴﻤﺖﻫﺎی‬
‫ﻣﺸﺘﺮک دو ﺑﺎر در ﻣﺠﻤﻮع ﻣ آﯾﻨﺪ(‬
‫;)( ‪public double getSumOfPerimeters‬‬
‫ﻣﺠﻤﻮع ﻣﺤﯿﻂﻫﺎی ﺷ ﻞﻫﺎی درون ﺻﻔﺤﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪.‬‬
‫;)( ‪public Point getCenterOfPointOfSymmetries‬‬
‫ﻣﺮﮐﺰ ﻣﺮﮐﺰﻫﺎی ﺗﻘﺎرن ﺷ ﻞﻫﺎی ﻣﺘﻘﺎرن درون ﺻﻔﺤﻪ را ﺑﺮﻣ ﮔﺮداﻧﺪ‪) .‬ﻣﺮﮐﺰ ﺗﻌﺪادی ﻧﻘﻄﻪ‪ ،‬ﻧﻘﻄﻪاﯾﺴﺖ ﮐﻪ ﻃﻮل آن‬
‫ﻣﯿﺎﻧﮕﯿﻦ ﻃﻮل آنﻫﺎ و ﻋﺮض آن ﻣﯿﺎﻧﮕﯿﻦ ﻋﺮض آنﻫﺎﺳﺖ‪(.‬‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ ﻣ ﺗﻮاﻧﯿﺪ ﻋﻼوه ﺑﺮ ﻣﺘﺪﻫﺎی ﮔﻔﺘﻪ ﺷﺪه از ﻣﺘﺪﻫﺎی دلﺧﻮاه ﺧﻮد اﺳﺘﻔﺎده ﮐﻨﯿﺪ وﻟ ﺑﻪ ﺟﺰ ﻣﺘﺪﻫﺎی‬
‫ﮔﻔﺘﻪﺷﺪه ﻫﻤﻪی ﻓﯿﻠﺪﻫﺎ و ﻣﺘﺪﻫﺎ ﺑﺎﯾﺪ ‪ private‬ﺑﺎﺷﻨﺪ‪) .‬در ﺻﻮرت ‪ private‬ﻧﺒﻮدن آنﻫﺎ از ﺷﻤﺎ ﻧﻤﺮه ﮐﺴﺮ ﺧﻮاﻫﺪ‬
‫ﺷﺪ!(‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ ﺑﺎﯾﺪ ﺗﺎ ﺟﺎی اﻣ ﺎن از ﻣﻔﺎﻫﯿﻢ ارثﺑﺮی و ﭼﻨﺪرﯾﺨﺘ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪.‬‬
‫‪٧‬‬
‫ﺳﺆال ‪ .٢‬ﺑﺎزی ﺣﺎﻓﻈﻪ )‪ ۶٠‬اﻣﺘﯿﺎز(‬
‫در اﯾﻦ ﺗﻤﺮﯾﻦ ﻗﺮار اﺳﺖ ﯾ‬
‫ﺑﺎزی ﺣﺎﻓﻈﻪ را ﺑﻪ ﺻﻮرت ﮔﺮاﻓﯿ‬
‫ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪ ،‬ﺑﺎزی ﺑﻪ اﯾﻦ ﺻﻮرت اﺳﺖ‪:‬‬
‫در اﺑﺘﺪا ﯾ ﺻﻔﺤﻪ ﺑﺎﯾﺪ ﺑﺎز ﺷﻮد ﮐﻪ ﺷﺎﻣﻞ دو ﮔﺰﯾﻨﻪی ﺑﺎزی ﺟﺪﯾﺪ )‪ (New Game‬و ﺧﺮوج )‪ (Exit‬اﺳﺖ‪ .‬ﺑﺎ‬
‫زدن دﮐﻤﻪی ”ﺧﺮوج” ﺑﺎﯾﺪ از ﺑﺎزی ﺧﺎرج ﺷﻮﯾﻢ و ﺻﻔﺤﻪ ﺑﺴﺘﻪ ﺷﻮد‪ .‬ﺑﺎ زدن دﮐﻤﻪی ”ﺑﺎزی ﺟﺪﯾﺪ” ﺑﺎﯾﺪ ﯾ ﺻﻔﺤﻪی‬
‫ﮐﻮﭼ دﯾ ﺮ ﺑﺎز ﺷﻮد ﮐﻪ ﺷﺎﻣﻞ دو ﮔﺰﯾﻨﻪی آﺳﺎن )‪ (Easy‬و ﺳﺨﺖ )‪ (Hard‬اﺳﺖ‪ .‬زﯾﺮ اﯾﻦ دو ﮔﺰﯾﻨﻪ ﯾ دﮐﻤﻪی‬
‫ﺷﺮوع ﺑﺎزی )‪ (Start‬وﺟﻮد دارد‪ .‬ﮐﺎرﺑﺮ ﭘﺲ از اﻧﺘﺨﺎب ﯾ از دو ﮔﺰﯾﻨﻪی ‪ Hard‬ﯾﺎ ‪) Easy‬ﺑﺮای اﯾﻦ ﻗﺴﻤﺖ‬
‫ﻣ ﺗﻮاﻧﯿﺪ از ‪ RadioButton‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ( روی دﮐﻤﻪی ‪ Start‬ﮐﻠﯿ ﻣ ﮐﻨﺪ‪ ،‬ﺑﺎ اﯾﻦ ﮐﺎر دو ﺻﻔﺤﻪی ﻗﺒﻠ ﺑﺴﺘﻪ‬
‫ﻣ ﺷﻮﻧﺪ و ﺻﻔﺤﻪی اﺻﻠ ﺑﺎزی ﺑﺎز ﻣ ﺷﻮد‪:‬‬
‫ﺻﻔﺤﻪی اﺻﻠ ﻓﻘﻂ ﺷﺎﻣﻞ ﯾ ﺑﺮد اﺳﺖ‪ .‬ﺑﺮد ﺑﺎزی ﺑﺮای ﺣﺎﻟﺖ ‪ ۴ ،Easy‬در ‪ ۴‬و ﺑﺮای ﺣﺎﻟﺖ ‪ ۶ ،Hard‬در ‪۶‬‬
‫اﺳﺖ‪) .‬ﺗﻔﺎوت دﯾ ﺮی ﺑﯿﻦ اﯾﻦ دو ﺣﺎﻟﺖ ﻧﯿﺴﺖ( در ﻫﺮ ﺧﺎﻧﻪی اﯾﻦ ﺑﺮد ﯾ ﮐﺎرت ﻋﮑﺲ دار ﻗﺮار دارد ﮐﻪ در‬
‫ﺣﺎﻟﺖ اوﻟﯿﻪ رو ﺑﻪ ﭘﺸﺖ اﺳﺖ )ﺗﺼﻮﯾﺮ آن ﻣﻌﻠﻮم ﻧﯿﺴﺖ(‪ ،‬ﺑﺎ ﮐﻠﯿ ﮐﺮدن ﮐﺎرﺑﺮ روی ﻫﺮ ﮐﺎرت ﺑﺎﯾﺪ ﺗﺼﻮﯾﺮ روی آن‬
‫ﻣﺸﺨﺺ ﺷﻮد‪ ،‬اﯾﻦ ﺗﺼﻮﯾﺮ ﺗﺎ زﻣﺎﻧﯿ ﻪ ﺑﺎزﯾ ﻦ روی ﯾ ﮐﺎرت دﯾ ﺮ ﮐﻠﯿ ﮐﻨﺪ ﺑﺎﻗ ﻣ ﻣﺎﻧﺪ‪ ،‬ﺑﺎ ﮐﻠﯿ روی ﮐﺎرت‬
‫دوم ﺑﺎﯾﺪ ﺗﺼﻮﯾﺮ آن ﻫﻢ ﻣﺸﺨﺺ ﺷﻮد‪ .‬اﮔﺮ ﺗﺼﻮﯾﺮ دو ﻋﮑﺲ ﯾ ﺴﺎن ﺑﻮد‪ ،‬ﺗﺼﻮﯾﺮ ﻫﺮ دو ﮐﺎرت ﺛﺎﺑﺖ ﻣ ﺷﻮﻧﺪ و‬
‫ﺗﺎ ﭘﺎﯾﺎن ﺑﺎزی ﻣﺸﺨﺺ ﻣ ﻣﺎﻧﻨﺪ‪ ،‬در ﻏﯿﺮ اﯾﻨﺼﻮرت‪ ،‬ﺗﺼﻮﯾﺮ ﻫﺮ دو ﮐﺎرت ﭘﻨﻬﺎن ﻣ ﺷﻮد و ﺑﺎزی ﺑﻪ ﻫﻤﯿﻦ ﺻﻮرت‬
‫اداﻣﻪ ﻣ ﯾﺎﺑﺪ‪ .‬وﻗﺘ ﺗﺼﻮﯾﺮ ﻫﻤﻪی ﮐﺎرتﻫﺎی ﺻﻔﺤﻪ ﺛﺎﺑﺖ ﺷﻮﻧﺪ ﺑﺎزی ﺗﻤﺎم ﻣ ﺷﻮد‪ ،‬ﻋﺒﺎرت ”!‪ ”You Win‬ﭼﺎپ‬
‫ﻣ ﺷﻮد و ﺻﻔﺤﻪ ﺑﺴﺘﻪ ﻣ ﺷﻮد‪) .‬ﺑﺮﻧﺎﻣﻪ ﭘﺎﯾﺎن ﻣ ﯾﺎﺑﺪ(‬
‫)اﮔﺮ ﺑﺎزﯾ ﻦ ﻧﺨﻮاﻫﺪ ﺑﺎزی را ﺗﺎ ﭘﺎﯾﺎن اداﻣﻪ دﻫﺪ ﻣ ﺗﻮاﻧﺪ ﺑﺎ ﮐﻠﯿ‬
‫ﺻﻔﺤﻪ‪ ،‬ﺑﺎزی را ﺑﺒﻨﺪد‪ .‬ﻣﺜﻞ ﻫﻤﻪی ﺑﺮﻧﺎﻣﻪﻫﺎ!(‬
‫روی دﮐﻤﻪی ﺿﺮﺑﺪر در ﮔﻮﺷﻪی راﺳﺖ و ﺑﺎﻻی‬
‫راﻫﻨﻤﺎﯾﯽ‪ :‬ﺑﺮای ﺳﺎﺧﺘﻦ ﺻﻔﺤﻪﻫﺎ از ‪ JFrame‬در ﮐﺘﺎﺑﺨﺎﻧﻪی ‪ Swing‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪ ،‬دﮐﻤﻪﻫﺎ را ﺑﺎ ‪ JButton‬ﺑﺴﺎزﯾﺪ‪.‬‬
‫;)"‪JFrame frame = new JFrame (" Memory Game‬‬
‫;) ‪frame . setBounds (int x, int y, int width , int height‬‬
‫;) ‪frame . setDefaultCloseOperation ( JFrame . EXIT_ON_CLOSE‬‬
‫;)( ‪JButton button = new JButton‬‬
‫;) ‪button . setBounds (int x, int y, int width , int height‬‬
‫;) ‪frame .add( button‬‬
‫;)‪button . setVisible (true‬‬
‫;)‪frame . setVisible (true‬‬
‫ﺑﺮای ﺳﺎﺧﺘﻦ ﺻﻔﺤﻪی اﺻﻠ ﺑﺎزی ﯾ ﮐﻼس ‪ Board‬ﺑﺴﺎزﯾﺪ ﮐﻪ از ﯾ آراﯾﻪی دو ﺑﻌﺪی از ﮐﻼس ‪ Card‬ﺳﺎﺧﺘﻪ‬
‫ﺷﺪه اﺳﺖ‪ .‬ﮐﻼس ‪ Card‬ﺑﺎﯾﺪ ﻓﺮزﻧﺪ ‪ JButton‬ﺑﺎﺷﺪ‪ .‬ﺑﺮای ﻫﺮ ﯾ از ﮐﺎرتﻫﺎ ﺑﺎﯾﺪ دو ﻋﮑﺲ در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ ﮐﻪ‬
‫ﯾ ﺑﺮای ﺣﺎﻟﺖ ﭘﺸﺖ ﮐﺎرت و ﯾ ﺑﺮای ﺗﺼﻮﯾﺮ روی آن اﺳﺖ‪) .‬ﺑﺎ ﮐﻠﯿ روی اﯾﻦ ﮐﺎرتﻫﺎ ﺑﺎﯾﺪ ﺗﺼﻮﯾﺮ دوم ﺑﻪ‬
‫ﺟﺎی ﺗﺼﻮﯾﺮ اول ﺳﺖ ﺷﻮد(‬
‫;)"‪button . setIcon (new ImageIcon ("ax.jpg‬‬
‫ﺑﺮای اﯾﻨﮑﻪ ﺑﺎ ﮐﻠﯿ ﮐﺮدن روی آنﻫﺎ ﭼﻪ اﺗﻔﺎﻗ ﺑﯿﺎﻓﺘﺪ از ‪ ActionListener‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﻣ ﺗﻮاﻧﯿﺪ‬
‫‪ ActionListener‬را در اﯾﻨﺠﺎ ﺑﻪ ﺻﻮرت ‪ Anonymous Class‬ﺗﻌﺮﯾﻒ ﮐﻨﯿﺪ‪ ،‬و ﭼﻮن ‪ ActionListener‬ﯾ‬
‫‪٨‬‬
‫‪ interface‬اﺳﺖ ﺑﺎﯾﺪ ﺗﺎﺑﻊ ‪ actionPerformed‬آن را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪:‬‬
‫{)( ‪button . addActionListener (new ActionListener‬‬
‫‪@Override‬‬
‫{) ‪public void actionPerformed ( ActionEvent actionEvent‬‬
‫‪// do the work‬‬
‫}‬
‫;)}‬
‫ﺗﻮﺟﻪ‪ :‬در اﯾﻦ ﺗﻤﺮﯾﻦ ﮔﺮاﻓﯿ ﭘﯿﺎده ﺳﺎزی ﺷﺪهی ﺷﻤﺎ از ‪ ١‬ﺗﺎ ‪ ٢٠‬ﻧﻤﺮه ﻣ ﺗﻮاﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ ﮐﻪ ﺑﺴﺘﮕ ﺑﻪ ﭼ ﻮﻧﮕ‬
‫ﭘﯿﺎده ﺳﺎزی و زﯾﺒﺎﯾﯽ آن دارد‪ ،‬اﻧﺘﺨﺎب ﺗﺼﺎوﯾﺮ و آراﯾﺶ ﺻﻔﺤﺎت ﺑﺎزی را ﺑﻪ ﺳﻠﯿﻘﻪی ﺧﻮدﺗﺎن اﻧﺠﺎم دﻫﯿﺪ‪.‬‬
‫‪٩‬‬