Skip to main content

পাঠ ৩: একাধিক While লুপ সহ প্রকল্প প্রবাহ

এখন যেহেতু আপনি Wall Maze Playgroundএ VR রোবটকে 'A' অক্ষরে নেভিগেট করার জন্য একটি টেক্সট প্রজেক্ট তৈরি করেছেন, আপনি শর্তসাপেক্ষ এবং সেন্সর মান ব্যবহার করে আপনার দক্ষতা প্রসারিত করবেন। এই পাঠে, আপনি VR রোবটটিকে Wall Maze Playgroundএর '2' নম্বরে নেভিগেট করবেন, তারপর 'B' অক্ষরে গাড়ি চালানোর জন্য অতিরিক্ত কমান্ডের প্রয়োজন কেন তা অন্বেষণ করবেন। মিনি-চ্যালেঞ্জে, আপনি ওয়াল মেজের শুরু থেকে '3' নম্বরে নেভিগেট করার জন্য এই দক্ষতাগুলি প্রয়োগ করবেন।

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

শেখার ফলাফল

  • বাম্পার সেন্সর চাপা না হওয়া পর্যন্ত একটি VR রোবট ড্রাইভ ফরোয়ার্ড আছে এমন একটি প্রকল্পে প্রোগ্রাম প্রবাহ বর্ণনা করুন।

প্রকল্পের নাম পরিবর্তন করুন

  • যদি পূর্ববর্তী পাঠের প্রকল্পটি ইতিমধ্যে লোড না হয়, তাহলে Unit4Lesson2 প্রকল্পটি লোড করুন।
  • প্রকল্পটির নাম পরিবর্তন করুন Unit4Lesson3VEXcode VR টুলবারে প্রকল্পের নাম হিসেবে ইউনিট ৪ পাঠ ৩ দেখানো হচ্ছে। প্রকল্পের নামটি একটি লাল বাক্স দিয়ে হাইলাইট করা হয়েছে।

     

 

'A' অক্ষরে ড্রাইভ করার জন্য প্রকল্পের প্রবাহ

আগের পাঠে, VR রোবটটি Wall Maze Playgroundএ 'A' অক্ষরের দিকে গাড়ি চালিয়েছিল। ওয়াল গোলকধাঁধায় একটি নতুন অবস্থানে নেভিগেট করার প্রস্তুতি নেওয়ার সময় প্রকল্পের প্রবাহকে ভেঙে দেওয়া যাক।

খেলার মাঠের মাঝখানে নীচের দিকে শুরুর স্থানে ভিআর রোবট সহ ওয়াল মেজ খেলার মাঠের উপর থেকে নীচের দৃশ্য। A অক্ষরটি রোবটের সরাসরি বাম দিকে, একটি ছোট দেয়াল দ্বারা পৃথক করা হয়েছে।
  • Wall Maze Playgroundএ 'A' অক্ষরে ড্রাইভিং করার জন্য প্রকল্পের প্রবাহটি আরও ভালভাবে বোঝার জন্য, আপনার আগের প্রকল্পটি সংশোধন করে শুরু করুন বা এই বেস প্রকল্পের সাথে মেলে একটি নতুন প্রকল্প তৈরি করুন৷

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • যখন একটি প্রকল্প whileলুপ ব্যবহার করে যার সাথে নয় শর্ত থাকে, তখনও প্রকল্পের প্রোগ্রাম প্রবাহ একই শীর্ষ থেকে নীচের ক্রম অনুসরণ করে। whileলুপ প্রোগ্রাম প্রবাহকে একটি নির্দিষ্ট বিন্দুতে "বিরতি" দিতে দেয়, যখন একটি শর্ত পূরণ হয়। নয়অপারেটরশর্তটি মিথ্যা রিপোর্ট না করা পর্যন্ত প্রকল্পটিকে লুপে থাকতে দেয়। তারপর প্রকল্পটি লুপের বাইরে পরবর্তী কমান্ডে প্রবাহিত হবে। একটি বুলিয়ান অবস্থা, যেমন বাম বাম্পার টিপলে, একটি সত্য বা মিথ্যা মান রিপোর্ট করবে। 'A' অক্ষরে VR রোবট চালানোর জন্য এই কোডে, VR রোবটটি এগিয়ে যাবে যতক্ষণ না বাম বাম্পারের বুলিয়ান অবস্থাটি টিপে রাখা হয়, যা সত্য হয়।
    'A' অক্ষরে ড্রাইভ করার জন্য প্রকল্পের প্রকল্প প্রবাহটি এইরকম দেখাবে:উপরে বর্ণিত প্রকল্পের প্রবাহ বর্ণনা করে এমন একটি প্রকল্প প্রবাহ চিত্র, যা বাম দিকে দেখানো A অক্ষরে নেভিগেট করতে সাহায্য করবে। ডানদিকে, তীরচিহ্নগুলি প্রকল্পটি কীভাবে এগিয়ে চলেছে তা নির্দেশ করে। প্রথমত, একটি লাল চক্রাকার তীর দেখায় যে বাম্পারটি চাপা না থাকলেও, while লুপের অবস্থা মিথ্যা ফেরত দেয়, তাই রোবটটি এগিয়ে যায়। এরপর একটি সবুজ নিচের দিকের তীর দেখায় যে যখন বাম্পারটি চাপা হয়, তখন অবস্থাটি সত্য বলে রিপোর্ট করে তাই প্রকল্পটি সেই লুপ থেকে বেরিয়ে আসে এবং রোবটটি 90 ডিগ্রি বাম দিকে ঘুরতে থাকে। প্রকল্পের প্রতিটি লুপের জন্য এই ক্রমটি পুনরাবৃত্তি করা হয়।

ভিআর রোবটের আচরণ দেখায় যে প্রতিটিwhileলুপ কীভাবে কার্যকর করা হচ্ছে। ভিআর রোবটের গতিবিধির পাশাপাশি ভেঙে ফেলা হলে, প্রকল্পেরলুপ কার্যকর করার সময় প্রতিপরে আমরা স্পষ্টভাবে দেখতে পাচ্ছি যে ভিআর রোবটটি কোথায় পৌঁছেছে।বাম দিকে পাইথন কোড দেখানো হয়েছে যাতে তিনটি ক্রমিক while লুপ রয়েছে, প্রতিটি রোবটকে বাম বাম্পার টিপে না ফেলা পর্যন্ত এগিয়ে যাওয়ার নির্দেশ দিচ্ছে। প্রতিটি লুপে বাম্পার চাপার পর, রোবটটি একটি নির্দিষ্ট ক্রিয়া সম্পাদন করে।  প্রথম লুপে, রোবটটি বাম্পারটি চাপা না দেওয়া পর্যন্ত এগিয়ে যায়, তারপর 90 ডিগ্রি বাম দিকে ঘুরতে থাকে। ডানদিকের ছবিটি এই ক্রিয়াটির পরে একটি গোলকধাঁধায় রোবটের অবস্থান দেখায়, যা একটি হলুদ বৃত্ত দ্বারা চিহ্নিত।  দ্বিতীয় লুপে, রোবটটি আবার সামনের দিকে এগিয়ে যায় যতক্ষণ না বাম্পারটি চাপা পড়ে এবং তারপর 90 ডিগ্রি বাম দিকে ঘুরতে থাকে। দ্বিতীয় ছবিটি এই বাঁকের পরে গোলকধাঁধায় রোবটের আপডেট করা অবস্থান দেখায়।  তৃতীয় এবং শেষ লুপে, রোবটটি বাম্পারটি চাপা না দেওয়া পর্যন্ত এগিয়ে যায়। বাম্পার চাপলে, রোবটটি নড়াচড়া বন্ধ করে দেয়। চূড়ান্ত ছবিতে গোলকধাঁধার মধ্যে রোবটের থামার অবস্থান দেখানো হয়েছে, আবার একটি হলুদ বৃত্ত দ্বারা হাইলাইট করা হয়েছে।

 

'2' নম্বরে ড্রাইভ করুন

এই পাঠে, প্রকল্পটি ওয়াল মেজ খেলার মাঠতে VR রোবট ড্রাইভ নম্বর '2'-এর জন্য সম্পাদনা করা হবে!

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

    ওয়াল মেজ খেলার মাঠের উপর থেকে নিচের দৃশ্য যেখানে VR রোবটটি A মার্কারের উপরে, বাম দেয়ালের দিকে মুখ করে অবস্থিত। একটি লাল তীর A এর দিকে নির্দেশ করে, এবং তিনটি সবুজ তীর 2 নম্বরে যাওয়ার উদ্দেশ্যে তৈরি পথ দেখায়। সবুজ তীরগুলি A এর বিপরীত দেয়ালের দিকে উপরের দিকে নির্দেশ করে, তারপর বাম দিকে 2 নম্বরের বাম দিকের পরবর্তী দেয়ালের দিকে, তারপর নীচের দিকে 2 নম্বর ধরে থাকা কোণে।
  • দ্বিতীয় turn_forকমান্ডের দিক বামের পরিবর্তে ডানে পরিবর্তন করুন। আপনার প্রকল্পটি এখন এইরকম দেখা উচিত:

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • যদি Wall Maze Playground খোলা না থাকে, তাহলে সেটি চালু করুন এবং প্রকল্পটি চালান।
  • দেখুন ভিআর রোবটটি '২' নম্বর দিকে গাড়ি চালাতে শুরু করেছে, কিন্তু একটি দেয়ালে থামছে। সুতরাং, ভিআর রোবটটি যখন দেয়ালে চাপ দেয় তখন থামার পরিবর্তে বাম দিকে ঘুরতে হয়।

    ওয়াল মেজ খেলার মাঠের উপর থেকে নিচের দৃশ্য, যেখানে ভিআর রোবটটি A অক্ষরের বিপরীতে দেয়ালের দিকে মুখ করে উপরের দিকে নির্দেশ করছে।
  • খেলার মাঠ রিসেট করতে "রিসেট" বোতামটি নির্বাচন করুন এবং VR রোবটটিকে তার শুরুর অবস্থানে ফিরিয়ে আনুন।ওয়াল মেজ খেলার মাঠ পুরো খেলার মাঠের ইন্টারফেস দেখাচ্ছে। খেলার মাঠের ইন্টারফেসের নীচে বাম দিকে রিসেট বোতামটি একটি লাল বাক্স দিয়ে হাইলাইট করা হয়েছে।

     

  • VR রোবটটিকে '2' নম্বরে চালানোর জন্য stop কমান্ডটি সরিয়ে এবং নিম্নলিখিত কমান্ডগুলি দিয়ে এটি প্রতিস্থাপন করে কোডটি সম্পাদনা করুন।

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		ড্রাইভট্রেন.ড্রাইভ(ফরওয়ার্ড)
    		অপেক্ষা(5, MSEC)
    	
    	ড্রাইভট্রেন.স্টপ()
  • ওয়াল মেজ খেলার মাঠ চালু করুন যদি এটি ইতিমধ্যে খোলা না থাকে এবং প্রকল্পটি চালান।
  • Wall Maze Playgroundএ '2' নম্বরে VR রোবট ড্রাইভ দেখুন!

    ওয়াল মেজ খেলার মাঠের উপর থেকে নিচের দৃশ্য। ভিআর রোবটটি এখন ২য় মার্কারের উপরে অবস্থিত, নীচের দেয়ালের দিকে মুখ করে এবং এর সামনের অংশটি দেয়ালের সাথে চেপে রাখা হয়েছে।
  • খেলার মাঠ রিসেট করতে "রিসেট" বোতামটি নির্বাচন করুন এবং VR রোবটটিকে তার শুরুর অবস্থানে ফিরিয়ে আনুন।

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