പാഠം 2: If/Else കണ്ടീഷണൽ സ്റ്റേറ്റ്മെന്റുകൾ
ഈ പാഠത്തിൽ, ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട്ലെ കുറഞ്ഞത് രണ്ട് കെട്ടിടങ്ങളെങ്കിലും VR റോബോട്ട് ഇടിച്ചുനിരത്തുന്ന ഒരു പ്രോജക്റ്റ് നിങ്ങൾ സൃഷ്ടിക്കും. ഓരോ റീസെറ്റിലും പ്ലേഗ്രൗണ്ട് ലേഔട്ട് മാറുന്നതിനാൽ, ലൂപ്പുകളും സെൻസർ ഫീഡ്ബാക്കും ഉപയോഗിച്ച് വെല്ലുവിളി പരിഹരിക്കാൻ ഒരു അൽഗോരിതം ആവശ്യമായി വരും.
ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട് ലേഔട്ടുകളുടെ ഉദാഹരണങ്ങൾ:

പഠന ഫലങ്ങൾ
- റിപ്പോർട്ട് ചെയ്ത ബൂളിയൻ മൂല്യത്തെ അടിസ്ഥാനമാക്കി, If അല്ലെങ്കിൽ Else ബ്രാഞ്ചിനുള്ളിലെ ബ്ലോക്കുകൾ പ്രവർത്തിപ്പിക്കുന്ന ഒരു C ബ്ലോക്കാണ് [If then else] ബ്ലോക്ക് എന്ന് തിരിച്ചറിയുക.
- ഒന്നിലധികം തവണ അവസ്ഥ പരിശോധിക്കുന്നതിനായി ഒരു [If then else] ബ്ലോക്ക് സാധാരണയായി ഒരു [Repeat] അല്ലെങ്കിൽ ഒരു [Forever] ബ്ലോക്കിനൊപ്പം ഉപയോഗിക്കുന്നുവെന്ന് തിരിച്ചറിയുക.
- ലൂപ്പുകളോടൊപ്പം ഒരു [If then else] ബ്ലോക്ക് ഉപയോഗിക്കുന്നത് എന്തുകൊണ്ടാണെന്ന് തിരിച്ചറിഞ്ഞ് വിവരിക്കുക.
- ഒരു പ്രോജക്റ്റിൽ [If then else] ബ്രാഞ്ച് പ്രവർത്തിപ്പിക്കാൻ കാരണമെന്താണെന്ന് വിവരിക്കുക.
[അങ്ങനെയെങ്കിൽ] ബ്ലോക്ക് എങ്ങനെ ഉപയോഗിക്കാം
യൂണിറ്റ് 2 ലെ കാസിൽ ക്രാഷർ ചലഞ്ചിൽ നിന്ന് ഈ വെല്ലുവിളി വ്യത്യസ്തമാണ്. യൂണിറ്റ് 2 ചലഞ്ചിൽ ലളിതമായ സീക്വൻസിംഗും ഡ്രൈവ്ട്രെയിൻ കമാൻഡുകളും ഉപയോഗിച്ച് ഒരു സ്റ്റാറ്റിക് കളിസ്ഥലത്തെ കെട്ടിടങ്ങൾ പൊളിച്ചുമാറ്റി.

ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട്ന്റെ മാറിക്കൊണ്ടിരിക്കുന്ന ലേഔട്ടുകൾ കാരണം VR റോബോട്ട് രണ്ടോ അതിലധികമോ കെട്ടിടങ്ങൾ ഇടിച്ചുനിരത്താൻ ഡ്രൈവ്ട്രെയിൻ കമാൻഡുകൾ മാത്രം മതിയാകില്ല. ഒരു കൂട്ടം ഡ്രൈവ്ട്രെയിൻ കമാൻഡുകൾ ഒരു പ്ലേഗ്രൗണ്ടിൽ പ്രവർത്തിച്ചേക്കാം, പക്ഷേ മറ്റൊന്നിൽ പ്രവർത്തിക്കില്ല. സെൻസറുകളും തിരഞ്ഞെടുപ്പും ഉപയോഗിക്കുന്ന ഒരു അൽഗോരിതം ആവശ്യമായി വരും. ഈ പ്രോജക്റ്റിലേക്ക് കണ്ടീഷണൽ സ്റ്റേറ്റ്മെന്റുകൾക്കൊപ്പം സെലക്ഷൻ ചേർത്ത് ഒരു അൽഗോരിതം സൃഷ്ടിക്കാൻ [If then else] ബ്ലോക്ക് ഉപയോഗിക്കും.

ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട്ലെ കെട്ടിടങ്ങൾ തകർക്കാൻ VR റോബോട്ടിന് രണ്ട് പ്രധാന ഘട്ടങ്ങളുണ്ട്.
- VR റോബോട്ട് ഒരു കൊട്ടാര കെട്ടിടം കണ്ടെത്തിയാൽ, അത് ഇടിച്ചുനിരത്താൻ അതിലേക്ക് മുന്നോട്ട് ഓടിക്കുക.
-
മറ്റെല്ലാ പ്ലേഗ്രൗണ്ടുകളിൽ നിന്നും വ്യത്യസ്തമായി, ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട് മതിലുകളില്ല. ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട്ലെ ഒരേയൊരു വസ്തുക്കൾ കെട്ടിടങ്ങൾ ആയതിനാൽ, കെട്ടിടങ്ങൾ കണ്ടെത്താൻ ഡിസ്റ്റൻസ് സെൻസർ ഉപയോഗിക്കാം.

-
- VR റോബോട്ട് ഒരു കൊട്ടാര കെട്ടിടം കണ്ടെത്തിയില്ലെങ്കിൽ, തിരിഞ്ഞ് വീണ്ടും ഒരു കൊട്ടാര കെട്ടിടത്തിനായി പരിശോധിക്കുക.
-
ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട്ലെ ഒരേയൊരു വസ്തുക്കൾ കെട്ടിടങ്ങൾ ആയതിനാൽ, കോട്ട കെട്ടിടങ്ങൾ കണ്ടെത്താൻ ഡിസ്റ്റൻസ് സെൻസർ ഉപയോഗിക്കാം.

-
1 ഉം 2 ഉം ഘട്ടങ്ങൾ പൂർത്തിയായിക്കഴിഞ്ഞാൽ, VR റോബോട്ടിന് 1-ാം ഘട്ടത്തിലേക്ക് തിരികെ പോയി ദൂര സെൻസർ ഉപയോഗിച്ച് അടുത്ത കെട്ടിടം എവിടെയാണ് തകരേണ്ടതെന്ന് കണ്ടെത്താനാകും.
-
VEXcode VR-ൽ ഒരു പുതിയ പ്രോജക്റ്റ് ആരംഭിച്ച് പ്രോജക്റ്റിന് എന്ന് പേരിടുക Unit9Lesson2.

-
വർക്ക്സ്പെയ്സിലേക്ക് രണ്ട് [അഭിപ്രായം] ബ്ലോക്കുകൾ ചേർത്ത് മുകളിൽ വിവരിച്ച ഘട്ടങ്ങൾ പൂരിപ്പിക്കുക.

-
മുകളിൽ വിവരിച്ച ഓരോ പ്രവർത്തനങ്ങളും ട്രിഗർ ചെയ്യാൻ [If then else] ബ്ലോക്ക് ഉപയോഗിക്കാം. [If then else] ബ്ലോക്കിലെ ബൂളിയൻ അവസ്ഥ ശരിയാണോ തെറ്റാണോ എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നുണ്ടോ എന്നതിനെ ആശ്രയിച്ചിരിക്കും ഓരോ പ്രവർത്തനവും. [അഭിപ്രായം] ബ്ലോക്കുകൾക്ക് താഴെ ഒരു [അല്ലെങ്കിൽ മറ്റെന്തെങ്കിലും] ബ്ലോക്ക് ചേർക്കുക.

നിങ്ങളുടെ അറിവിലേക്കായി
[If then else] ബ്ലോക്ക് എന്നത് ബൂളിയൻ റിപ്പോർട്ടർ ബ്ലോക്കുകളെ ഇൻപുട്ടായി സ്വീകരിക്കുന്ന ഒരു C ബ്ലോക്കാണ്. [If then else] ബ്ലോക്ക് എന്നത് ഒരു പ്രോജക്റ്റിന്റെ ഒഴുക്ക് നിയന്ത്രിക്കുന്ന ഒരു കണ്ടീഷണൽ സ്റ്റേറ്റ്മെന്റാണ്. വ്യവസ്ഥ പാലിക്കപ്പെട്ടാൽ [If then else] ബ്ലോക്ക് ഒരു പ്രത്യേക നിർദ്ദേശ ശ്രേണി നടപ്പിലാക്കും, വ്യവസ്ഥ പാലിക്കപ്പെട്ടില്ലെങ്കിൽ മറ്റൊരു കൂട്ടം നിർദ്ദേശങ്ങളും നടപ്പിലാക്കും, അതുവഴി പ്രോജക്റ്റ് ഫ്ലോയെ 'ബ്രാഞ്ച്' ചെയ്യും. [അല്ലെങ്കിൽ] എന്നതിലെ ഒരു ശാഖ മാത്രമേ നടപ്പിലാക്കൂ.

- അവസ്ഥ TRUE ആയി റിപ്പോർട്ട് ചെയ്തിട്ടുണ്ടെങ്കിൽ, If Then ബ്രാഞ്ചിനുള്ളിലെ ബ്ലോക്കുകൾ പ്രവർത്തിപ്പിക്കപ്പെടും.
- അവസ്ഥ തെറ്റാണെന്ന് റിപ്പോർട്ട് ചെയ്താൽ, Else ബ്രാഞ്ചിനുള്ളിലെ ബ്ലോക്കുകൾ പ്രവർത്തിപ്പിക്കപ്പെടും.

ഒരു ശാഖയ്ക്കുള്ളിലെ എല്ലാ ബ്ലോക്കുകളും പ്രവർത്തിപ്പിച്ചുകഴിഞ്ഞാൽ, പ്രോജക്റ്റ് [അല്ലെങ്കിൽ അങ്ങനെയാണെങ്കിൽ] ബ്ലോക്കിന് പുറത്തുള്ള അടുത്ത ബ്ലോക്കിലേക്ക് നീങ്ങും.
-
ഈ പ്രോജക്റ്റിൽ, കളിസ്ഥലത്തെ കെട്ടിടങ്ങൾ കണ്ടെത്താൻ ഡിസ്റ്റൻസ് സെൻസർ ഉപയോഗിക്കാം. [അല്ലെങ്കിൽ] ബ്ലോക്കിലേക്ക് ഒരു <Distance found object> ബ്ലോക്ക് ചേർക്കുക.

നിങ്ങളുടെ അറിവിലേക്കായി
<Distance found object> ബ്ലോക്ക് എന്നത് ഒരു ബൂളിയൻ റിപ്പോർട്ടർ ബ്ലോക്കാണ്, അത് ഡിസ്റ്റൻസ് സെൻസർ VR റോബോട്ടിന് മുന്നിൽ ഒരു വസ്തു കണ്ടെത്തിയാൽ അത് റിപ്പോർട്ട് ചെയ്യുന്നു. VR റോബോട്ടിന്റെ 3000 മില്ലിമീറ്ററിനുള്ളിൽ (mm) ഒരു വസ്തുവോ പ്രതലമോ ഉള്ളപ്പോൾ ഈ ബ്ലോക്ക് TRUE എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു.

-
ഇനി [If then else] ബ്ലോക്കിന്റെ ഓരോ ശാഖയും പ്രോജക്റ്റിന്റെ തുടക്കത്തിൽ സൃഷ്ടിച്ച അഭിപ്രായങ്ങൾ ഉപയോഗിച്ച് നിർവചിക്കേണ്ടതുണ്ട്. <Distance found object> ബ്ലോക്ക് ശരിയാണെന്ന് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, VR റോബോട്ട് ആ കെട്ടിടം തകർക്കാൻ നേരെ ഓടിക്കണം. ആ [അഭിപ്രായം] ബ്ലോക്ക് പ്രോജക്റ്റിന്റെ 'If Then' ബ്രാഞ്ചിലേക്ക് മാറ്റുക.

-
VR റോബോട്ട് ഒരു കെട്ടിടം കണ്ടെത്തിയില്ലെങ്കിൽ എന്ത് സംഭവിക്കുമെന്ന് അറിയാൻ മറ്റേ [അഭിപ്രായം] ബ്ലോക്ക് പ്രോജക്റ്റിന്റെ 'Else' ബ്രാഞ്ചിലേക്ക് നീക്കുക.

-
[If then else] ബ്ലോക്കിന്റെ 'If Then' ബ്രാഞ്ചിലേക്ക് ഒരു [Drive] ബ്ലോക്ക് ചേർക്കുക.

-
<Distance found object> ബ്ലോക്ക് FALSE റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, VR റോബോട്ട് തിരിഞ്ഞു നിന്ന് പ്ലേഗ്രൗണ്ടിൽ ഒരു കെട്ടിടം കണ്ടെത്തേണ്ടതുണ്ട്. [If then else] ബ്ലോക്കിന്റെ 'Else' ബ്രാഞ്ചിൽ [Comment] ബ്ലോക്കിന് താഴെ ഒരു [Turn] ബ്ലോക്ക് ചേർക്കുക.

-
പ്രോജക്റ്റ് പരീക്ഷിക്കുന്നതിനുമുമ്പ്, ഒരു ബ്ലോക്ക് കൂടി ചേർക്കേണ്ടതുണ്ട്. [അങ്ങനെയാണെങ്കിൽ] സ്റ്റാക്കിലെ അടുത്ത ബ്ലോക്കിലേക്ക് നീങ്ങുന്നതിന് മുമ്പ് ബ്ലോക്കുകൾ എന്ന അവസ്ഥ ഒരിക്കൽ മാത്രമേ പരിശോധിക്കൂ. യൂണിറ്റ് 7-ൽ, ഡൗൺ ഐ സെൻസറിന്റെ അവസ്ഥ ആവർത്തിച്ച് പരിശോധിക്കാൻ VR റോബോട്ടിനോട് നിർദ്ദേശിക്കുന്നതിനായി ഒരു [Forever] ബ്ലോക്ക് പ്രോജക്റ്റിലേക്ക് ചേർത്തു. ഡിസ്റ്റൻസ് സെൻസർ അവസ്ഥ ആവർത്തിച്ച് പരിശോധിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ, [എന്നേക്കും] ബ്ലോക്ക് [എന്നെങ്കിൽ] ബ്ലോക്കിന് ചുറ്റുമുള്ള വർക്ക്സ്പെയ്സിലേക്ക് വലിച്ചിടുക.

-
ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട് തുറന്ന് പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.

-
VR റോബോട്ട് കുറഞ്ഞത് രണ്ട് കെട്ടിടങ്ങളെങ്കിലും തകർത്തുകഴിഞ്ഞാൽ, പ്ലേഗ്രൗണ്ട് വീണ്ടും ലോഡുചെയ്ത് ഡൈനാമിക് കാസിൽ ക്രാഷർ പ്ലേഗ്രൗണ്ട്ന്റെ മറ്റൊരു ലേഔട്ടിൽ പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.

-
പ്രോജക്റ്റിന്റെ ഓരോ ഓട്ടത്തിലും, ഡിസ്റ്റൻസ് സെൻസർ ഒരു കെട്ടിടം കണ്ടെത്തുന്നതുവരെ VR റോബോട്ട് തിരിഞ്ഞുനിൽക്കും, തുടർന്ന് ആ കെട്ടിടം ഇടിച്ചുനിരത്താൻ ആ കെട്ടിടത്തിലേക്ക് ഓടിച്ചുചെല്ലും.

- പ്രോജക്റ്റ് നടക്കുന്നതിനിടയിൽ, വിആർ റോബോട്ട് ഒരു കെട്ടിടത്തിന്റെ ഒരു ഭാഗം അരികിലേക്ക് തള്ളിയിട്ട് പ്ലേഗ്രൗണ്ടിൽ നിന്ന് വീണേക്കാം. കാരണം, <Distance found object> ബ്ലോക്ക് ഇപ്പോഴും VR റോബോട്ടിന് മുന്നിൽ ഒരു വസ്തു ഉണ്ടെന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു. ഈ ബ്ലോക്ക് ശരിയാണെന്ന് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, VR റോബോട്ട് മുന്നോട്ട് നീങ്ങുന്നു. വിആർ റോബോട്ടിനെ മേശയിൽ നിന്ന് വീഴാൻ നയിക്കുന്നു.
ഈ പാഠത്തിന്റെ ബാക്കി ഭാഗം തുടരാൻ അടുത്തത് ബട്ടൺ തിരഞ്ഞെടുക്കുക.