মস্তিষ্কের স্ক্রিনে দ্বিতীয় বোতাম যুক্ত করা - C++
শিক্ষক টুলবক্স
-
এই কার্যকলাপের উদ্দেশ্য
এখন যেহেতু শিক্ষার্থীদের মস্তিষ্কের পর্দাকে একটি বড় বোতামের মতো ব্যবহার করার অভিজ্ঞতা আছে, তাই তারা পর্দাটিকে দুটি বোতামে পরিণত করতে পারে। এই কার্যকলাপটি শিক্ষার্থীদের শর্তসাপেক্ষ বিবৃতি এবং এর অন্তর্নিহিত যুক্তি আরও ভালভাবে পরিচালনা করার জন্য নেস্টেডif then elseবিবৃতি ব্যবহারের সাথে পরিচয় করিয়ে দেবে। স্ক্রিন প্রেসের মাধ্যমে রোবটটিকে বাম বা ডানে ঘোরানোর জন্য প্রথমে শিক্ষার্থীদের প্রকল্প তৈরির নির্দেশনা দেওয়া হয়। কিন্তু, তারপর তাদের বোতামগুলি স্যুইচ করতে বলা হয় যাতে রোবটটি এখন যা বামে ঘুরিয়েছে তা ডানে ঘুরিয়ে দেয়, এবং বিপরীতভাবে।
এই কার্যকলাপে ব্যবহৃতযদি তারপরএবংযদি তারপর অন্যবিবৃতি বা অন্যান্য সম্পর্কে আরও তথ্যের জন্য, VEXcode V5 এর মধ্যে সহায়তা তথ্য দেখুন। এই অন্তর্নির্মিত সহায়তা সরঞ্জাম সম্পর্কে আরও তথ্যের জন্য, আপনিC++এ সহায়তা সম্পর্কে নিবন্ধগুলি পেতে পারেন।
এই কার্যকলাপে আপনার শিক্ষার্থীরা কী করবে তার একটি রূপরেখা নিচে দেওয়া হল:
-
StopOrDriveপ্রকল্প এবং মস্তিষ্কের স্ক্রিনের লেআউট পিক্সেল আকারে পর্যালোচনা করা হচ্ছে।
-
প্রোগ্রামিং এর যুক্তির মাধ্যমে পরিচালিত হয়ে একটি নতুনLeftOrRightপ্রকল্প তৈরি করা।
-
প্রকল্পটি এমনভাবে সংশোধন করা যাতে স্ক্রিনের বোতামগুলি বিপরীতভাবে কাজ করে।
-
আপনার শেখার পরিধি বাড়ান: স্ক্রিনটিকে দুটি বোতামে বিভক্ত করুন যা টিপলে রোবটটি বাম বা ডানে ঘুরবে।
আপনার প্রয়োজনীয় হার্ডওয়্যার, আপনার ইঞ্জিনিয়ারিং নোটবুক এবং VEXcode V5 প্রস্তুত আছে তা নিশ্চিত করুন ।
| পরিমাণ | প্রয়োজনীয় উপকরণ |
|---|---|
| 1 |
VEX V5 ক্লাসরুম স্টার্টার কিট (আপ-টু-ডেট ফার্মওয়্যার সহ) |
| 1 |
VEXcode V5 (সর্বশেষ সংস্করণ, উইন্ডোজ, ম্যাকওএস) |
| 1 |
ইঞ্জিনিয়ারিং নোটবুক |
| 1 |
পূর্ববর্তী Play পৃষ্ঠা থেকে StopOrDrive প্রকল্প |
মস্তিষ্কের পর্দায় একাধিক বোতাম থাকতে পারে।
এই কার্যকলাপটি আপনাকে রোবটটিকে সামনের দিকে চালানোর এবং বাম বা ডানে ঘুরতে প্রোগ্রাম করার সুযোগ দেবে, যা মস্তিষ্কের পর্দার কোন দিকে চাপ দেওয়া হয়েছে তার উপর নির্ভর করে।
এই কার্যকলাপ চলাকালীন আপনার যে তিনটি অতিরিক্ত ধরণের নির্দেশাবলীর প্রয়োজন হবে তা হল:
- Drivetrain.turn(ডানে);
- সংখ্যা< ৫০
- Brain.Screen.xPosition();
নির্দেশাবলী সম্পর্কে জানতে আপনি VEXcode V5 এর ভিতরে সহায়তা তথ্য ব্যবহার করতে পারেন ।

ধাপ 1: স্টপঅরড্রাইভ প্রকল্পটি পর্যালোচনা করে শুরু করা যাক ।
স্টপঅরড্রাইভ প্রকল্পটি পর্যালোচনা করে শুরু করা যাক ।
StopOrDrive প্রকল্পে স্ক্রিনটি চাপলে Clawbot বন্ধ হয়ে যেত, অন্যথায় এটি সামনের দিকে এগিয়ে যেত।
পুরো স্ক্রিনটি একটি বড় বোতাম ছিল কিন্তু এই পরবর্তী প্রকল্পে, আমরা চাই অর্ধেক স্ক্রিন একটি বোতামে এবং বাকি অর্ধেকটি অন্য বোতামে থাকবে।
//প্রজেক্ট কোড
int main() {
//রোবট কনফিগারেশন শুরু করুন । মুছে ফেলবেন না!
vexcodeInit();
যখন (সত্য)
{Drivetrain.drive (এগিয়ে);
যদি (Brain.Screen.pressing () {
Drivetrain.stop ();
waitUntil(!Brain.Screen.pressing();
}
else {
Drivetrain.drive(forward);
}
} স্ক্রীনকে দুটি বোতামে বিভক্ত করার জন্য, আমাদের স্ক্রিনের লেআউট সম্পর্কে আরও বুঝতে হবে ।

- লক্ষ্য করুন যে কলামের সংখ্যা বাম থেকে ডানে বৃদ্ধি পায় । কলামের সংখ্যা 48 এবং স্ক্রিনটি 480 পিক্সেল প্রশস্ত ।
- আপনার ইঞ্জিনিয়ারিং নোটবুকে লিখুন যে পর্দায় x-মান বাম থেকে ডানে পরিমাপ করা পিক্সেলের সংখ্যার সমান ।
- স্ক্রিনের কেন্দ্রের x-মান কত? এই ক্রিয়াকলাপের জন্য, আপনি কেবল এক্স-অক্ষের উপর ফোকাস করতে পারেন কারণ আপনার কেবল একটি বাম এবং ডান বোতামের প্রয়োজন ।
শিক্ষক টুলবক্স
-
উত্তর
স্ক্রিনের কেন্দ্রে x-মান পিক্সেলে স্ক্রিনের প্রস্থের অর্ধেকের সমান। তাহলে কেন্দ্রবিন্দুর x-মান হল 240। স্ক্রিনটি বাম দিকে চাপা হবে নাকি ডান দিকে, তার শর্তসাপেক্ষ প্রোগ্রাম করার জন্য শিক্ষার্থীদের এই নম্বরটির প্রয়োজন হবে। তাই নিশ্চিত করুন যে তাদের সকলের মান সঠিক কিনা।
ভবিষ্যতের দিকে তাকালে, রিথিঙ্ক বিভাগে ইউজার ইন্টারফেস চ্যালেঞ্জের জন্য শিক্ষার্থীদের স্ক্রিনে চারটি বোতাম তৈরি করার জন্য তারা যা শিখেছে তা প্রয়োগ করতে হবে। তাই এর জন্য, তাদের x- এবং y-উভয় মানই প্রয়োজন হবে।
শিক্ষকদের টিপস
আরও সহায়তার জন্য, সম্পূরক সহায়তা নিবন্ধগুলির জন্যVEX লাইব্রেরিদেখুন।
ধাপ 2: দুটি বোতামের জন্য প্রোগ্রামিং ।
- StopOrDriveLeftOrRightপ্রকল্প হিসেবে সংরক্ষণ করুন।
- নিচের প্রকল্পটি তৈরি করুন । স্ক্রীনটি চাপলে এর বাম বা ডানদিকে ক্লবট টার্ন থাকবে, এটি যে দিকে চাপানো হয় তার উপর নির্ভর করে ।
//প্রজেক্ট কোড
int main() {
//রোবট কনফিগারেশন শুরু করুন । মুছে ফেলবেন না!
vexcodeInit();
যখন (সত্য) {
if (Brain.Screen.pressing ()) {
if (Brain.Screen.xPosition () < 240)
{Drivetrain.turn (বাম)
; waitUntil (!Brain.Screen.pressing();
} else {
Drivetrain.turn(right);
waitUntil(!Brain.Screen.pressing();
}
} else {
Drivetrain.drive(forward);
}
} - এই প্রকল্পটি কী করে তা পর্যালোচনা করা যাক।
এটি স্ক্রিনটি চাপা আছে কিনা তা পরীক্ষা করে। যদি স্ক্রিনটি না চাপা হয় তবে এটি সামনের দিকে এগিয়ে যায় কিন্তু যদি থাকে তবে এটি স্ক্রিনটি কোথায় চাপা হয়েছে তা পরীক্ষা করে।
যদি প্রেসটি বাম দিকে থাকে (240 এর কম), তবে এটি বাম দিকে ঘুরবে। অন্যথায়, এটি সঠিক হয়ে যায় । যখন x-মান 240 এর চেয়ে বেশি হয় তখন আমাদের অন্য কোনও শর্তের প্রয়োজন হয় না কারণ এটি যদি 240 এর চেয়ে কম না হয় (বাঁদিকে ঘুরুন), তবে এটি অবশ্যই বড় হতে হবে (ডানদিকে ঘুরুন) । আমাদের চিন্তা করার জন্য কেবল দুটি বোতাম আছে।
টিপর্যন্ত অপেক্ষা করুন প্রতিটি বাঁকের পরে নিয়ন্ত্রণ নির্দেশাবলী প্রকল্পটিকে অপেক্ষা করতে হবে যতক্ষণ না স্ক্রিনটি আর চাপা হচ্ছে এবং চালিয়ে যাওয়ার আগে।

- এখন প্রকল্পটি সম্পন্ন হয়েছে, এটি কীভাবে কাজ করে তা পরীক্ষা করতে ডাউনলোড করুন এবং চালান ।

- কীভাবে বোতামগুলি Clawbot এর চলাচল নিয়ন্ত্রণ করে সে সম্পর্কে আপনার ইঞ্জিনিয়ারিং নোটবুকে নোট নিন ।
শিক্ষকদের টিপস
পরীক্ষা দেওয়ার সময়, শিক্ষার্থীদের বুঝতে হবে যে Clawbot-এর পিছন থেকে ব্যবহার করা হলে, ব্যবহারকারী ইন্টারফেসটি বিপরীত দিকে কাজ করে বলে মনে হয়। ব্যবহারকারীর দৃষ্টিকোণ থেকে, ক্লবটটি ব্যবহারকারীর দ্বারা চাপানো দিক থেকে মুখ ফিরিয়ে নেয়। এটি সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতা নয়।
ধাপ 3: আরও ভাল ইউজার এক্সপেরিয়েন্সের জন্য প্রজেক্টটি অ্যাডজাস্ট করুন ।
এগিয়ে যাওয়ার সময় ক্লবটের পিছন থেকে স্ক্রিনের বোতামগুলি টিপুন, আপনি স্ক্রিনের ডান দিকে বাম দিকে এবং স্ক্রিনের বাম দিকে ডানদিকে ঘুরানোর জন্য টিপুন । এটি একটি ভাল ব্যবহারকারীর অভিজ্ঞতা নয় । একটি ইউজার এক্সপেরিয়েন্স হল একটি কম্পিউটার সিস্টেম নিয়ন্ত্রণ করতে একজন ব্যবহারকারী একটি ইউজার ইন্টারফেসের সাথে কতটা ভালভাবে ইন্টারঅ্যাক্ট করতে পারে । এই ল্যাবের প্রয়োগ বিভাগে ব্যবহারকারী ইন্টারফেস সম্পর্কে আরও তথ্য রয়েছে।
এই ক্ষেত্রে, ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য আমাদের ব্যবহারকারী ইন্টারফেস উন্নত করতে হবে।
- LeftOrRight প্রকল্পটি পর্যালোচনা করুন এবং এটি সংশোধন করুন যাতে ব্যবহারকারী ক্লবটের পিছনে থেকে বোতামগুলি টিপলে, ব্যবহারকারী স্ক্রিনের বাম দিকে টিপলে রোবটটি ডানদিকে ঘুরবে । অথবা অন্যথায়, Clawbot বাম দিকে ঘুরবে ।
//প্রজেক্ট কোড
int main() {
//রোবট কনফিগারেশন শুরু করুন । মুছে ফেলবেন না!
vexcodeInit();
যখন (সত্য) {
if (Brain.Screen.pressing ()) {
if (Brain.Screen.xPosition () < 240)
{Drivetrain.turn (বাম)
; waitUntil (!Brain.Screen.pressing();
} else {
Drivetrain.turn(right);
waitUntil(!Brain.Screen.pressing();
}
} else {
Drivetrain.drive(forward);
}
} - আপনার ইঞ্জিনিয়ারিং নোটবুকে এই প্রকল্পের পরিকল্পনা, পরীক্ষা এবং পুনরাবৃত্তি করুন যাতে প্রকল্পটি ক্লবটকে স্ক্রিনের পাশে পরিণত করে যা ব্যবহারকারী ক্লবটের পিছনে থেকে টিপছে ।
শিক্ষক টুলবক্স
শিক্ষার্থীদের তাদের ইঞ্জিনিয়ারিং নোটবুকের মধ্যে প্রকল্পের এই পরিবর্তনগুলি পরিকল্পনা, পরীক্ষা এবং পরিমার্জন করা উচিত। পৃথক ইঞ্জিনিয়ারিং নোটবুক রুব্রিকের জন্য, নিম্নলিখিত লিঙ্কগুলির মধ্যে একটিতে ক্লিক করুন (Google Doc / .docx / .pdf), অথবা টিম নোটবুকের জন্য নিম্নলিখিত লিঙ্কগুলির মধ্যে একটিতে ক্লিক করুন (Google Doc / .docx / .pdf)। শিক্ষার্থীরা কাজ শুরু করার আগে তাদের স্কোরিং ব্যাখ্যা করতে ভুলবেন না।
শিক্ষক টুলবক্স
-
সমাধান
উপরে উত্থাপিত সমস্যাটি সমাধানের দুটি সম্ভাব্য উপায় রয়েছে। প্রথম উপায়টি হল নির্দেশে লেখা: LeftOrRight প্রকল্পটি পর্যালোচনা করুন এবং এটিকে সংশোধন করুন যাতে ব্যবহারকারী যখন Clawbot এর পিছনের বোতামগুলি টিপে, ব্যবহারকারী যখন স্ক্রিনের বাম দিকে টিপে তখন রোবটটি ডানদিকে ঘুরতে পারে। অন্যথায়, ক্লবটটি বাম দিকে ঘুরবে।
// প্রকল্প কোড শুরু করুন
int main() {
// রোবট কনফিগারেশন শুরু করা হচ্ছে। সরাবেন না!
vexcodeInit();
while (true) {
if (Brain.Screen.pressing()) {
if (Brain.Screen.xPosition() < 240) {
Drivetrain.turn(right);
waitUntil(!Brain.Screen.pressing());
} else {
Drivetrain.turn(left);
waitUntil(!Brain.Screen.pressing());
}
} else {
Drivetrain.drive(forward);
}
}
} অন্য সমাধান হল অপারেটরের নির্দেশ পরিবর্তন করা যাতে x-মান 240-এর বেশি হলে, Clawbot বাম দিকে ঘুরতে পারে।
// প্রকল্প কোড শুরু করুন
int main() {
// রোবট কনফিগারেশন শুরু করা হচ্ছে। সরাবেন না!
vexcodeInit();
while (true) {
if (Brain.Screen.pressing()) {
if (Brain.Screen.xPosition() > 240) {
Drivetrain.turn(left);
waitUntil(!Brain.Screen.pressing());
} else {
Drivetrain.turn(right);
waitUntil(!Brain.Screen.pressing());
}
} else {
Drivetrain.drive(forward);
}
}
}
আলোচনা প্রেরণা দিন
যখন x-মান 240 এর কম ছিল (স্ক্রিনের বাম দিকে) তখন শর্তসাপেক্ষ বিবৃতিটি প্রোগ্রাম করার সময় আপনাকে একটি স্থানাঙ্ক সমতল থেকে স্থানাঙ্ক ব্যবহার করতে হয়েছিল। মস্তিষ্কের স্ক্রিনে ভিজ্যুয়াল বোতাম আঁকার জন্য, আপনাকে স্থানাঙ্ক ব্যবহার করতে হবে।
ধাপ 2 এ ফিরে যান যেখানে আপনাকে V5 রোবট ব্রেনের স্ক্রিনের স্থানাঙ্ক দেখানো হয়েছিল।

প্রশ্ন:পর্দার ডান প্রান্তে x-মান কত?
উত্তর:বাম প্রান্তে x-মান ০ থেকে ডান প্রান্তে ৪৮০ পর্যন্ত বৃদ্ধি পায়।
প্রশ্ন:তাহলে x-মানের পরিসর ৪৮০ (০ থেকে ৪৮০)। y-মানের পরিসর কত?
A:y-মানের পরিসর হল 240 (0 থেকে 240)।
প্রশ্ন:এই স্থানাঙ্ক সমতলের উৎপত্তিস্থল (0, 0) কোথায়?
A:উৎপত্তিস্থলটি উপরের বাম দিকে অবস্থিত।
প্রশ্ন:যখন y-মান 0 এর সমান হয় তখন আপনি পর্দার শীর্ষে থাকেন। এটা অস্বাভাবিক কেন?
A:সাধারণত, উপরের দিকে যাওয়ার সাথে সাথে y-মান বৃদ্ধি পায় কিন্তু V5 স্ক্রিনে, নীচের দিকে যাওয়ার সাথে সাথে y-মান বৃদ্ধি পায়। কিন্তু আপনি এটিকে পর্দার উপরের বাম দিকের উৎপত্তি (0, 0) থেকে দূরে সরে যাওয়ার সাথে সাথে y-মান বৃদ্ধি পাওয়ার কথা ভাবতে পারেন।
তোমার শেখার পরিধি বাড়াও
রিথিঙ্ক বিভাগের ইউজার ইন্টারফেস চ্যালেঞ্জে, শিক্ষার্থীদের এমন একটি প্রকল্প তৈরি করতে বলা হবে যা ক্লবটের নখর এবং বাহু নিয়ন্ত্রণ করার জন্য স্ক্রিনে চারটি বোতাম তৈরি করে। সেই চ্যালেঞ্জের জন্য, তাদের স্ক্রিনে সেই চারটি বোতাম দেখাতে বলা হয়। এই "তোমার শিক্ষা বৃদ্ধি করো", আগের পৃষ্ঠার মতো, তাদের সেই চ্যালেঞ্জের জন্য প্রস্তুত করতে সাহায্য করবে কারণ চ্যালেঞ্জটিতে প্রোগ্রাম করার জন্য চারটি বোতাম রয়েছে এবং এটিতে মাত্র দুটি।
শিক্ষার্থীদের প্রোগ্রামে একটি ইভেন্ট যুক্ত করতে বলুন যাতে প্রকল্পটি চলাকালীন স্ক্রিনে দুটি দৃশ্যমান বোতাম দেখা যায়। ইভেন্ট সম্পর্কে তথ্যের জন্য, বিশেষ করেড্র আয়তক্ষেত্রনির্দেশের তথ্যের জন্য শিক্ষার্থীদের VEXcode V5-এর সাহায্য বৈশিষ্ট্যটি ব্যবহার করার পরামর্শ দিন। অঙ্কন আয়তক্ষেত্রব্লকে ব্যবহৃত পিক্সেলের সংখ্যার উপর ভিত্তি করে মস্তিষ্কের পর্দা কীভাবে একটি স্থানাঙ্ক ব্যবস্থায় সংগঠিত হয় তা পর্যালোচনা করতে শিক্ষার্থীদের নির্দেশ দিন। ব্লকের মধ্যে প্যারামিটার সেট করার জন্য তাদের এটি বুঝতে হবে। উপরন্তু, তাদের বুঝতে হবে কিভাবে ইভেন্ট সম্প্রচার করতে হয়। এই ক্ষেত্রে, ইভেন্টটি হল বোতাম আঁকা।
শিক্ষার্থীদের তাদের ইঞ্জিনিয়ারিং নোটবুকের মধ্যে প্রকল্পের এই পরিবর্তনগুলি পরিকল্পনা, পরীক্ষা এবং পরিমার্জন করা উচিত। পৃথক ইঞ্জিনিয়ারিং নোটবুক রুব্রিকের জন্য, নিম্নলিখিত লিঙ্কগুলির মধ্যে একটিতে ক্লিক করুন (Google Doc / .docx / .pdf), অথবা টিম নোটবুকের জন্য নিম্নলিখিত লিঙ্কগুলির মধ্যে একটিতে ক্লিক করুন (Google Doc / .docx / .pdf)।
এখানে একটি উদাহরণ সমাধান দেওয়া হল:
// প্রকল্প কোড শুরু করুন
ইভেন্ট ScreenButtons = event();
void HasScreenButtons() {
Brain.Screen.setFillColor(green);
Brain.Screen.drawRectangle(0, 0, 240, 120);
Brain.Screen.setFillColor(purple);
Brain.Screen.drawRectangle(240, 0, 480, 120);
Brain.Screen.setFillColor(orange);
Brain.Screen.drawRectangle(0, 120, 240, 240);
Brain.Screen.setFillColor(cyan);
Brain.Screen.drawRectangle(240, 120, 480, 240);
wait(1, seconds);
}
int main() {
// রোবট কনফিগারেশন শুরু করা হচ্ছে। সরাবেন না!
vexcodeInit();
ScreenButtons(HasScreenButtons);
while (true) {
ScreenButtons.broadcast();
if (Brain.Screen.pressing()) {
if (Brain.Screen.xPosition() < 240) {
if (Brain.Screen.yPosition() < 120) {
ClawMotor.spin(forward);
waitUntil(!Brain.Screen.pressing());
} else {
ClawMotor.spin(reverse);
waitUntil(!Brain.Screen.pressing());
}
} else {
if (Brain.Screen.yPosition() < 120) {
ArmMotor.spin(forward);
waitUntil(!Brain.Screen.pressing());
} অন্যথায় {
ArmMotor.spin(reverse);
waitUntil(!Brain.Screen.pressing());
}
}
ClawMotor.stop();
ArmMotor.stop();
}
wait(৫, msec);
}
}
অতিরিক্ত পেশাদার বাস্তবসম্মত অভিজ্ঞতার জন্য, শিক্ষার্থীরা কি তাদের সহপাঠীদের তাদের দুটি রঙের পছন্দ সম্পর্কে প্রতিক্রিয়া জানাতে পারে?
নির্বাচিত রঙগুলি কি আপনাকে ইন্টারফেসটি ব্যবহার করতে আগ্রহী করে তোলে, অথবা ব্যবহারকারী হিসাবে তারা কোন রঙগুলি পছন্দ করবে?
একটি দুর্দান্ত ব্যবহারকারী ইন্টারফেস তৈরির অংশ হল ব্যবহারকারীর অভিজ্ঞতা সম্পর্কে তথ্য সংগ্রহ করা, এমনকি নান্দনিক পছন্দগুলিও।