P2.pdf

‫ﻣﺒﺎﻧ ﺑﺮﻧﺎﻣﻪﺳﺎزی‬
‫ﻧﯿﻢﺳﺎل دوم ‪٩٢-٩١‬‬
‫ﻣﺪرس‪ :‬ﺣﻤﯿﺪ ﺿﺮاﺑ زاده‬
‫داﻧﺸ ﺪهی ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﻓﺎز دوم ﭘﺮوژه‬
‫ﺑﺎزی ﻣﯿﻦروب‬
‫ﻣﻬﻠﺖ ارﺳﺎل‪ ٣١ :‬اردیﺑﻬﺸﺖ‬
‫ﻗﺎﻟﺐ ﮔﺮاﻓﯿ‬
‫ﻗﺎﻟﺐ ﮔﺮاﻓﯿ‬
‫در اﯾﻦ ﻓﺎز ﻗﺮار اﺳﺖ ﺷﻤﺎ ﺑﺮﻧﺎﻣﻪای را ﮐﻪ در ﻓﺎز اول ﭘﺮوژه ﻧﻮﺷﺘﻪاﯾﺪ‪ ،‬ﺑﺮای اﻓﺰاﯾﺶ ﺟﺬاﺑﯿﺖ در ﯾ‬
‫ﻗﺮار دﻫﯿﺪ‪ .‬ﺑﺮای اﯾﻦ ﮐﺎر از ﻣﺎژول ‪ Tkinter‬اﺳﺘﻔﺎده ﺧﻮاﻫﯿﻢ ﮐﺮد‪.‬‬
‫ﺑﺮای ﺷﺮوع ﺑﺎ اﺳﺘﻔﺎده از ‪ Frame‬ﯾ ﭘﻨﺠﺮهی ﮔﺮاﻓﯿ در ﺑﺮﻧﺎﻣﻪی ﺧﻮد اﯾﺠﺎد ﮐﻨﯿﺪ‪ .‬ﺳﭙﺲ ﺑﺮﻧﺎﻣﻪی ﺷﻤﺎ ﺗﻌﺪاد‬
‫ﺳﻄﺮﻫﺎ و ﺳﺘﻮنﻫﺎی ﺟﺪول ﺑﺎزی و ﺗﻌﺪاد ﻣﯿﻦﻫﺎی ﻣﻮﺟﻮد در آن را از ﮐﺎرﺑﺮ درﯾﺎﻓﺖ ﻣ ﮐﻨﺪ‪ .‬اﯾﻦ ﻣﺮﺣﻠﻪ ﻫﻤﺎﻧﻨﺪ ﺷ ﻞ‬
‫زﯾﺮ ﺗﻮﺳﻂ واﺳﻂ ﮔﺮاﻓﯿ اﻧﺠﺎم ﻣ ﺷﻮد‪.‬‬
‫ﺷ ﻞ ‪ :١‬درﯾﺎﻓﺖ اﻃﻼﻋﺎت ﺑﺎزی از ﮐﺎرﺑﺮ‬
‫ﭘﺲ از درﯾﺎﻓﺖ اﻃﻼﻋﺎت ﻓﻮق‪ ،‬ﭘﻨﺠﺮهی اﺻﻠ ﺑﺎزی ﻣﯿﻦروب اﯾﺠﺎد ﻣ ﺷﻮد‪ .‬در اﯾﻦ ﭘﻨﺠﺮه ﺟﺪول ﺑﺎزی‪ ،‬و در ﭘﺎﯾﯿﻦ‬
‫آن ﺗﻌﺪاد ﻣﯿﻦﻫﺎی ﺑﺎﻗ ﻣﺎﻧﺪه در ﺻﻔﺤﻪ و زﻣﺎن ﮔﺬﺷﺘﻪ از ﺑﺎزی ﻧﻤﺎﯾﺶ داده ﻣ ﺷﻮد‪.‬‬
‫ﺷ ﻞ ‪ :٢‬ﻧﻤﺎی ﮐﻠ ﺻﻔﺤﻪی ﺑﺎزی‬
‫در ﻧﻤﺎﯾﺶ ﺟﺪول ﺑﺎزی‪ ،‬ﺑﺮای ﻧﻤﺎﯾﺶ ﻣﯿﻦ و ﭘﺮﭼﻢ از ﻫﻤﺎن ﮐﺎراﮐﺘﺮﻫﺎی ﻓﺎز ﻗﺒﻞ‪ ،‬ﯾﻌﻨ @ و ‪ P‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪ .‬اﻣﺎ ﺑﻪ‬
‫ﺟﺎی اﺳﺘﻔﺎده از ﮐﺎراﮐﺘﺮ ‪ #‬ﺑﺮای ﺧﺎﻧﻪ ﻫﺎی ﮐﺸﻒﻧﺸﺪه‪ ،‬از ﯾ رﺷﺘﻪی ﺧﺎﻟ ﯾﺎ ﮐﺎراﮐﺘﺮ ﻓﺎﺻﻠﻪ )' '( اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪.‬‬
‫‪١‬‬
‫ﭘﯿﺎدهﺳﺎزی ﺑﺎزی‬
‫در اﯾﻦ ﺑﺨﺶ‪ ،‬ﺑﺎزی ﺑﺎﯾﺪ ﺑﻪ ﻃﻮر ﮐﺎﻣﻞ از ﻃﺮﯾﻖ واﺳﻂ ﮔﺮاﻓﯿ اﻧﺠﺎم ﺷﻮد‪ ،‬ﺑﺪﯾﻦ ﻣﻌﻨ ﮐﻪ اﻧﺘﺨﺎب ﺧﺎﻧﻪﻫﺎی ﺟﺪول‬
‫از ﻃﺮﯾﻖ ﮐﻠﯿ ﮐﺮدن روی آنﻫﺎ ﺻﻮرت ﻣ ﮔﯿﺮد‪ .‬ﮐﺎرﺑﺮ ﺑﺎﯾﺪ ﺑﺘﻮاﻧﺪ ﺑﺮای اﻧﺘﺨﺎب و آﺷ ﺎر ﮐﺮدن ﯾ ﺧﺎﻧﻪ از ﮐﻠﯿ‬
‫ﭼﭗ و ﺑﺮای ﮔﺬاﺷﺘﻦ ﭘﺮﭼﻢ روی ﺧﺎﻧﻪﻫﺎ و ﺑﺮداﺷﺘﻦ آنﻫﺎ از ﮐﻠﯿ راﺳﺖ اﺳﺘﻔﺎده ﮐﻨﺪ‪ .‬ﺷﻤﺎ در اﯾﻦ ﻣﺮﺣﻠﻪ ﺑﺎﯾﺪ‬
‫ﺗﻐﯿﯿﺮاﺗ در ﺑﺮﻧﺎﻣﻪی ﻓﺎز ﻗﺒﻞ اﯾﺠﺎد ﻧﻤﺎﯾﯿﺪ‪ ،‬ﻃﻮری ﮐﻪ ﺗﻮاﺑﻌ ﮐﻪ در ﻓﺎز ﻗﺒﻠ ﭘﺮوژه ﺑﺎ ورودی ﮐﻨﺴﻮل اﺟﺮا ﻣ ﺷﺪﻧﺪ‪،‬‬
‫در اﯾﻦ ﻓﺎز ﺑﺎ اﺳﺘﻔﺎده از رویدادﻫﺎ )‪ (Events‬در واﺳﻂ ﮔﺮاﻓﯿ اﺟﺮا ﺷﻮﻧﺪ‪.‬‬
‫ﺷﻤﺎ ﺑﺎﯾﺪ رویدادﻫﺎی ﮐﻠﯿ راﺳﺖ و ﮐﻠﯿ ﭼﭗ روی ﺧﺎﻧﻪﻫﺎی ﺑﺎزی را ﺑﻪ ﺻﻮرت ﺻﺤﯿﺢ ﮐﻨﺘﺮل ﮐﺮده و در اﻧﺘﻬﺎ‬
‫ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﻮع رویداد رخ داده‪ ،‬ﺗﺎﺑﻊ ﻣﺘﻨﺎﺳﺐ را ﺑﺎ ﭘﺎراﻣﺘﺮﻫﺎی ورودی ﺻﺤﯿﺢ ﺻﺪا ﺑﺰﻧﯿﺪ‪ .‬ﺑﺮای ﻣﺜﺎل‪ ،‬ﮐﻠﯿ ﭼﭗ‬
‫روی ﺧﺎﻧﻪای از ﺟﺪول ﺑﺎزی ﮐﻪ ﮐﺸﻒ ﻧﺸﺪه اﺳﺖ‪ ،‬ﻣﻮﺟﺐ ﻓﺮاﺧﻮاﻧ ﺗﺎﺑﻊ ‪ reveal_cell‬ﺑﺮای آن ﺧﺎﻧﻪ ﻣ ﺷﻮد‪.‬‬
‫در ﺻﻮرﺗ ﮐﻪ ﮐﺎرﺑﺮ روی ﺧﺎﻧﻪی دارای ﻣﯿﻦ ﮐﻠﯿ ﮐﺮد‪ ،‬ﺑﺎزی را ﻣ ﺑﺎزد‪ ،‬و در ﺻﻮرﺗ ﮐﻪ ﺗﻤﺎم ﻣﯿﻦﻫﺎ را ﺧﻨﺜ ﮐﻨﺪ‬
‫)روی آﻧﻬﺎ ﭘﺮﭼﻢ ﺑ ﺬارد( و ﺧﺎﻧﻪﻫﺎی دﯾ ﺮ را ﻫﻢ ﮐﺎﻣﻼ ﻣﺸﺨﺺ ﮐﻨﺪ‪ ،‬ﭘﯿﻐﺎم ﭘﯿﺮوزی ﺑﻪ او ﻧﺸﺎن داده ﺷﺪه و ﺑﺎزی‬
‫ﺗﻤﺎم ﻣ ﺷﻮد‪.‬‬
‫ﺷ ﻞ ‪ :٣‬ﭘﺎﯾﺎن ﺑﺎزی در ﺣﺎﻟﺖ ﺑﺮد‬
‫ﺷ ﻞ ‪ :۴‬ﭘﺎﯾﺎن ﺑﺎزی در ﺣﺎﻟﺖ ﺑﺎﺧﺖ‬
‫‪٢‬‬
‫دو ﺑﺨﺶ ﺑﻌﺪی ﭘﺮوژه ﺑﻪ ﻋﻨﻮان ﻧﻤﺮهی اﺿﺎﻓ درﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪهاﻧﺪ‪ .‬در ﺻﻮرﺗ ﮐﻪ ﻫﺮ ﮐﺪام از اﯾﻦ ﺑﺨﺶﻫﺎ را‬
‫)ﻣﺴﺘﻘﻞ از ﺗﺮﺗﯿﺐ( ﺑﻪ ﺑﺮﻧﺎﻣﻪی ﺧﻮد اﺿﺎﻓﻪ ﮐﻨﯿﺪ‪ ،‬ﻧﻤﺮهی اﺿﺎﻓ ﻣﺮﺑﻮط ﺑﻪ آن ﺑﺨﺶ را درﯾﺎﻓﺖ ﺧﻮاﻫﯿﺪ ﮐﺮد‪.‬‬
‫ذﺧﯿﺮهﺳﺎزی )اﺧﺘﯿﺎری(‬
‫در اﯾﻦ ﺑﺨﺶ از ﭘﺮوژه ﺷﻤﺎ ﺑﺎﯾﺪ اﻣ ﺎن ذﺧﯿﺮه و ﺑﺎرﮔﺬاری ﺑﺎزی را در ﯾ ﻓﺎﯾﻞ ﻣﺘﻨ ﻓﺮاﻫﻢ ﮐﻨﯿﺪ‪ .‬ﺑﺪﯾﻦ ﻣﻨﻈﻮر ﺑﺎﯾﺪ‬
‫ﺟﺪول ﺑﺎزی را ﺑﻪ ﻫﻤﺮاه ﺑﺮﺧ اﻃﻼﻋﺎت ﻣﻮردﻧﯿﺎز دﯾ ﺮ )ﻣﺜﻞ زﻣﺎن ﮔﺬﺷﺘﻪ از ﺑﺎزی( در ﯾ ﻓﺎﯾﻞ ذﺧﯿﺮه ﮐﻨﯿﺪ‪ .‬در‬
‫ﺻﻮرﺗ ﮐﻪ ﮐﺎرﺑﺮ ﺑﺨﻮاﻫﺪ آن ﺑﺎزی را ﺑﺎرﮔﺬاری ﮐﻨﺪ‪ ،‬ﺑﺮﻧﺎﻣﻪی ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺘﻮاﻧﺪ ﺑﺎزی اﻧﺘﺨﺎبﺷﺪه را اداﻣﻪ دﻫﺪ‪ .‬ﺗﻮﺟﻪ‬
‫ﮐﻨﯿﺪ ﮐﻪ ﭘﺮﭼﻢﻫﺎ‪ ،‬ﺗﻌﺪاد و ﻣ ﺎن ﺧﺎﻧﻪﻫﺎی اﻧﺘﺨﺎبﺷﺪه و ﺗﻌﺪاد و ﻣ ﺎن ﻣﯿﻦﻫﺎ ﻫﻤ ﺑﺎﯾﺪ دﻗﯿﻘﺎً ﺑﻪ ﻫﻤﺎن ﺣﺎﻟﺘ‬
‫ﺑﺎﺷﻨﺪ ﮐﻪ ﺑﺎزی در آن ﺣﺎﻟﺖ ذﺧﯿﺮه ﺷﺪه اﺳﺖ‪ .‬ﺑﺪﯾﻬ اﺳﺖ ﺑﺮای اﻧﺠﺎم اﯾﻦ ﻗﺴﻤﺖ ﻧﯿﺎز ﺑﻪ اﺿﺎﻓﻪ ﮐﺮدن ﺣﺪاﻗﻞ دو‬
‫دﮐﻤﻪ ﺑﻪ ﺻﻔﺤﻪی ﮔﺮاﻓﯿ ﺑﺎزی ﺑﺮای ‪ Save‬و ‪ Load‬دارﯾﺪ‪.‬‬
‫ﻧﻤﺎﯾﻪﻫﺎ )اﺧﺘﯿﺎری(‬
‫در اﯾﻦ ﺑﺨﺶ از ﭘﺮوژه‪ ،‬ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﻪ ﺟﺎی اﺳﺘﻔﺎده از رﺷﺘﻪﻫﺎی ﺧﺎﻟ و ﮐﺎراﮐﺘﺮﻫﺎی ‪ P‬و @ ﺑﺮای ﻧﺸﺎن دادن ﺧﺎﻧﻪﻫﺎی‬
‫ﻣﺨﺘﻠﻒ ﺑﺎزی‪ ،‬از ﻋ ﺲﻫﺎی ﭘﺮﭼﻢ‪ ،‬ﻣﯿﻦ و ﺧﺎﻧﻪی ﺧﺎﻟ )ﺑﻪ ﺳﻠﯿﻘﻪی ﺧﻮدﺗﺎن( اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪ .‬ﺑﺮای اﯾﻦ ﮐﺎر اﺑﺘﺪا‬
‫ﺗﺼﺎوﯾﺮ و ‪ Icon‬ﻫﺎی ﻣﻮرد ﻧﻈﺮ ﺧﻮد را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪ .‬ﺳﭙﺲ در ﺑﺮﻧﺎﻣﻪی ﻧﻮﺷﺘﻪ ﺷﺪه‪ ،‬ﻋ ﺲﻫﺎی ﻣﻮردﻧﻈﺮ را ﺑﺎ‬
‫دﺳﺘﻮرات ﮐﺎر ﺑﺎ ﻓﺎﯾﻞ ﺑﺎرﮔﺬاری ﮐﻨﯿﺪ و ﺑﻪ ﺧﺎﻧﻪﻫﺎی ﺟﺪول اﺧﺘﺼﺎص دﻫﯿﺪ‪.‬‬
‫‪٣‬‬