স্ক্র্যাচ প্রোগ্রামিংয়ের এ টু জেড : সপ্তম পর্ব

স্ক্র্যাচের কোড ব্লকগুলো

স্ক্র্যাচ প্রোগ্রাম তৈরি করতে হয় ব্লক দিয়ে। প্রতিটি ব্লকই এক একটি নির্দেশনা — যেমন কিছু বলা, নড়াচড়া করা, শব্দ চালানো বা কোনো শর্ত অনুযায়ী কাজ করা।

এই কোড ব্লকগুলো বিভিন্ন রঙের, যাতে কাজের ধরন অনুযায়ী আলাদা করে চেনা যায়। যেমন:

  • নীল রঙের ব্লকগুলো দিয়ে স্প্রাইটকে নড়ানো হয়

  • বেগুনি রঙের ব্লক দিয়ে কথা বলা বা কিছু দেখানো হয়

  • হলুদ রঙের ব্লক দিয়ে শর্ত বা নিয়ন্ত্রণ নির্ধারণ করা হয়

প্রোগ্রাম লিখতে হলে একাধিক ব্লককে একসঙ্গে জোড়া লাগিয়ে (drag & snap করে) একটি যুক্তিপূর্ণ ধারায় সাজাতে হয়, যাকে বলা হয় স্ক্রিপ্ট। ব্লকের গঠন বা আকার দেখেও অনেক সময় বোঝা যায় যে সেই ব্লকটি কোথায় বা কীভাবে অন্য ব্লকের সাথে যুক্ত হতে পারে।

ব্লকের ভেতর কখনো কখনো

  • সরাসরি সংখ্যা বা লেখা টাইপ করার সুযোগ থাকে

  • আবার কিছু ব্লকে থাকে ড্রপডাউন মেনু, যেখান থেকে উপযুক্ত অপশন বেছে নেওয়া যায়

তোমার প্রজেক্টের কাজের ধরণ অনুযায়ী তুমি কোন কোন ব্লক ব্যবহার করবে, সেটি ঠিক করতে হবে।

নিচের অনুচ্ছেদগুলোতে স্ক্র্যাচের প্রতিটি কোড ব্লকের সংক্ষিপ্ত বিবরণ ও ব্যবহার তুলে ধরা হয়েছে — যেন তুমি বুঝতে পারো কোন ব্লক দিয়ে কী কাজ করা যায়।

আরও পড়ুন

স্ক্র্যাচ ব্লকের ক্যাটাগরিসমূহ

গতি (Motion)

স্ক্র্যাচের ১০ ধরনের ব্লকের মধ্যে সর্বপ্রথমে আমরা গতি (Motion) ব্লকগুলিকে দেখতে পারি। এই ব্লক মূলত স্প্রাইটের নড়াচড়া, দিক পরিবর্তন ও নির্দিষ্ট অবস্থানে সরিয়ে নিয়ন্ত্রন করার কাজে ব্যবহার করা হয়ে থাকে।

স্প্রাইট কে ১০ ঘর/ধাপ অবস্থান পরিবর্তন  করার জন্য এই ব্লক ব্যবহার করা হয়ে থাকে। ব্লকের শুরুতে 10 লেখা অংশে যে সংখ্যা লেখা হবে স্প্রাইটটি সেই সংখ্যক ঘর অতিক্রম করবে।

স্প্রাইটকে ডান দিকে ঘোরানোর জন্য এই ব্লক ব্যবহার করা হয়। এখানের মাঝে 15 লেখা আছে, প্রয়োজন অনুসারে মান পরিবর্তন কতটুকু ঘুরতে হবে তা নিয়ন্ত্রণ করা যায়।

স্প্রাইটকে বামে ঘোরাতে এই ব্লকটি ব্যবহার করা হয়ে থাকে। বর্ডার দেয়া সাদা ঘরে লেখা 15 মানটি পরিবর্তন করে ০-৩৬০ এর মধ্যে যে কোন সংখ্যা ব্যবহার করা যাবে।

এই ব্লকটি ব্যবহার করলে স্প্রাইটকে মঞ্চের যেকোনো জায়গায় পাঠানো যায়। প্রোগ্রামে এই ব্লকটি যোগ করলে স্প্রাইট এক জায়গা থেকে হুট করে অন্য জায়গায় চলে যায়। ব্লকটির মধ্যে একটি ছোট ড্রপডাউন মেনু আছে—সেখানে ‘মাউস পয়েন্টার’ অপশনটি বেছে নিলে স্প্রাইট তোমার মাউসের দিক অনুসরণ করতে শুরু করবে! ভাবো, তোমার মাউস যেদিকে যাবে, স্প্রাইটও ঠিক সেদিকে ছুটবে!

x এবং  y এর মান নির্ধারন করে দিয়ে নির্দিষ্ট স্থানে স্প্রাইটকে পাঠাতে হলে এই ব্লকটি ব্যবহার করতে হয়।  

আরও পড়ুন

এই ব্লকটি ব্যবহার করলে স্প্রাইট এক জায়গা থেকে আরেক জায়গায় ধীরে ধীরে গ্লাইড করে চলে যায়—একেবারে মসৃণভাবে, যেন স্লাইড করে যাচ্ছে! এখানে তুমি ঠিক করে দিতে পারো, কত সেকেন্ডে এটি কোথায় যাবে। সময়ের জায়গায় চাইলে সংখ্যা লেখো, চাইলে ভ্যারিয়েবল (যেমন: ‘সময়’) ব্যবহার করো—তাহলেই স্প্রাইট তোমার নির্ধারিত সময় অনুযায়ী গ্লাইড করে পৌঁছে যাবে এর গন্তব্যে!

নির্দিষ্ট অবস্থানে যেতে অর্থাৎ x এবং y স্থানাঙ্ক ব্যবহার করে নির্ধারিত সময় পর্যন্ত গ্লাইড করার জন্য এই ব্লক ব্যবহার করা হয় এখানে স্থানাঙ্ক এবং সময়ের জন্য ভ্যারিয়েবল দেওয়া আছে।

স্প্রাইটি কত ডিগ্রি তে অবস্থান করবে তা নির্দেশ করতে এই ব্লকটি ব্যবহার করা হয়।

মাউসের পয়েন্টার যেদিকে সরে যাবে সেদিকে স্প্রাইটকে পরিচালনার জন্য এই ব্লকটি ব্যবহার করা হয়।

স্প্রাইটের x স্থানাঙ্ক কে পরিবর্তন করার জন্য এই ব্লক ব্যবহার করা হয়। প্রয়োজন অনুসারে এখানে মান বসাতে হয়।

স্প্রাইটের x অক্ষের মান নির্ধারন করতে এই ব্লক ব্যবহার করা হয়ে থাকে।

স্প্রাইটের y স্থানাঙ্ক কে পরিবর্তন করার জন্য এই ব্লক ব্যবহার করা হয়। প্রয়োজন অনুসারে এখানে মান বসাতে হয়।

আরও পড়ুন

স্প্রাইটের y অক্ষের মান নির্ধারন করতে এই ব্লক ব্যবহার করা হয়ে থাকে।

 স্প্রাইট কে স্টেজের কিনার পৌছানোর পর লাফানোর ক্ষেত্রে এই ব্লক ব্যবহার করা হয়ে থাকে।

বাম থেকে ডানে ঘূর্ণনের জন্য এই ব্লক ব্যবহার করা হয় 

আরও পড়ুন

X এর অবস্থান স্ক্রীনে দেখানোর জন্য ব্যবহার করা হয়ে থাকে। এখানে অবস্থান প্রকাশ করবে কি না সে জন্য চিহ্নিত করার অপশন রয়েছে। 

y এর অবস্থান স্ক্রীনে দেখানোর জন্য ব্যবহার করা হয়। এখানে অবস্থান প্রকাশ করবে কি না সে জন্য চিহ্নিত করার অপশন রয়েছে। 

দিকে কে স্ক্রীনে দেখানোর জন্য এই ব্লক ব্যবহার করা হয়। বক্সে চিহ্নিত না করলে দিন দেখাবে না

আরও পড়ুন

চেহারা (Looks)

কোড ট্যাব এর ২য় ব্লকটি হলো চেহারা ব্লক। এটি স্প্রাইটের চেহার পরিবর্তনে ব্যবহার করা হয়ে থাকে।

এই ব্লকটি ব্যবহার করলে স্প্রাইটের মাথার উপর একটা ছোট মেঘের মতো বক্স ভেসে ওঠে, যেখানে সে কিছু বলে! যেমন, যদি লেখো ‘হ্যালো!’, তাহলে স্প্রাইট ঠিক সেটাই বলবে! এই মেসেজটি ২ সেকেন্ড বা তার বেশি/কম সময় দেখানো যাবে—তোমার ইচ্ছেমতো সময় লিখে দাও। ব্লকের ভিতরের লেখাটি মুছে দিয়ে তুমি নিজের পছন্দমতো কিছু টাইপ করতে পারো—'কেমন আছো?’, ‘চলো খেলি!’, কিংবা ‘আজকের দিনটা মজার!’—স্প্রাইট বলবে ঠিক তাই!

এই ব্লকটি ব্যবহার করলে স্প্রাইটের মাথার ওপর যে লেখাটি থাকবে, তা চিরকাল দেখা যাবে! কারণ এখানে ঠিক করে দেওয়া হয়নি কত সেকেন্ড সেটা দেখাবে। তুমি ব্লকের ভিতরে যা লিখবে—যেমন ‘আমি প্রস্তুত!’, ‘এগিয়ে চলো!’—সেটাই স্প্রাইট বলে থাকবে যতক্ষণ না তুমি অন্য কোনো ব্লক দিয়ে সেটি সরিয়ে দাও।

এই ব্লকটি ব্যবহার করলে স্প্রাইটের মাথার উপরে এক ধরনের মেঘের মতো গোল বুদবুদের মধ্যে কিছু লেখা দেখা যায়—যেমন ‘হুম…’। ঠিক যেন সে কিছু একটা নিয়ে ভাবছে! এই লেখা ২ সেকেন্ডের জন্য দেখা যাবে।

তুমি চাইলে ‘হুম…’ এর জায়গায় অন্য কিছু লিখতে পারো, যেমন: ‘এটা কোথায় গেল?’, ‘আমি কি এটা পারব?’, বা ‘আজ তো দারুণ লাগছে!’

এই ব্লকটা দেখতে বল (Say) ব্লকের মতো হলেও একটু আলাদা—বল ব্লকে মনে হয় স্প্রাইট কারও সঙ্গে কথা বলছে, আর চিন্তা কর ব্লকে মনে হয় সে নিজের মনে মনে কিছু চিন্তা করছে!

ব্লকটির ভিতরের লেখাটি অনির্দিষ্ট সময়ের জন্য মেঘের মত বক্সটিতে দেখাবে।

স্প্রাইটের অ্যানিমেশন আসলে তৈরি হয় তার একাধিক ছবির সমন্বয়ে, যেগুলোর প্রতিটা একেক রকম দেখতে হয়। এই প্রতিটি আলাদা ছবি বা রূপকে বলা হয় পোশাক (Costume)।

একটি স্প্রাইটকে যদি কোনো নির্দিষ্ট পোশাকে দেখাতে চাও, তখন ‘পোশাক দেখাও (switch costume to)’ ব্লকটি ব্যবহার করতে হবে। এই ব্লক দিয়ে তুমি ঠিক করতে পারো, এখন স্প্রাইটটি কোন পোশাক পরবে বা কেমন দেখতে হবে।

তুমি স্ক্র্যাচ এডিটরের ‘পোশাক (Costumes)’ ট্যাবে গেলে একসাথে সব পোশাক দেখতে পাবে এবং যেটা দরকার সেটি নির্বাচন করে সেই অনুযায়ী ব্লক দিয়ে নির্দেশ দিতে পারবে।

এভাবে এক পোশাক থেকে আরেক পোশাক বদলে স্প্রাইটকে হাঁটানো, দৌড়ানো বা হাত নাড়ানোর মতো অ্যানিমেশন তৈরি করা যায়।

আরও পড়ুন

স্প্রাইটের পরবর্তি পোশাক দেখাতে এই ব্লকটি ব্যবহার করতে হয়।

একটি স্ক্র্যাচ প্রজেক্টে কয়েকটি ব্যাকড্রপ থাকতে পারে। প্রয়োজন অনুসারে নির্দিষ্ট ব্যাকড্রপটি পরিবর্তন করতে এই ব্লকটি ব্যবহার করতে হয়। ব্লকটির ড্রপডাউন অপশন থেকে ব্যাকড্রপের নাম নির্বাচন করে ব্যাকড্রপ চেঞ্জ করতে হয়।

পরবর্তি ব্যাকড্রপ দেখাতে এই ব্লকটি ব্যবহার করতে হয়।

এই ব্লকটি ব্যবহার করে স্প্রাইটের আকার ১০% করে বৃদ্ধি করা যায়।  এখানে ১০ এর পরিবর্তে যে কোন সংখ্যা ব্যবহার করে স্প্রাইটের আকার ধাপে ধাপে পরিবর্তন করা যায়।

এই ব্লকটি স্প্রাইটের আকার ১০০% নির্ধারণ করবে।  এখানে ১০০ এর পরিবর্তে প্রয়োজন মত সংখ্যা বসিয়ে প্রয়োজন অনুসারে স্প্রাইটের আকার পরিবর্তন করা যাবে।

স্প্রাইটের মধ্যে রং এর বর্নালি দেখতে এই স্প্রাইটটি ব্যবহার করা হয়। এখানে ড্রপডাউন থেকে নিদিষ্ট রং নির্বাচন করে এর বর্নালি দেখানো যায়।

আরও পড়ুন

স্প্রাইটে কোন নির্দিষ্ট রং নির্ধারন করতে এই ব্লকটি ব্যবহার করা যায়।

স্প্রাইটের জন্য ব্যবহার করা সব ইফেক্ট ও রংয়ের পরিবর্তন মুছে দিয়ে স্প্রাইট কে একদম আগের অবস্থায় ফিরিয়ে আনতে এই ব্লকটি ব্যবহার করতে হয়।

এই ব্লকটি ব্যবহার করলে স্টেজের অদৃশ্য স্প্রাইটটিকে স্টেজে আবার দেখাবে।

এই ব্লকটি ব্যবহার করলে স্প্রাইটটি স্টেজ থেকে অদৃশ্য হয়ে যাবে।

স্প্রাইটগুলো প্রোগ্রামে এক একটি স্তর হিসেবে যুক্ত থাকে। এখন আমরা যদি পিছনের স্তরে থাকা একটি স্প্রাইট সামনের দিকে নিয়ে আসতে চাই তাহলে এই ব্লক ব্যবহার করা যেতে পারে।

স্প্রাইটগুলো প্রোগ্রামে এক একটি স্তর হিসেবে যুক্ত থাকে। এখন আমরা যদি পিছনের স্তরে থাকা একটি স্প্রাইট এক বা একাধিক স্তর সামনের দিকে নিয়ে আসতে চাই তাহলে এই ব্লক ব্যবহার করা যেতে পারে।

প্রজেক্টের প্রয়োজন অনুযায়ী কোন পোশাকের ক্রমিক নম্বর বা নাম বের করার জন্য এই ব্লকটি ব্যবহার করতে হবে। এখানে ড্রপডাউন থেকে বলে দিতে হবে যে তুমি কোনটি দেখতে চাও।

প্রজেক্টের প্রয়োজন অনুযায়ী ব্যাকড্রপের ক্রমিক নম্বর বা নাম বের করার জন্য এই ব্লকটি ব্যবহার করতে হবে। এখানে ড্রপডাউন থেকে বলে দিতে হবে যে তুমি কোনটি দেখতে চাও।

কোন একটি স্প্রাইটের বর্তমান আকার দেখার জন্য এই ব্লকটি ব্যবহার করতে হয়।

আরও পড়ুন

শব্দ (Sound)

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

এই ব্লকটি ব্যবহার করলে একটি শব্দ চালু হবে এবং শেষ না হওয়া পর্যন্ত পরবর্তি ব্লকের কাজ করবে না।

এই ব্লকটি ব্যবহার করলে একটি শব্দ শুরু হবে সাথে সাথে পরবর্তি ব্লকের কাজ ও ধাপে ধাপে করতে থাকবে।

প্রজেক্টে ব্যবহার করা সব শব্দ বন্ধ করে দিবে।

শব্দের টোন চিকন বা মোটা করতে এই ব্লকটি ব্যবহার করতে হয়। ব্লকটিতে সংখ্যা চেঞ্জ করে এর পরিবর্তনের পরিমান কম বা বেশি করা যায়।

শব্দের টোন নির্দিষ্ট পরিমাণে চিকন বা মোটা নির্ধারন করতে এই ব্লকটি ব্যবহার করতে হয়।

শব্দের জন্য ব্যবহার করা সকল ইফেক্ট মুছে দিতে এই ব্লকটি ব্যবহার করতে হয়।

শব্দের মাত্রা বা ভলিয়ম কমাতে বা বাড়াতে এই ব্লকটি ব্যবহার করতে হয়। ব্লকের ভিতরে সংখ্যা পরিবর্তন করে এই পরিমান কমানো বা বাড়ানো যায়।

শব্দের মাত্রা নির্দিষ্ট পরিমাণে নির্ধারন করতে এই ব্লকটি ব্যবহার হয়।

শব্দের মাত্রা বা ভলিয়ম বর্তমানে কত আছে তা দেখতে এই ব্লকটি ব্যবহার করতে হয়।

আরও পড়ুন

ঘটনা (Event)

ঘটনা ব্লক কোন প্রোগ্রামে কখন স্প্রাইটকে চালনা শুরু করতে হবে তা নিদের্শ করে। এছাড়াও সমান্তরাল কাজ চলাকালীন সময়ে ঘটনা ব্লকের নির্দেশনা অনুযায়ী কাজগুলো সমান্তরালে চলা শুরু করতে পারে।

একটা প্রোজেক্ট শুরু করার জন্য এই ব্লকটি ব্যবহার করতে হয়। ব্লকটি একটা প্রজেক্টে কমপক্ষে একবার অবশ্যই ব্যবহার করতে হয়। কিন্তু প্রয়োজন অনুসারে যতবার ইচ্ছা ব্যবহার করা যায়।

এই ব্লকটি ব্যবহার করে কম্পিউটার কিবোর্ডের নির্দিষ্ট একটি বোতাম চেপে একটি ঘটনা ঘটানো যায়। যেমন কিবোর্ডের ৪টি এরো কী চাপ দিয়ে একটি স্প্রাইটকে ডানে বামে উপরে নিচে নাড়াচাড়া করানো যায়। এই ব্লকটির ড্রপডাউন অংশে ক্লিক করে ইচ্ছামত বোতামের জন্য প্রোগ্রাম লেখা যায়। 

স্প্রাইটের উপর ক্লিক করলে কি হবে তার প্রোগ্রাম লিখতে এই ব্লকটি ব্যবহার করা হয়।

যদি কোন নির্দিষ্ট ব্যাকড্রপ পরিবর্তন এর জন্য কোন প্রোগ্রাম লেখার প্রয়োজন পরে তাহলে এই ব্লকটি ব্যবহার করতে হবে। ব্লকটির ড্রপডাউন থেকে ব্যাকড্রপ নম্বরটি সিলেক্ট করা যাবে।

শব্দ বা সময়ের নির্দিষ্ট মান যাচাই করা জন্য এই ব্লকটি ব্যবহার করতে হয়। 

সম্প্রচার কার্যক্রম পরিচালনার ক্ষেত্রে এই ব্লক ব্যবহার করা হয়ে থাকে যেখানে এই ব্লকটি স্প্রাইট থেকে বার্তা গ্রহন করে।  

স্প্রাইটের বার্তা সম্প্রচার করতে এই বার্তাটি ব্যবহার করা হয়। ‌

বার্তা সম্প্রচার করা হয়ে গেলে অপেক্ষা করার জন্য এই ব্লকটি ব্যবহার করা হয়ে থাকে।

আরও পড়ুন

নিয়ন্ত্রণ (Control)

স্প্রাইটকে নিয়ন্ত্রনের কাজে নিয়ন্ত্রন ব্লক ব্যবহার করা হয়ে থাকে। কোন একটি ব্লককে বারবার ব্যবহার এর প্রয়োজন হলে নিয়ন্ত্রন ব্লক ব্যবহার করে তা একবার ব্যবহার করে সহজেই করে ফেলা সম্ভব।

স্প্রাইটটিকে ১ সেকেন্ডের জন্য অপেক্ষা করাবে। এখানে ১ এর পরিবর্তে যে সংখ্যাটি দেয়া হবে স্প্রাইটটি তত সময় অপেক্ষা করবে।

কোন ঘটনা নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি করার জন্য এই ব্লকটি ব্যবহার করা হয়।

কোন ঘটনা অনির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি করার জন্য এই ব্লকটি ব্যবহার করা হয়।

কোন একটি ঘটনার প্রেক্ষিতে যদি অন্য আরেকটি কাজ সংগঠিত হবার প্রয়োজন পরে তাহলে তা যাচাইয়ের জন্য এই ব্লকটি ব্যবহার করা হয়। যেমন আমার ক্ষুধা লাগলে আমি ভাত খাবো। এখানে আমার ক্ষুধা লেগেছে কিনা তা যাচাই করার জন্য এই ব্লকটি ব্যবহার করতে হবে।

যদি কোন একটি শর্তের  উপর নির্ভর করে একটি ঘটনা ঘটে তবে সেই শর্তটিকে ‘যদি_তাহলে’ এর মধ্যে দিতে হবে। আর যদি শর্তটি মিথ্যা হয়ে যায় তাহলে যে ঘটনাটি ঘটবে তা ‘অন্যথায়’ এর মধ্যে দিতে হবে।

নির্দিষ্ট সময় বা ঘটনা পর্যন্ত স্প্রাইটকে অপেক্ষা করাতে এই ব্লকটি ব্যবহার করা হয়।

একটি সময় পর্যন্ত পুনরাবৃত্তি করার ক্ষেত্রে এই ব্লকটি ব্যবহার করা হয়ে থাকে।

সব কার্যক্রম থামিয়ে দেওয়ার জন্য এই ব্লকটি ব্যবহার করা হয়ে থাকে ।

একটি স্প্রাইটে প্রোগ্রাম লিখেই একাধিক ক্লোন বা কপি করা যায়। এই ব্লকটি এমন সব ব্লকের ক্ষেত্রে কার্যকর হবে যেগুলো সয়ংক্রিয়ভাবে অপর একটি ব্লকের ক্লোন হিসেবে প্রোগ্রামে সচল রয়েছে।

স্প্রাইটের ক্লোন তৈরি করার জন্য এই ব্লকটি ব্যবহার করা হয়।

স্টেজে ক্লোনের কোন ব্যবহার না থাকলে সেটি মুছে ফেলার জন্য এই ব্লকটি ব্যবহার করা হয়।

চলবে...

আরও পড়ুন