Skip to main content

পাঠ ২: যদি/অন্যথায় শর্তসাপেক্ষ বিবৃতি

এই পাঠে, আপনি এমন একটি প্রকল্প তৈরি করবেন যেখানে VR রোবট Dynamic Castle Crasher Playgroundএ কমপক্ষে দুটি ভবনের উপর আঘাত করবে। প্রতিটি রিসেটের সাথে খেলার মাঠের বিন্যাস পরিবর্তিত হয় বলে লুপ এবং সেন্সর প্রতিক্রিয়া ব্যবহার করে চ্যালেঞ্জ সমাধানের জন্য একটি অ্যালগরিদমের প্রয়োজন হবে।

ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ড লেআউটের উদাহরণ:

একই শুরুর অবস্থানে রোবট এবং বিভিন্ন অবস্থানে দুর্গ সহ ডায়নামিক ক্যাসেল ক্র্যাশার খেলার মাঠের নমুনা লেআউটের তিনটি উপরে থেকে নীচের দৃশ্য। খেলার মাঠটি রিসেট করার সময় দুর্গগুলি কীভাবে অবস্থান পরিবর্তন করে তা জোর দিয়ে লেআউটগুলি পাশাপাশি রয়েছে।

শেখার ফলাফল

  • চিহ্নিত করুন যে একটি [If then else] ব্লক হল একটি C ব্লক যা রিপোর্ট করা বুলিয়ান মানের উপর ভিত্তি করে If বা Else শাখার ভিতরে ব্লকগুলি চালায়।
  • শনাক্ত করুন যে শর্তটি একাধিকবার পরীক্ষা করার জন্য একটি [পুনরাবৃত্তি] বা একটি [চিরকাল] ব্লকের সাথে সাধারণত একটি [যদি তারপর অন্য] ব্লক ব্যবহার করা হয়।
  • চিহ্নিত করুন এবং বর্ণনা করুন কেন লুপগুলির সাথে একটি [if then else] ব্লক ব্যবহার করা হয়।
  • একটি প্রকল্পে [যদি তাহলে অন্য] শাখা চালানোর কারণ হবে তা বর্ণনা করুন।

কিভাবে একটি [যদি অন্যথায়] ব্লক ব্যবহার করবেন

এই চ্যালেঞ্জটি ইউনিট 2-এর ক্যাসেল ক্র্যাশার চ্যালেঞ্জ থেকে আলাদা। ইউনিট 2 চ্যালেঞ্জটি একটি স্থির খেলার মাঠে বিল্ডিংগুলিকে নক করার জন্য সাধারণ সিকোয়েন্সিং এবং ড্রাইভট্রেন কমান্ড ব্যবহার করেছে।

ইউনিট ২ থেকে একটি নমুনা ভেক্সকোড ভিআর প্রকল্প। প্রকল্পটি একটি 'কখন শুরু হবে' ব্লক দিয়ে শুরু হয় এবং এতে 6টি ব্লক সংযুক্ত থাকে। ব্লকগুলো ক্রমানুসারে পড়ে, ড্রাইভ বেগ ১০০% এ সেট করুন; টার্ন বেগ ১০০% এ সেট করুন; ১৫৫০ মিমি সামনের দিকে ড্রাইভ করুন; ১৮০ ডিগ্রি ডানে ঘুরুন; ৭০০ মিমি সামনের দিকে ড্রাইভ করুন; তারপর ৯০ ডিগ্রি ডানে ঘুরুন।

ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএর পরিবর্তনের লেআউটের কারণে VR রোবট দুটি বা ততোধিক বিল্ডিং ছিটকে দেওয়ার জন্য একা ড্রাইভট্রেন কমান্ড যথেষ্ট হবে না। ড্রাইভট্রেন কমান্ডের একটি সেট একটি খেলার মাঠে কাজ করতে পারে, কিন্তু অন্যটিতে নয়। সেন্সর এবং নির্বাচন ব্যবহার করে এমন একটি অ্যালগরিদম প্রয়োজন হবে। এই প্রকল্পে শর্তসাপেক্ষ বিবৃতি সহ নির্বাচন যোগ করে একটি অ্যালগরিদম তৈরি করতে [যদি তারপর অন্য] ব্লক ব্যবহার করা হবে।

ডাইনামিক ক্যাসেল ক্র্যাশার খেলার মাঠের উপর থেকে নিচের দৃশ্য, যেখানে কেবল কিছু দুর্গ ভেঙে পড়েছে এবং অন্যগুলো অক্ষত রয়েছে, যা দেখায় যে দুর্গগুলির অবস্থান যখন এলোমেলোভাবে পরিবর্তিত হয় তখন কেবল ড্রাইভট্রেন কমান্ডগুলি কীভাবে অপর্যাপ্ত।

ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএ ভিআর রোবটের জন্য বিল্ডিংগুলির উপর আঘাত করার জন্য দুটি প্রধান পদক্ষেপ রয়েছে।

  1. যদি VR রোবট একটি দুর্গ বিল্ডিং শনাক্ত করে, তাহলে সেটিকে ছিটকে দিতে তার দিকে এগিয়ে যান।
    1. অন্য সব খেলার মাঠের মতো নয়, ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ড এর দেয়াল নেই। যেহেতু বিল্ডিংগুলি ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএর একমাত্র বস্তু, তাই দূরত্ব সেন্সরটি বিল্ডিং সনাক্ত করতে ব্যবহার করা যেতে পারে।

      লেআউটের নীচের কেন্দ্রে, শুরুর অবস্থানে রোবটটি সহ ডায়নামিক ক্যাসেল ক্র্যাশার খেলার মাঠের উপর থেকে নীচের দৃশ্য, যেখানে একটি বিন্দুযুক্ত তীর রোবটের সামনে একটি দুর্গের দিকে নির্দেশ করছে যা একটি লাল বাক্সে হাইলাইট করা হয়েছে। তীরটি নির্দেশ করে যে সেন্সরটি দুর্গটিকে তার সামনে একটি বস্তু হিসাবে সনাক্ত করতে পারে।
  2. যদি VR রোবট একটি দুর্গ বিল্ডিং শনাক্ত না করে, তাহলে আবার একটি দুর্গ ভবনের জন্য ঘুরে দেখুন।
    1. যেহেতু বিল্ডিংগুলি ডাইনামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএর একমাত্র বস্তু, তাই দূরত্ব সেন্সরটি দুর্গের বিল্ডিং সনাক্ত করতে ব্যবহার করা যেতে পারে।

      ডায়নামিক ক্যাসেল ক্র্যাশার খেলার মাঠের উপর থেকে নিচের দৃশ্য, যেখানে রোবটটি শুরুর অবস্থানে রয়েছে এবং এর উভয় পাশে বাঁকা তীর রয়েছে, যা দুর্গের কোনও বস্তু সনাক্ত না হওয়া পর্যন্ত ঘুরতে হবে তা নির্দেশ করে।

একবার ধাপ 1 এবং 2 সম্পূর্ণ হয়ে গেলে, VR রোবটটি ধাপ 1 এ ফিরে যেতে পারে এবং দূরত্ব সেন্সর ব্যবহার করে পরবর্তী বিল্ডিং খুঁজে পেতে পারে।

  • VEXcode VR-এ একটি নতুন প্রকল্প শুরু করুন এবং প্রকল্পটির নাম দিন Unit9Lesson2

    VEXcode VR টুলবারের মাঝখানে প্রকল্পের নামের বাক্সটি "প্লেগ্রাউন্ড নির্বাচন করুন" বোতামের বাম দিকে একটি লাল বাক্স দিয়ে হাইলাইট করা হয়েছে। প্রকল্পের নাম ইউনিট ৯ পাঠ ২।
  • কর্মক্ষেত্রে দুটি [মন্তব্য] ব্লক যোগ করুন এবং উপরে বর্ণিত ধাপগুলি পূরণ করুন।

    "When started" ব্লকের সাথে দুটি মন্তব্য ব্লক সংযুক্ত করে একটি নতুন VEXcode VR প্রকল্প। মন্তব্যগুলো ক্রমানুসারে পড়েছে: দূরত্ব সেন্সর ব্যবহার করে পাওয়া ভবনটি ঘুরে দেখুন; এবং দূরত্ব সেন্সর ব্যবহার করে একটি ভবন খুঁজে পেতে ঘুরুন।
  • উপরে বর্ণিত প্রতিটি ক্রিয়াকে ট্রিগার করতে একটি [যদি তারপর অন্য] ব্লক ব্যবহার করা যেতে পারে। প্রতিটি ক্রিয়া নির্ভর করে যে [If then else] ব্লকের বুলিয়ান কন্ডিশনটি সত্য বা মিথ্যা রিপোর্ট করে। [মন্তব্য] ব্লকের নিচে একটি [যদি তাহলে অন্য] ব্লক যোগ করুন।

    দ্বিতীয় মন্তব্যের নিচে If then else ব্লক সহ একই VEXcode VR প্রকল্প। If শাখার প্যারামিটারটি খোলা রাখা হয়।

    আপনার তথ্যের জন্য

    [যদি অন্যথায়] ব্লক হল একটি সি ব্লক যা বুলিয়ান রিপোর্টার ব্লককে ইনপুট হিসেবে গ্রহণ করে। [যদি তাহলে অন্য] ব্লক একটি শর্তসাপেক্ষ বিবৃতি যা একটি প্রকল্পের প্রবাহ নিয়ন্ত্রণ করে। শর্ত পূরণ করা হলে [যদি অন্যথায়] ব্লক নির্দেশের একটি নির্দিষ্ট ক্রম কার্যকর করবে, এবং শর্ত পূরণ না হলে নির্দেশের আরেকটি সেট, যার ফলে প্রকল্প প্রবাহকে 'শাখা' করা হবে। শুধুমাত্র একটি শাখা [যদি অন্যথায়] মৃত্যুদন্ড কার্যকর করা হবে।

    VEXcode VR টুলবক্স থেকে একটি If then else ব্লক।
    • যদি শর্তটি সত্য হিসাবে রিপোর্ট করা হয়, তাহলে If then শাখার ভিতরের ব্লকগুলি চালানো হয়।
    • যদি শর্তটি FALSE হিসাবে রিপোর্ট করা হয়, তাহলে অন্য শাখার ভিতরের ব্লকগুলি চালানো হয়৷
    If then else ব্লকের প্রতিটি শাখার কার্যকারিতা চিত্রিত করার জন্য একটি VEXcode VR প্রকল্প ব্যবহার করা হয়। এই প্রকল্পে, If then else ব্লকটি When started এর সাথে সংযুক্ত করা হয়েছে এবং "If Front Distance found an object" লেখা আছে, তারপর "Comment - Distance Sensor ব্যবহার করে পাওয়া ভবনের উপর দিয়ে ধাক্কা দিন এবং সামনের দিকে গাড়ি চালান; অন্যথায়, Distance Sensor ব্যবহার করে একটি ভবন খুঁজে পেতে ঘুরুন এবং ডানদিকে ঘুরুন। 'যদি তাহলে' শাখাটি "দূরত্ব সেন্সর কোনও বস্তু সনাক্ত করলে এগিয়ে যান" লেবেলযুক্ত। 'অন্যথা' শাখাটি "ডানদিকে ঘুরুন" হিসাবে লেবেলযুক্ত, যদি দূরত্ব সেন্সর কোনও বস্তু সনাক্ত না করে।

    একটি শাখার ভিতরের সমস্ত ব্লক চালু হয়ে গেলে, প্রকল্পটি [যদি তারপর অন্য] ব্লকের বাইরে পরবর্তী ব্লকে চলে যাবে।

  • এই প্রকল্পে, দূরত্ব সেন্সর খেলার মাঠে বিল্ডিং সনাক্ত করতে ব্যবহার করা যেতে পারে। [If then else] ব্লকে <Distance found object> ব্লক যোগ করুন।

    আগের একই VEXcode VR প্রকল্প, যেখানে If then শাখার প্যারামিটার হিসেবে একটি Distance Found অবজেক্ট ব্লক যোগ করা হয়েছে। "If then" ব্লকটি এখন "If Front Distance found an object then" পড়ে।

    আপনার তথ্যের জন্য

    <Distance found object> ব্লক হল একটি বুলিয়ান রিপোর্টার ব্লক যেটি রিপোর্ট করে যদি দূরত্ব সেন্সর VR রোবটের সামনে কোনো বস্তু খুঁজে পেয়েছে। VR রোবটের 3000 মিলিমিটার (মিমি) মধ্যে কোনো বস্তু বা পৃষ্ঠ থাকলে এই ব্লকটি সত্য বলে রিপোর্ট করে।

    টুলবক্স থেকে দূরত্বে বস্তু পাওয়া গেছে VEXcode VR ব্লক যা পড়ে Front Distance found an object?
  • এখন [If then else] ব্লকের প্রতিটি শাখাকে প্রকল্পের শুরুতে তৈরি করা মন্তব্য ব্যবহার করে সংজ্ঞায়িত করতে হবে। যখন <Distance found object> ব্লক সত্য বলে রিপোর্ট করে, তখন VR রোবটটিকে সেই বিল্ডিংটির দিকে ধাক্কা দিতে হবে। সেই [মন্তব্য] ব্লকটি প্রকল্পের 'যদি তারপর' শাখায় সরান।

    প্রথম মন্তব্য সহ একই VEXcode VR প্রকল্পটি If then শাখার C-এর ভিতরে স্থানান্তরিত হয়েছে। প্রকল্পটিতে এখন লেখা আছে "যখন শুরু হয়েছে, যদি সামনের দূরত্ব কোনও বস্তু খুঁজে পায়, তাহলে দূরত্ব সেন্সর ব্যবহার করে পাওয়া ভবনটি নক করো।"
  • অন্য [মন্তব্য] ব্লকটি প্রকল্পের 'অন্য' শাখায় নিয়ে যান যদি VR রোবট কোনো বিল্ডিং শনাক্ত না করে তাহলে কী হবে।

    else শাখার C এর ভিতরে দ্বিতীয় মন্তব্য সহ একই VEXcode VR প্রকল্প। প্রকল্পটিতে এখন লেখা আছে "যখন শুরু হয়েছে, যদি সামনের দূরত্ব কোনও বস্তু খুঁজে পায়, তাহলে দূরত্ব সেন্সর ব্যবহার করে পাওয়া ভবনটি ছুঁড়ে ফেলুন; অন্যথায়, দূরত্ব সেন্সর ব্যবহার করে একটি ভবন খুঁজে পেতে ঘুরুন।"
  • [if then else] ব্লকের 'If then' শাখায় একটি [ড্রাইভ] ব্লক যোগ করুন।

    একই VEXcode VR প্রকল্প যার একটি ড্রাইভ ব্লক If then শাখায় প্রথম মন্তব্যের নীচে ফরোয়ার্ড করার জন্য সেট করা আছে। If then শাখাটি এখন পড়ে আছে, If Front Distance found an object, then Comment দূরত্ব সেন্সর ব্যবহার করে পাওয়া ভবনের উপর নক করুন; সামনের দিকে ড্রাইভ করুন।
  • যখন <Distance found object> ব্লক মিথ্যা রিপোর্ট করে, তখন VR রোবটকে ঘুরতে হবে এবং খেলার মাঠে একটি বিল্ডিং খুঁজে বের করতে হবে। [If then else] ব্লকের 'অন্য' শাখায় [মন্তব্য] ব্লকের নীচে একটি [টার্ন] ব্লক যোগ করুন।

    Else শাখায় দ্বিতীয় মন্তব্যের ঠিক নীচে একটি টার্ন ব্লক সহ একই VEXcode VR প্রকল্প। এখন "Else" শাখায় "Else" লেখা আছে, "Distance Sensor ব্যবহার করে একটি ভবন খুঁজে পেতে মন্তব্য করুন; তারপর ডানদিকে ঘুরুন।"
  • প্রকল্পটি পরীক্ষা করার আগে, আরও একটি ব্লক যোগ করতে হবে। [যদি অন্যথা হয়] ব্লকগুলি স্ট্যাকের পরবর্তী ব্লকে যাওয়ার আগে কেবল বার শর্ত পরীক্ষা করবে। ইউনিট 7-এ, ভিআর রোবটকে বারবার ডাউন আই সেন্সরের অবস্থা পরীক্ষা করার নির্দেশ দেওয়ার জন্য প্রকল্পে একটি [চিরকাল] ব্লক যুক্ত করা হয়েছিল। দূরত্ব সেন্সরের অবস্থা বারবারচেক করা হচ্ছে তা নিশ্চিত করতে, [যদি অন্যথায়] ব্লকের চারপাশে ওয়ার্কস্পেসে একটি [ফরএভার] ব্লক টেনে আনুন।

    প্রকল্পে একটি ফরএভার ব্লক কীভাবে যুক্ত করবেন তার একটি সারসংক্ষেপ যাতে If then else ব্লকের সম্পূর্ণ অংশ ফরএভার ব্লকের C এর ভিতরে থাকে। প্রকল্পটি এখন পড়ে আছে "কখন শুরু হয়েছে, চিরকাল", "যদি সামনের দূরত্বে কোনও বস্তু পাওয়া যায় তাহলে সামনের দিকে গাড়ি চালাও; অন্যথায় ডানদিকে ঘুরো।"
  • ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ড খুলুন এবং প্রকল্পটি চালান।

    ক্যাসেল ক্র্যাশার খেলার মাঠের উপর থেকে নিচের দৃশ্য, যেখানে তিনটি দুর্গ অক্ষত এবং দুটি দুর্গ ভবন ধসে পড়েছে। রোবটটি একটি ধসে পড়া দুর্গের পাশে উপরের ডানদিকের কোণে রয়েছে।
  • একবার VR রোবট অন্তত দুটি বিল্ডিং ছিটকে গেলে, খেলার মাঠটি পুনরায় লোড করুন এবং ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএর অন্য লেআউটে প্রকল্পটি চালান।

    ক্যাসেল ক্র্যাশার খেলার মাঠের উপর থেকে নিচের দৃশ্য, যেখানে তিনটি দুর্গ অক্ষত এবং দুটি দুর্গ ভবন ধসে পড়েছে। রোবটটি একটি ধসে পড়া দুর্গের পাশে উপরের ডানদিকের কোণে রয়েছে।
  • প্রকল্পের প্রতিটি দৌড়ে, দূরত্ব সেন্সর দ্বারা একটি বিল্ডিং সনাক্ত না হওয়া পর্যন্ত VR রোবটটি ঘুরবে, তারপরে এটিকে ছিটকে যাওয়ার জন্য সেই বিল্ডিংয়ের দিকে ড্রাইভ করবে।

    খেলার মাঠের পাশ থেকে দুর্গের একটি টুকরো ঠেলে দিচ্ছে ভিআর রোবটের একটি পার্শ্ব দৃশ্য, কিন্তু রোবটটি খেলার মাঠের সীমানায় গাড়ি চালাতে শুরু করেছে যেন এটিও প্রান্ত থেকে পড়ে যাবে।
  • প্রকল্পটি চালানোর সময়, VR রোবট একটি বিল্ডিং টুকরোকে প্রান্তে ঠেলে দিতে পারে এবং খেলার মাঠ থেকে পড়ে যেতে পারে। এর কারণ হল <Distance found object> ব্লক এখনও রিপোর্ট করছে যে VR রোবটের সামনে একটি বস্তু রয়েছে। যখন এই ব্লকটি TRUE রিপোর্ট করে, তখন VR রোবট এগিয়ে যায়। VR রোবটকে টেবিল থেকে পড়ে যাওয়ার জন্য নেতৃত্ব দিচ্ছেন।

এই পাঠের বাকি অংশটি চালিয়ে যেতে পরবর্তী বোতামটি নির্বাচন করুন।