AP_Project.pdf

‫ﺑﻪ ﻧﺎم ﺧﺎﻟﻖ ﻫﺴﺘﻲ‬
‫ﺑﻪ ﻳﺎد ﺳﺎﻻر ﺷﻬﻴﺪان‬
‫ﺑﺮﻧﺎﻣﻪﺳﺎزي ﭘﻴﺸﺮﻓﺘﻪ‬
‫‪Advanced Programming‬‬
‫داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﺪرس‪ :‬آرش ﺗﻮﻛﻞ‬
‫ﺗﻌﺮﻳﻒ ﭘﺮوژه ﭘﺎﻳﺎﻧﻲ‬
‫ﻗﺒﻞ از ﻣﻄﺎﻟﻌﻪي ﺗﻮﺿﻴﺤﺎت ﭘﺮوژه ﻟﻄﻔﺎ ﻣﻮارد زﻳﺮ را ﺑﻪ دﻗﺖ ﻣﻄﺎﻟﻌﻪ ﻛﻨﻴﺪ‪:‬‬
‫• ﻣﻲﺗﻮاﻧﻴﺪ ﭘﺮوژه را در ﮔﺮوهﻫﺎي ﺗﻚ ﻧﻔﺮه ﻳﺎ دو ﻧﻔﺮه اﻧﺠﺎم ﺑﺪﻫﻴﺪ‪ .‬اﺳﺎﻣﻲ اﻋﻀﺎي ﮔﺮوه ﺑﺎﻳﺪ ﺑﻮﺳﻴﻠﻪي ﻧﺎﻣﻪ‬
‫اﻟﻜﺘﺮوﻧﻴﻚ ﺣﺪاﻛﺜﺮ ﺗﺎ ﺳﺎﻋﺖ ‪ 9‬ﺷﺐ ﻳﻜﺸﻨﺒﻪ ‪ 1391/9/12‬ﺑﻪ آدرس ‪ [email protected]‬ارﺳﺎل‬
‫ﺷﻮد‪ .‬ﻋﻨﻮان ﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ »اﻋﻀﺎي ﮔﺮوه« ﺑﺎﺷﺪ و ﻣﺘﻦ آن ﻧﺎم و ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ اﻋﻀﺎي ﮔﺮوه‪ .‬اﻓﺮادي ﻛﻪ در‬
‫ﻣﻬﻠﺖ ﻣﻘﺮر اﺳﺎﻣﻲ آﻧﻬﺎ در ﻫﻴﭻ ﮔﺮوﻫﻲ ﻗﺮار ﻧﮕﺮﻓﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت ﺗﻚ ﻧﻔﺮه ﭘﺮوژه ﺧﻮد را اﻧﺠﺎم ﺑﺪﻫﻨﺪ‪.‬‬
‫• ﻣﻬﻠﺖ ارﺳﺎل ﻣﺴﺘﻨﺪات و ﻧﺘﺎﻳﺞ ﻓﺎز اول ﺣﺪاﻛﺜﺮ ﺗﺎ ﺳﺎﻋﺖ ‪ 9‬ﺷﺐ ﺳﻪﺷﻨﺒﻪ ‪ 91/9/21‬اﺳﺖ‪.‬‬
‫‪ o‬ﻣﺴﺘﻨﺪات و ﻧﺘﺎﻳﺞ را در ﻳﻚ ﭘﻮﺷﻪ ﺑﺎ ﻧﺎم ‪ Project_Phase1_stdID1_stdID2‬ﻗﺮار دﻫﻴﺪ و آن را‬
‫ﻓﺸﺮده ﻛﻨﻴﺪ‪.‬‬
‫‪ o‬دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮ ﻧﻮع ﻓﺎﻳﻞ اﺟﺮاﻳﻲ )‪ (.exe‬را از اﻳﻦ ﭘﻮﺷﻪ ﺣﺬف ﻛﻨﻴﺪ‪ .‬در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻧﺎﻣﻪ ﺷﻤﺎ‬
‫ﺑﻪ ﻃﻮر ﺧﻮدﻛﺎر ﺗﻮﺳﻂ ﮔﻮﮔﻞ ﺑﺮﮔﺸﺖ داده ﻣﻲﺷﻮد‪.‬‬
‫‪ o‬ﻓﺎﻳﻞ ﻓﺸﺮده ﺷﺪه را در ﻧﺎﻣﻪاي ﺑﺎ ﻋﻨﻮان »ﻣﺴﺘﻨﺪات ﻓﺎز اول ﭘﺮوژه ‪ +‬ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ اﻋﻀﺎي ﮔﺮوه«‬
‫ﺑﻪ آدرس ‪ [email protected]‬ارﺳﺎل ﻛﻨﻴﺪ‪.‬‬
‫‪ o‬ﺗﻤﺎم ﻣﺴﺘﻨﺪات ارﺳﺎل ﺷﺪه ﺑﻌﺪ از ﺳﺎﻋﺖ ‪ 9‬ﺷﺐ ﻣﺸﻤﻮل ﻳﻚ روز ﺗﺄﺧﻴﺮ ﺧﻮاﻫﻨﺪ ﺷﺪ‪.‬‬
‫• ﻣﻬﻠﺖ ارﺳﺎل ﻣﺴﺘﻨﺪات و ﻧﺘﺎﻳﺞ ﻓﺎز دوم ﺣﺪاﻛﺜﺮ ﺗﺎ ﺳﺎﻋﺖ ‪ 9‬ﺷﺐ ﺳﻪﺷﻨﺒﻪ ‪ 91/11/3‬اﺳﺖ‪.‬‬
‫‪ o‬ﻣﺴﺘﻨﺪات و ﻧﺘﺎﻳﺞ را در ﻳﻚ ﭘﻮﺷﻪ ﺑﺎ ﻧﺎم ‪ Project_Phase2_stdID1_stdID2‬ﻗﺮار دﻫﻴﺪ و آن را‬
‫ﻓﺸﺮده ﻛﻨﻴﺪ‪.‬‬
‫‪ o‬دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮ ﻧﻮع ﻓﺎﻳﻞ اﺟﺮاﻳﻲ )‪ (.exe‬را از اﻳﻦ ﭘﻮﺷﻪ ﺣﺬف ﻛﻨﻴﺪ‪ .‬در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻧﺎﻣﻪ ﺷﻤﺎ‬
‫ﺑﻪ ﻃﻮر ﺧﻮدﻛﺎر ﺗﻮﺳﻂ ﮔﻮﮔﻞ ﺑﺮﮔﺸﺖ داده ﻣﻲﺷﻮد‪.‬‬
‫‪ o‬ﻓﺎﻳﻞ ﻓﺸﺮده ﺷﺪه را در ﻧﺎﻣﻪاي ﺑﺎ ﻋﻨﻮان »ﻣﺴﺘﻨﺪات ﻓﺎز دوم ﭘﺮوژه ‪ +‬ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ اﻋﻀﺎي ﮔﺮوه«‬
‫ﺑﻪ آدرس ‪ [email protected]‬ارﺳﺎل ﻛﻨﻴﺪ‪.‬‬
‫• ﺗﺎرﻳﺦ ﺗﺤﻮﻳﻞ ﺣﻀﻮري ﻫﺮ دو ﻓﺎز ﻣﺘﻌﺎﻗﺒﺎً اﻋﻼم ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫• درﺧﻂ او‪‬ل ﻫﺮﻳﻚ از ﻓﺎﻳﻠﻬﺎي ﻛﺪ )‪ .h‬ﻳﺎ ‪ (.cpp‬ﺑﺎﻳﺪ ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ اﻋﻀﺎي ﮔﺮوه در ﻗﺎﻟﺐ زﻳﺮ ﻧﻮﺷﺘﻪ ﺷﻮد‪:‬‬
‫‪//IDs: First Member Student ID, Second Member Student ID‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺤﺎت ﺑﺮاي ﻗﺴﻤﺖﻫﺎي ﻣﺨﺘﻠﻒ ﻛﺪ و ﻧﺎمﮔﺬاري ﻣﻨﺎﺳﺐ ﻣﺘﻐﻴﺮﻫﺎ‪ ،‬ﻛﻼسﻫﺎ و ﺗﻮاﺑﻊ اﺻﻠﻲ را‬
‫ﻓﺮاﻣﻮش ﻧﻜﻨﻴﺪ‪ .‬اراﺋﻪي ﺗﻮﺿﻴﺤﺎت درون ﻛﺪ ﺑﺨﺶ ﻣﻬﻤﻲ از ﻧﻤﺮه ﭘﺮوژه ﺷﻤﺎ را ﺗﺸﻜﻴﻞ ﻣﻲدﻫﺪ‪.‬‬
‫ﺑﻪ ازاي ﻫﺮ روز ﺗﺄﺧﻴﺮ در ارﺳﺎل ﻣﺴﺘﻨﺪات ﻓﺎزﻫﺎ‪ %20 ،‬ازﻧﻤﺮه ﻛﻞ ﻫﺮ ﻓﺎز ﻛﺴﺮ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﻫﺮﮔﻮﻧﻪ ﺗﺸﺎﺑﻪ ﻏﻴﺮ ﻣﻨﻄﻘﻲ )!!!( ﻳﺎ ﺗﻘﻠﺐ در ﺗﻮﻟﻴﺪ ﻣﺴﺘﻨﺪات و ﻛﺪﻫﺎي ﭘﺮوژه ﺳﺒﺐ از دﺳﺖ دادن ﺗﻤﺎم ﻧﻤﺮه‬
‫ﭘﺮوژه و ﺿﺮب ﺷﺪن ﻧﻤﺮه ﻛﻞ ﺷﻤﺎ در ‪ 0,75‬ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﻫﺮﮔﻮﻧﻪ ﺳﺆال در ﻣﻮرد ﭘﺮوژه را ﺑﺎﻋﻨﻮان »ﭘﺮوژه« ﺑﻪ آدرس ﮔﺮوه ارﺳﺎل ﻛﻨﻴﺪ‪.‬‬
‫‪[email protected]‬‬
‫ﻟﻄﻔﺎ ﺑﻪ ﺑﺮﻧﺎﻣﻪ زﻣﺎنﺑﻨﺪي دﻗﺖ ﻛﻨﻴﺪ‪:‬‬
‫ﻓﺎز‬
‫ﺗﻌﻴﻴﻦ اﻋﻀﺎي ﮔﺮوه‬
‫ﺗﺤﻮﻳﻞ اﻟﻜﺘﺮوﻧﻴﻚ‬
‫ﻣﺴﺘﻨﺪات ﻓﺎز اول‬
‫ﻣﺴﺘﻨﺪات ﻗﺎﺑﻞ ﺗﺤﻮﻳﻞ‬
‫• ﻧﺎم و ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ‬
‫اﻋﻀﺎي ﮔﺮوه‬
‫•‬
‫•‬
‫‪UML Class Diagram‬‬
‫‪UML Activity‬‬
‫‪Diagram‬‬
‫ﺗﺎرﻳﺦ‬
‫‪ 9‬ﺷﺐ ﻳﻜﺸﻨﺒﻪ ‪ • 1391/9/12‬ﺑﺎﻳﺪ ﭘﺮوژه را ﺑﻪ ﺻﻮرت‬
‫اﻧﻔﺮادي اﻧﺠﺎم ﺑﺪﻫﻴﺪ‪.‬‬
‫‪ 9‬ﺷﺐ ﺳﻪﺷﻨﺒﻪ‬
‫‪1391/9/21‬‬
‫• ﻫﺮ روز ﺗﺄﺧﻴﺮ ﺳﺒﺐ‬
‫ﻛﺴﺮ ‪ %20‬از ﻧﻤﺮهي‬
‫اﻳﻦ ﻓﺎز ﻣﻲﺷﻮد‬
‫‪ 9‬ﺷﺐ ﺳﻪﺷﻨﺒﻪ‬
‫‪1391/11/3‬‬
‫• ﻫﺮ روز ﺗﺄﺧﻴﺮ ﺳﺒﺐ‬
‫ﻛﺴﺮ ‪ %20‬از ﻧﻤﺮهي‬
‫اﻳﻦ ﻓﺎز ﻣﻲﺷﻮد‬
‫• ﭘﻴﺎدهﺳﺎزي ﻛﻼسﻫﺎ و‬
‫ﻣﻨﻄﻖ ﻛﻠﻲ ﭘﺮوژه ﺑﺪون‬
‫واﺳﻂ ﮔﺮاﻓﻴﻜﻲ‬
‫ﺗﺤﻮﻳﻞ اﻟﻜﺘﺮوﻧﻴﻚ‬
‫ﻣﺴﺘﻨﺪات ﻓﺎز دوم‬
‫• ﻛﺪ ﻛﺎﻣﻞ ﭘﺮوژه ﺷﺎﻣﻞ‪:‬‬
‫‪ o‬واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ‬
‫‪ o‬ﭘﻴﺎدهﺳﺎزي ﻛﺎﻣﻞ‬
‫ﻣﻨﻄﻖ ﺑﺎزي‬
‫‪ o‬ﭘﻴﺎدهﺳﺎزي ﻋﺎﻣﻞ‬
‫ﺑﺎزي ﺧﻮدﻛﺎر‬
‫‪ o‬ﭘﻴﺎدهﺳﺎزي اﻣﻜﺎن‬
‫ذﺧﻴﺮه و ﺑﺎرﮔﺬاري‬
‫ﺑﺎزي‬
‫• دﻳﺎﮔﺮاﻣﻬﺎي ﻃﺮاﺣﻲ در‬
‫ﺻﻮرت اﻳﺠﺎد ﺗﻐﻴﻴﺮ در‬
‫ﺳﺎﺧﺘﺎر ﻛﻼسﻫﺎ و‬
‫ﻣﻨﻄﻖ ﺑﺮﻧﺎﻣﻪ‬
‫ﻧﺘﻴﺠﻪ ﺗﺄﺧﻴﺮ‬
‫• ﻋﺪم ﺗﺤﻮﻳﻞ ﻣﺴﺘﻨﺪات‬
‫ﻓﺎز دوم ﺳﺒﺐ ﻣﺮدودي‬
‫ﺷﻤﺎ در درس ﺧﻮاﻫﺪ‬
‫ﺷﺪ‬
‫ﭘﻴﺎده ﺳﺎزي ﺑﺎزي ﺷﻄﺮﻧﺞ‬
‫ﻫﺪف از اﻧﺠﺎم اﻳﻦ ﭘﺮوژه‪ ،‬ﻃﺮاﺣﻲ و ﭘﻴﺎدهﺳﺎزي ﻳﻚ ﻧﺮماﻓﺰار ﮔﺮاﻓﻴﻜﻲ ﺑﺮاي اﺟﺮاي ﺑﺎزي ﺷﻄﺮﻧﺞ اﺳﺖ‪ .‬ﻣﻨﻄﻖ اﻳﻦ ﺑﺮﻧﺎﻣﻪ‬
‫ﺑﺎﻳﺪ ﺑﺎ اﺳﺘﻔﺎده از اﻣﻜﺎﻧﺎت ﺷﻲءﮔﺮاﻳﻲ ﭘﻴﺎدهﺳﺎزي ﺷﻮد‪ .‬در ﻃﺮاﺣﻲ ﻛﻼسﻫﺎ و رواﺑﻂ ﺑﻴﻦ آﻧﻬﺎ ﺑﺎﻳﺪ اﺻﻮل ﺷﻲء ﮔﺮاﻳـﻲ‬
‫)ﭼﻨﺪرﻳﺨﺘﻲ‪ ،‬وراﺛﺖ و ‪ (Encapsulation‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه ﺑﺎﺷﺪ‪ .‬ﺗﻮﺿﻴﺤﺎت ﺑﻴﺸﺘﺮ در اداﻣﻪ ﻣﻲآﻳﺪ‪.‬‬
‫ﻣﻘﺮرات ﺑﺎزي‬
‫‪ .1‬ﺗﻤﺎم ﻣﻬﺮهﻫﺎي ﺷﻄﺮﻧﺞ‪ ،‬ﻣﺸﺨﺼﺎت ﺻﻔﺤﻪي ﺷﻄﺮﻧﺞ و ﻣﻜﺎن اوﻟﻴﻪي ﻣﻬﺮهﻫﺎ ﺑﺎﻳﺪ ﻣﻄﺎﺑﻖ ﺑﺎ ﻗﻮاﻧﻴﻦ اراﺋﻪ ﺷﺪه در‬
‫ﻣﺎدهي ‪ 2‬در ﻣﺮﺟﻊ ]‪ [1‬ﭘﻴﺎدهﺳﺎزي ﺷﻮﻧﺪ‪.‬‬
‫‪ .2‬ﺗﻤﺎم ﺣﺮﻛﺖﻫﺎي ﻗﺎﻧﻮﻧﻲ ﺑﺎزي ﺷﻄﺮﻧﺞ ﺑﺮاي ﺗﻤﺎم ﻣﻬﺮهﻫﺎ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮد‪.‬‬
‫أ‪ .‬ﺑﺮاي اﻃﻼع از اﻧﻮاع ﺣﺮﻛﺖﻫﺎي ﻗﺎﻧﻮﻧﻲ ﻫﺮ ﻣﻬﺮه ﺑﻪ ﻣﺎدهي ‪ 3‬در ﻣﺮﺟﻊ ]‪ [1‬ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫ب‪ .‬ﻣﺤﺪودﻳﺖ ﻫﺎي ﺣﺮﻛﺖ ﻫﺮ ﻣﻬﺮه را دﻗﻴﻘﺎ ﻣﻄﺎﺑﻖ ﻣﺎدهي ‪ 3‬ﭘﻴﺎدهﺳﺎزي ﻛﻨﻴـﺪ‪) .‬ﻣـﺜﻼ ﺣﺮﻛـﺖ »ﻗﻠﻌـﻪ‬
‫رﻓﺘﻦ«‪ ،‬اﻧﻮاع ﻣﺨﺘﻠﻒ آن و ﺷﺮاﻳﻄﻲ ﻛﻪ اﻳﻦ ﺣﺮﻛﺖ ﻣﻲ ﺗﻮاﻧﺪ اﻧﺠﺎم ﺷﻮد(‪.‬‬
‫‪ .3‬ﻫﻤﻪي ﺷﺮاﻳﻂ ﻣﻤﻜﻦ ﺑﺮاي ﭘﺎﻳﺎن ﻳﺎﻓﺘﻦ ﺑﺎزي را ﻣﻄﺎﺑﻖ ﺑﺎ ﺗﻮﺿﻴﺤﺎت ﻣﺎدهي ‪ 5‬از ﻣﺮﺟﻊ ]‪ [1‬ﭘﻴﺎدهﺳﺎزي ﻛﻨﻴﺪ‪.‬‬
‫اﻟﺒﺘﻪ در ﻣﺎدهي ‪ 5‬ﺑﺮﺧﻲ از ﻗﻮاﻋﺪ ﺑﻪ ﺻﻮرت ﻏﻴﺮ اﺟﺒﺎري اﻳﺮاد ﺷﺪه‪ ،‬اﻣﺎ ﺷﻤﺎ ﻫﻤـﻪي آﻧﻬـﺎ را اﺟﺒـﺎري در ﻧﻈـﺮ‬
‫ﺑﮕﻴﺮﻳﺪ‪.‬‬
‫ﻣﺜﺎل اول‪ :‬اﮔﺮ ﭘﻮزﻳﺴﻴﻮﻧﻰ ﻳﻜﺴﺎن‪ ،‬ﺣﺪاﻗﻞ ﺳﻪ ﺑﺎر )ﻧﻪ ﻟﺰوﻣﺎً ﺑﺎ ﺗﻜﺮار ﻣﺘﻮاﻟﻰ ﺣﺮﻛﺘﻬﺎ( ﺗﻜﺮار ﺷﻮد‪ ،‬ﺑﺎزي ﻣﻲﺗﻮاﻧﺪ‬
‫ﻣﺴﺎوي ﺷﻮد‪ .‬اﻳﻦ ﻗﺎﻋﺪه را ﺷﺮط ﺣﺘﻤﻲ ﭘﺎﻳﺎن ﺑﺎزي در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ و از ﻗﻴﺪ »ﻣﻲﺗﻮاﻧﺪ« ﺻﺮﻓﻨﻈﺮ ﻛﻨﻴﺪ‪.‬‬
‫‪ .4‬اﻣﻜﺎن ﺑﺎزي زﻣﺎندار و ﺑﺪون زﻣﺎن را ﻓﺮاﻫﻢ ﻛﻨﻴﺪ‪ ) .‬ﺑﺮاي ﻣﺜﺎل در اﺑﺘﺪا زﻣﺎن ﻣﺸﺨﺼﻲ ﺑﺮاي ﻛﻞ ﺑﺎزي ﺗﻌﻴـﻴﻦ‬
‫ﺷﻮد و ﻫﺮﮔﺎه زﻣﺎن ﺑﺎزﻳﻜﻨﻲ ﺑﻪ اﺗﻤﺎم ﺑﺮﺳﺪ‪ ،‬ﺑﺎزي را واﮔﺬار ﻣﻲ ﻛﻨﺪ(‪.‬‬
‫ﻣﺸﺨﺼﺎت ﻧﺮماﻓﺰار ﺷﻤﺎ‬
‫‪ .1‬ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ ﺑﺎﻳﺪ ﺑﺎ اﺳﺘﻔﺎده از ‪ Windows Forms‬ﻣﺤﻴﻂ ﮔﺮاﻓﻴﻜﻲ ﻻزم را ﺑﺮاي ﺑﺎزي ﻓﺮاﻫﻢ ﻛﻨﺪ‪ .‬ﺧﺼﻮﺻﻴﺎت‬
‫اﻳﻦ ﻣﺤﻴﻂ ﮔﺮاﻓﻴﻜﻲ در اداﻣﻪ ﻣﻲآﻳﺪ‪:‬‬
‫• ﻣﻮﻗﻌﻴﺖ ﺟﺎري ﻣﻬﺮهﻫﺎ در ﺻﻔﺤﻪ ﺷﻄﺮﻧﺞ ﺑﺎﻳﺪ در ﻫﺮ ﻟﺤﻈﻪ از ﺑﺎزي ﻣﺸﺨﺺ ﺑﺎﺷﺪ‪.‬‬
‫• زﻣﺎن ﻫﺮ ﺑﺎزﻳﻜﻦ ﺑﺎﻳﺪ ﻧﺸﺎن داده ﺷﻮد‪.‬‬
‫• در ﻫﺮ ﻟﺤﻈﻪ از ﺑﺎزي ﺑﺎﻳﺪ ﺑﺎزﻳﻜﻨﻲ ﻛﻪ ﻧﻮﺑﺖ ﺣﺮﻛﺖ ﺑﺎ اوﺳﺖ‪ ،‬ﻣﺸﺨﺺ ﺷﻮد‪.‬‬
‫• اﻣﻜﺎن ﺣﺮﻛﺖ ﻣﻬﺮهﻫﺎ ﺑﻮﺳﻴﻠﻪ ﻣﻮس و ﻛﻴﺒﺮد وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫• ﺑﺮاي ﺷﻜﻞ ﻇﺎﻫﺮي ﻣﻬﺮهﻫﺎ و ﺻﻔﺤﻪي ﺷﻄﺮﻧﺞ ﻫﻴﭻ اﺟﺒﺎري ﻧﺪارﻳﺪ‪ .‬ﺣﺘﻲ ﻣﻲﺗﻮاﻧﻴﺪ ﺑﻪ ﺟﺎي ﺷﻜﻞ‪ ،‬از‬
‫ﻣﺘﻦ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل از ﻛﻠﻤﻪي »ﺷﺎه« ﻳﺎ »‪ «king‬ﺑﺮاي ﻣﻬﺮهي ﺷﺎه اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬اﻣـﺎ‬
‫ﺑﻪ ﭘﻴﺎدهﺳﺎزيﻫﺎي ﺑﻬﺘﺮ و ﭘﻴﺸﺮﻓﺘﻪﺗﺮ )اﺳﺘﻔﺎده از ‪ Qt‬ﻳﺎ ‪ (OpenGL‬ﻧﻤﺮهي ﺗﺸﻮﻳﻘﻲ ﺗﻌﻠﻖ ﻣﻲﮔﻴﺮد‪.‬‬
‫‪ .2‬ﺑﺎزي ﺑﺎﻳﺪ ﺑﻪ دو ﺻﻮرت اﻧﺠﺎم ﺷﻮد‪:‬‬
‫• دو ﺣﺮﻳﻒ واﻗﻌﻲ‪ :‬ﻳﻌﻨﻲ دو ﺣﺮﻳﻒ واﻗﻌﻲ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﺑﺎزي ﻣﻲﻛﻨﻨﺪ و ﺑﺮﻧﺎﻣـﻪ ﻓﻘـﻂ وﺿـﻌﻴﺖ ﻛﻨـﻮﻧﻲ‬
‫ﻣﻬﺮهﻫﺎ و ﺣﺮﻛﺖﻫﺎي ﻣﺠﺎز را ﻛﻨﺘﺮل ﻣﻲﻛﻨﺪ‪.‬‬
‫• ﻳﻚ ﺣﺮﻳﻒ واﻗﻌﻲ و ﻛﺎﻣﭙﻴﻮﺗﺮ‪ :‬ﻳﻌﻨﻲ ﻳﻚ ﺣﺮﻳﻒ واﻗﻌﻲ ﺑﺎ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎزي ﻣﻲﻛﻨﺪ‪ .‬ﺑﺮاي اﻳﻦ ﺣﺎﻟـﺖ‬
‫ﺑﺎﻳﺪ ﻳﻚ ﻋﺎﻣﻞ )ﻳﻚ ﻛﻼس ﻳﺎ ﻳﻚ ﺗﺎﺑﻊ( ﭘﻴﺎدهﺳﺎزي ﺷﻮد ﻛﻪ ﺗﻮاﻧﺎﻳﻲ اﻧﺠﺎم ﺣﺮﻛﺖ ﻣﻨﺎﺳﺐ )ﻧﻪ ﻟﺰوﻣـﺎ‬
‫ﻫﻮﺷﻤﻨﺪاﻧﻪ( را داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﺎﻳﺪ از اﻣﻜﺎﻧـﺎت رﻳﺴـﻪﻫـﺎ )‪ (pthread‬ﻫـﻢ اﺳـﺘﻔﺎده ﻛﻨﻴـﺪ ﺗـﺎ‬
‫ﺻﻔﺤﻪي ﺷﻄﺮﻧﺞ در ﺣﻴﻦ ﻣﺤﺎﺳﺒﻪ ﺣﺮﻛﺖ ﺗﻮﺳﻂ ﻋﺎﻣﻞ در دﺳﺘﺮس ﺑﺎﺷﺪ‪ .‬اﮔﺮ ﺣﺮﻛﺎت ﻋﺎﻣﻞ ﺗـﺎ ﺣـﺪ‬
‫ﻣﻨﺎﺳﺒﻲ ﻫﻮﺷﻤﻨﺪ ﺑﺎﺷﺪ‪ ،‬ﻧﻤﺮهي ﺗﺸﻮﻳﻘﻲ ﺑﻪ ﺷﻤﺎ ﺗﻌﻠﻖ ﺧﻮاﻫﺪ ﮔﺮﻓﺖ‪.‬‬
‫‪ .3‬اﻣﻜﺎن ﺑﺮﮔﺸﺖ ﺑﻪ ﺣﺮﻛﺖ ﻗﺒﻠﻲ )ﺗﺎ ‪ 6‬ﺣﺮﻛﺖ ﺑﺮاي ﻫﺮ ﺑﺎزﻳﻜﻦ( وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫‪ .4‬ﺑﺎ اﻧﺘﺨﺎب ﻫﺮ ﻣﻬﺮه ﺗﻤﺎم ﺣﺮﻛﺖﻫﺎي ﻣﻤﻜﻦ ﺑﺮاي آن ﻣﻬﺮه ﻣﺸﺨﺺ ﺷﻮد‪ .‬ﻣﻲﺗﻮاﻧﻴﺪ اﻳﻦ ﻣﺸﺨﺼﻪ را ﺑـﺎ ﺗﻐﻴﻴـﺮ‬
‫رﻧﮓ ﺧﺎﻧﻪ ﻫﺎي ﺻﻔﺤﻪ ﺷﻄﺮﻧﺞ اﻧﺠﺎم دﻫﻴﺪ‪ ،‬اﻣﺎ اﺟﺒﺎري در ﺑﻜﺎرﮔﻴﺮي ﺗﻐﻴﻴﺮ رﻧﮓ ﻧﻴﺴﺖ‪.‬‬
‫‪ .5‬ﺑﺎﻳﺪ اﻣﻜﺎن ذﺧﻴﺮه وﺿﻌﻴﺖ ﻛﻨﻮﻧﻲ ﺻﻔﺤﻪ ﺷﻄﺮﻧﺞ و ﺑﺎرﮔﺬاري ﻣﺠﺪد آن وﺟـﻮد داﺷـﺘﻪ ﺑﺎﺷـﺪ‪ .‬ﺑـﺪﻳﻦ ﺗﺮﺗﻴـﺐ‬
‫ﺑﺎزﻳﻜﻨﺎن ﻣﻲﺗﻮاﻧﻨﺪ ﺑﺎزي ﺧﻮد را در ﻳﻚ ﻧﻘﻄﻪ ﻣﺘﻮﻗﻒ ﻛﺮده و در آﻳﻨﺪه ﺑﺎ ﺑﺎرﮔﺬاري ﻣﺠﺪد آن‪ ،‬ﺑﻪ ﺑـﺎزي اداﻣـﻪ‬
‫ﺑﺪﻫﻨﺪ‪.‬‬
‫ﻣﺴﺘﻨﺪات ﻗﺎﺑﻞ ﺗﺤﻮﻳﻞ در ﻫﺮ ﻓﺎز‬
‫ﻓﺎز اول‬
‫ ﻛﻼسﻫﺎ و ﺗﻮاﺑﻊ ﻻزم ﺑﺮاي ﻣﻬﺮهﻫﺎ‪ ،‬ﺻﻔﺤﻪ ﺷﻄﺮﻧﺞ و ﻫﺪاﻳﺖ ﺟﺮﻳﺎن ﺑﺎزي ﺑﺎﻳﺪ ﻃﺮاﺣﻲ و ﭘﻴﺎدهﺳﺎزي ﺷﻮﻧﺪ‪ .‬در‬
‫اﻳﻦ ﻓﺎز ﺑﺎﻳﺪ ﻣﺴﺘﻨﺪات و ﺧﺮوﺟﻲﻫﺎي زﻳﺮ ﺗﺤﻮﻳﻞ داده ﺷﻮﻧﺪ‪:‬‬
‫• ﻣﺪل ﻛﻼسﻫﺎ و ﻧﺤﻮهي ارﺗﺒﺎط آﻧﻬﺎ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﺗﻮﺳﻂ ‪.UML Class Diagram‬‬
‫• ﻣﻨﻄﻖ ﺑﺮﻧﺎﻣﻪ ﻛﻪ ﺑﻪ ﻛﻤﻚ ‪ UML Activity Diagram‬ﻣﺪل ﺷﺪه ﺑﺎﺷﺪ‪.‬‬
‫• ﭘﻴﺎدهﺳﺎزي ﻛﻼسﻫﺎي و ﺑﺨﺶﻫﺎي زﻳﺮ‪:‬‬
‫ ﻛﻼسﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ﻣﻬﺮهﻫﺎ‬
‫ ﻛﻼسﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ﺻﻔﺤﻪي ﺷﻄﺮﻧﺞ‬
‫ ﺗﻮاﺑﻊ ﻳﺎ ﻛﻼسﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ﻫﺪاﻳﺖ ﺟﺮﻳﺎن ﺑﺎزي‬
‫ﻧﻜﺘﻪي ﻣﻬﻢ‪ :‬ﺑﺎﻳﺪ ﻃﺮاﺣﻲ و ﭘﻴﺎدهﺳﺎزي ﻛﻼسﻫﺎي ﭘﺎﻳﻪ را ﺑﻪ ﮔﻮﻧﻪاي اﻧﺠﺎم ﺑﺪﻫﻴﺪ ﻛﻪ در ﻓﺎز دوم دﭼﺎر ﻣﺸﻜﻞ‬
‫ﻧﺸﻮﻳﺪ‪ .‬ﺗﻐﻴﻴﺮات ﻳﻚ ﻛﻼس در ﻓﺎز دوم ﺣﺪاﻛﺜﺮ ﻣﻲﺗﻮاﻧﺪ ﺗﺎ ‪ %20‬ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺎز دوم‬
‫ ﺑﺮﻧﺎﻣﻪي ﻧﻬﺎﻳﻲ ﻛﻪ ﺷﺎﻣﻞ ﺑﺨﺶﻫﺎي زﻳﺮ اﺳﺖ‪:‬‬
‫‪ o‬واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ‬
‫‪ o‬ﻫﺪاﻳﺖ درﺳﺖ ﺟﺮﻳﺎن ﺑﺎزي‬
‫‪ o‬ﻋﺎﻣﻞ ﺑﺎزي ﺧﻮدﻛﺎر‬
‫‪ o‬وﺿﻌﻴﺖ دو رﻳﺴﻪاي ﺑﺮاي ﺑﺎزي ﺑﺎ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫‪ o‬ﻣﻜﺎﻧﻴﺰم ذﺧﻴﺮهﺳﺎزي و ﺑﺎرﮔﺬاري وﺿﻌﻴﺖ ﺑﺎزي‬
‫ ﻧﻤﻮدارﻫﺎي ﻃﺮاﺣﻲ )‪ Class Diagram‬و ‪ (Activity Diagram‬در ﺻﻮرﺗﻴﻜﻪ ﺗﻐﻴﻴﺮي در آﻧﻬﺎ ﺑﻮﺟﻮد آﻣﺪه ﺑﺎﺷﺪ‪.‬‬
: ‫ﻣﺮﺟﻊ‬
[1] http://www.iranchess.ir/rules.html
‫ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ‬
‫‬
‫ ر ‬
‫‬
‫‪32‬ن دﯾ‪7 86‬ا ‪7‬ا دارد ‬
‫‬
‫رو دل روان ‪ 8‬دارد ‬
‫از ‪)* +,3 .980‬ش ' ا&‪ 66 $%‬د‪5‬‬
‫‬
‫>‪3‬و< ‪67 89 66‬د‪ ،‬ا‪ 23 4‬دارد ‬
‫‪4‬‬
‫‪H $I‬د ‪EF3 8‬د و دو ذ ‪.9@3 B‬‬
‫‬
‫‪ M‬از‪ NO 7 580 K L‬دارد ‬
‫‪ V‬رو را< دﯾر ‪66 R6S ،$TU6‬‬
‫‬
‫‪Y9‬‬
‫ا] و \< [ ‪ 23 .9 $‬دارد ‬
‫‪e4 6‬‬
‫‪d‬‬
‫‪ab‬‬
‫‪ab‬‬
‫_‬
‫‪ K c +gh‬رود `ل ' `ل ‪E‬ب‬
‫‬
‫‪Yn‬‬
‫‪ $ o6‬دا‪l )m‬و‪ $k‬ﯾ ‪j‬ا دارد ‬
‫ر‪ w‬و ‪r‬راج ‪80‬م ‪t‬ن ‪r ' c8‬را‪)mH Rq‬‬
‫‬
‫‪ y3 z ${| ' r‬از ‪7‬رﯾ دارد ‬
‫ّ‬
‫‪H‬دن ا‪80 c8‬م د‪72‬ر ‪7‬د و ‪~51 89‬‬
‫‬
‫ور† ا‪ $„ K $TO80 $… L‬روا دارد ‬
‫‹‪3‬‬
‫‪89‬وران‪Ž ،‬ا Œن ‰ رˆ‪h‬رش و‡‪$‬‬
‫‬
‫‪t‬ن ‪ 4’4‬رو ‪ 89 z‬از  *)ا دارد ‬
‫‪— ' 89‬چ ز‪67 L‬د<‪ ،‬را< •‪l d9‬اق‬
‫‬
‫‪dn $I‬ﯾ) šد ‪)˜ )6™ z‬ا دارد ‬
‫او و ™‪ )6‬را ‪7 )Nœ 89‬دا و‡‪$‬‬
‫‬
‫šن ' دل از ‪ž7‬ن …‪ $‬و دارد ‬
‫د‹¡‪ $… R6N‬ا‪4‬ن و دو‪ $… R6E ‬و‬
‫‬
‫ ‪)¤‬ا‪ ¢ ،)Nœ 89 £‬دو‪ r‬دارد ‬
‫¨§‪8‬ت \ل [‪) $¥‬ع( ‪58 5789‬‬
‫\ب šد د‹¡‪N‬ن ‪5²6 +´µ6‬‬
‫‬
‫‪ °‬ز‪4‬ن از ‪7 ¯ 4‬رت ‪ dn‬دارد ‬
‫‪)Nœ $I‬‬
‫‬
‫‪j‬ت و \زاد‪ ·4 r ¹ $º‬دارد ‬
‫‹½‬
‫د ‪\ .9 R6‬ب ‪)N» $I‬د ' رو ا‪¾¿À c8‬‬
‫‬
‫داور ‪ Á $… $I7 à ¹‬دارد ‬
‫‪ )Ç3‬از‪ K +´Ä4 R6Æ‬و Žد< ‪ K‬ا] ا‪ 5‬و šن‬
‫‬
‫‪ËÌ‬‬
‫دل ‪ Ã Í &dÎ‬ر ‪ d9¿Ê‬دارد ‬
‫×ز ‪ Ô71‬ا‪ 5‬و ' دل ‪ °‬ز‪Ñ A• .Ó‬ن ز‪ +ÏÐ‬ا‬
‫‬
‫‪7‬ش ‪ Ž .9[ Í‬از ‪7‬ر و ‪7‬ا دارد ‬
‫د‪ )Û †Œ A» +ÏÜ 8 8Þ\ 5‬دﯾ)م ‪72‬ز‬
‫‬
‫ دم ‪ N_\ $⌠ 4ß4á‬دارد ‬
‫‹‪7 4ä‬ﯾ) ‪7‬ش ‪8‬دم ‪š à r‬ا‪ )ã‬از ˜)ا‬
‫‬
‫| ‪ åæ ' .9 L363‬دﯾ)م د[ دارد ‬
‫‪9ì í6À‬‬
‫ا] š ‪4éê . ' » 7‬ﯾر‬
‫‬
‫‪)m‬ر‪j î7 L‬ا{‪ $… $‬رﯾ دارد ‬