
সুচিপত্র:
2025 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2025-01-23 14:36


আমাদের পূর্ববর্তী নিবন্ধগুলিতে আমরা গেমগোতে গেম তৈরির সন্ধান করেছি, একটি পোর্টেবল রেট্রো গেমিং কনসোল যা টিঙ্কারজেন শিক্ষা দ্বারা বিকশিত হয়েছে। আমরা যে গেমগুলি তৈরি করেছি তা পুরানো নিন্টেন্ডো গেমগুলির স্মরণ করিয়ে দেয়। আজকের নিবন্ধে, আমরা আর্কেড গেমসের স্বর্ণযুগের দিকে এক ধাপ পিছিয়ে যেতে যাচ্ছি। আমরা মাইক্রোপিথনে মাইক্রোপিথনে স্পেস ইনভেডার্স গেমটি পুনরায় তৈরি করব: বিট মাইক্রোকন্ট্রোলার - এবং একটি টুইস্ট হিসাবে, আমরা বিটপ্লেয়ার মাইক্রো: বিট এক্সটেনশন ব্যবহার করব, যা আমাদের গেমটি আরও সুবিধাজনকভাবে খেলতে দেয়।
যেহেতু এই টিউটোরিয়ালটি মাইক্রোপাইথনে গেমের কোডিং সম্পর্কে, তাই গ্রাফিকাল প্রোগ্রামিং টিউটোরিয়ালের জন্য আমরা আগে ব্যবহৃত traditionalতিহ্যবাহী স্টেজ-বাই-স্টেজ সিকোয়েন্সের পরিবর্তে, আমরা ব্লক দ্বারা কোড ব্লকের উপর দিয়ে যাচ্ছি-গুরুত্বপূর্ণ ফাংশন, ক্লাস এবং প্রধান লুপ. আপনি এই প্রকল্পের GitHub সংগ্রহস্থলে সম্পূর্ণ কোড ডাউনলোড করতে পারেন। বাকল আপ এবং আসুন শুরু করা যাক!
সরবরাহ
টিঙ্কারজেন বিটপ্লেয়ার
বিবিসি মাইক্রো: বিট
ধাপ 1: প্রধান লুপ

এই টিউটোরিয়ালে আমি প্রায়ই "পদ্ধতি" শব্দটি ব্যবহার করব। পাইথনে একটি পদ্ধতি কিছুটা ফাংশনের অনুরূপ, এটি বস্তু/ক্লাসের সাথে যুক্ত নয়। সুতরাং, সরলীকরণের জন্য, আপনি এটি "ক্লাসের মধ্যে একটি ফাংশন" হিসাবে পড়তে পারেন। আপনি এখানে পদ্ধতি সম্পর্কে আরও পড়তে পারেন।
আমরা মূল লুপ দিয়ে প্রবেশ করি
game_over না হলেও:
অবস্থা ভিতরে আমরা আক্রমণকারীদের সংখ্যা, তাদের উপস্থিতির সুযোগ এবং স্তর অভিধান থেকে পরবর্তী স্তরে পৌঁছানোর জন্য প্রয়োজনীয় সংখ্যা পাই। পরবর্তী আমরা ক্লাস ইন্সট্যান্স জয়স্টিক এর Listen_Dir উদাহরণ পদ্ধতিগুলির সাথে বাম-ডান গতিবিধি পরীক্ষা করি। যদি শর্তগুলির মধ্যে একটি সত্য হিসাবে মূল্যায়ন করে, আমরা আমাদের বাজানো চরিত্রের x- মান বৃদ্ধি/হ্রাস করি। শর্ত থাকলে আমরা এটিকে [-2, 2] এ সীমাবদ্ধ করি। তারপরে আমরা DisplayBuffer ক্লাসের একটি উদাহরণ আরম্ভ করি এবং "ieldাল" বা "ফায়ার বুলেট" বোতাম টিপুন। আমরা পরবর্তীতে রেন্ডারিং এর জন্য অবজেক্ট সেট করতে পদ্ধতি DisplayBuffer.set () ব্যবহার করি। Theাল রেন্ডার করার জন্য আমরা সরাসরি DisplayBuffer.set () ব্যবহার করি, কিন্তু বুলেট এবং আক্রমণকারীদের জন্য আমরা তাদের নিজ নিজ তালিকায় যোগ করি এবং DispBuffer.render () এর সাথে পরবর্তী রেন্ডারিং এর জন্য নিম্নলিখিত কোড সহ লুপের জন্য একে একে সেট করি ():
বুলেটে b এর জন্য: b.render (dispBuf) v in vaders: v.render (dispBuf)
হানাদার, গুলি এবং ieldাল সব প্রদর্শন করা হয় একবার প্রতি প্রধান লুপ পুনরাবৃত্তি সঙ্গে
dispBuf.render ()
মূল লুপ শেষ হওয়ার আগে আমরা যাচাই করি যে হানাদারদের বুলেটগুলির মধ্যে কোনটি স্ক্রিনের শেষের দিকে পৌঁছেছে, এবং যদি সেগুলি থাকে তবে আমরা তাদের নিজ নিজ তালিকা থেকে মুছে ফেলি।
ধাপ 2: জয়স্টিক

বিটপ্লেয়ারকে ধরে রাখা এবং ব্যবহার করা সহজ, গেমবয় বা পিএসপি কন্ট্রোলারের মতো 2-অক্ষের জয়স্টিক সহ, এতে আরও 6 টি প্রোগ্রামযোগ্য বোতাম রয়েছে যা এল, আর, এ, বি, সি এবং ডি নামে লেবেল করা হয়েছে। ওএলইডি ডিসপ্লের মতো অতিরিক্ত পেরিফেরালগুলিকে সংযুক্ত করার জন্য নিজেই একটি বুজার, একটি কম্পন মোটর এবং একটি গ্রোভ আই 2 সি পোর্ট রয়েছে।
আমরা শুধুমাত্র এই গেমটির জন্য জয়স্টিকের বাম-ডান দোলনা ব্যবহার করি, সমস্ত বিটপ্লেয়ার বোতাম ব্যবহারের সম্পূর্ণ উদাহরণের জন্য আপনি এই প্রকল্পের GitHub সংগ্রহস্থলে joystick_example.py দেখতে পারেন। জয়স্টিক ক্লাসের উদাহরণ তৈরি করার সময় আমরা এক্স-অক্ষ ডিফল্ট পড়ার জন্য পরীক্ষা করি এবং সেই মানটি স্বয়ং সংরক্ষণ করি। Read_X। তারপরে Listen_Dir ফাংশনে, আমরা পরীক্ষা করি যে ডিফল্ট মান থেকে বিচ্যুতি সংবেদনশীলতা ভেরিয়েবলের চেয়ে বেশি (যদি আপনি মনে করেন যে JoyStick খুব সংবেদনশীল) তবে এটিকে টুইক করার চেষ্টা করুন এবং সনাক্ত করা দিক অনুযায়ী সত্যের মিথ্যা ফেরত দিন।
আসুন এটি কীভাবে কাজ করে তার কংক্রিট উদাহরণ দেখুন:
ধরা যাক আমাদের ডিফল্ট এক্স-অক্ষ রিডিং 0। তারপর, যদি আমরা জয়স্টিক ডানদিকে সরাই:
New_X = JoyStick_X.read_analog () #New_X = 200
ডান = নতুন_এক্স - স্বয়ং পড়ুন_এক্স #ডান = 200 বাম = স্বয়ং পড়ুন - এক্স - নিউ_এক্স #বাম = -200
তারপর যখন আমরা দিকনির্দেশনা পরীক্ষা করি:
Precision = 150if Right> Precision: #200> 150 True Get_Rocker = DIR ['R'] elif Left> Precision: #-200> 150 False Get_Rocker = DIR ['L'] else: Get_Rocker = DIR ['NONE'] যদি Dir == Get_Rocker: return true else: return false
ধাপ 3: বাফার প্রদর্শন করুন

ডিসপ্লে বুফ ক্লাস LED স্ক্রিন নিয়ন্ত্রণের জন্য দায়ী। এটি সেট () এবং রেন্ডার () দুটি পদ্ধতি ব্যবহার করে করা হয়। set () পদ্ধতি LED স্ক্রিন পিক্সেলের সাথে সম্পর্কিত মান পরিবর্তন করে। আপনার মনে হতে পারে, মাইক্রো: বিট LED স্ক্রিনে যে পিক্সেলগুলি স্ট্রিং বা একটি তালিকা হিসাবে প্রকাশ করা যেতে পারে - "00000: 00000: 00000: 00000: 00000" একটি খালি স্ক্রিন। "00000: 00000: 00000: 00000: 00100" নিচের সারির কেন্দ্রে অস্পষ্টভাবে আলোকিত পিক্সেল সহ একটি পর্দা।
00000:
00000
:00000
:00000:
00100"
এই স্বরলিপি প্রক্রিয়া করা সহজ হতে পারে:)
সুতরাং, প্রধান লুপের সময় আমরা যা করি তা হল DisplayBuf এর কল সেট () পদ্ধতি যা আমাদের সমস্ত বস্তুকে সেট করতে হবে যা স্ক্রিনে প্রদর্শিত হওয়া প্রয়োজন। তারপরে আমরা রেন্ডার () পদ্ধতিটি ব্যবহার করি যা আসলে সেগুলি একই সাথে পর্দায় দেখানো হয়।
ধাপ 4: আক্রমণকারী, বুলেট এবং প্লেয়ার

বুলেট এবং আক্রমণকারীরা মুভার শ্রেণীর অন্তর্গত। মুভার ক্লাসের দৃষ্টান্ত তাদের x, y অবস্থান এবং গতি, সেইসাথে উজ্জ্বলতা আছে। মুভার ক্লাসের দুটি উদাহরণ পদ্ধতি রয়েছে, সেট () এবং মুভ ()। set () পদ্ধতিটি কেবল LED ম্যাট্রিক্সে পরবর্তী রেন্ডারিং এর জন্য সংরক্ষণ করার জন্য আপডেট স্থানাঙ্ক সহ DisplayBuf set () পদ্ধতিতে কল করে। move () মেথড আপডেট ইন্সট্যান্স কোসিডিনেট ইনসেন্ট স্পীড অনুযায়ী - যেটা পরে কাজে আসে, যখন আমাদের লেভেলের অগ্রগতির সাথে সাথে আক্রমণকারীদের গতি পরিবর্তন করতে হবে।
ক্লাস বুলেট এবং ক্লাস ইনভেডার মুভার ক্লাসের সাবক্লাস। এখানে আমরা উত্তরাধিকার বলে কিছু ব্যবহার করি। সুপার () এর কার্যকারিতা আমাদের কোডের পুনরাবৃত্তি করার প্রয়োজন ছাড়াই সাবক্লাসে সুপারক্লাসের পদ্ধতিগুলিকে কল করার অনুমতি দেয়।
ধাপ 5: এটি আপনার নিজের করুন

অভিনন্দন! আপনি মাইক্রোতে ক্লাসিক স্পেস ইনভেডার্স গেমটি পুনরায় তৈরি করেছেন: কিছু দুর্দান্ত গেমিং হার্ডওয়্যার সহ বিট। অবশ্যই, আপনি এখান থেকে গেম কোডটি উন্নত করতে পারেন - উদাহরণস্বরূপ, এখন পর্যন্ত, গেমটিতে কেবল একটি স্তর রয়েছে - আপনি আরও চ্যালেঞ্জিং যুক্ত করতে পারেন। এছাড়াও, যেমনটি আপনি মনে করতে পারেন, আসল গেমটিতে প্লেয়ারের সামনে ভাসমান পাথর রয়েছে, যা আপনিও যুক্ত করতে পারেন।
আপনি যদি গেমটির উন্নত সংস্করণ তৈরি করেন, তাহলে নীচের মন্তব্যে এটি ভাগ করুন! বিটপ্লেয়ার এবং নির্মাতা এবং স্টেম শিক্ষাবিদদের জন্য অন্যান্য হার্ডওয়্যার সম্পর্কে আরও তথ্যের জন্য, আমাদের ওয়েবসাইট https://tinkergen.com/ দেখুন এবং আমাদের নিউজলেটার সাবস্ক্রাইব করুন।
টিঙ্কারজেন সম্প্রতি মার্কিং (মেক এ রোবট কিট), কোডিং, রোবোটিক্স, এআই শেখানোর জন্য একটি রোবট কিটের জন্য একটি কিক স্টার্টার ক্যাম্পেইন তৈরি করেছে!
Hexkcd/micro-vaders থেকে আসল মাইক্রোপিথন কোড, টিঙ্কারজেন বিটপ্লেয়ারের সাথে কাজ করার জন্য পরিবর্তন করা হয়েছিল।
প্রস্তাবিত:
কিভাবে মোটো ব্যবহার করে সার্ভো মোটর চালানো যায়: মাইক্রো দিয়ে বিট: বিট: 7 টি ধাপ (ছবি সহ)

কিভাবে মোটো ব্যবহার করে সার্ভো মোটর চালানো যায়: বিট মাইক্রো: বিট: মাইক্রো: বিট এর কার্যকারিতা বাড়ানোর একটি উপায় হল স্পার্কফুন ইলেকট্রনিক্সের মোটো: বিট নামে একটি বোর্ড ব্যবহার করা (প্রায় $ 15-20)। এটি জটিল দেখায় এবং এর অনেক বৈশিষ্ট্য রয়েছে, তবে এটি থেকে সার্ভো মোটর চালানো কঠিন নয়। মোটো: বিট আপনাকে অনুমতি দেয়
এলসিডি আক্রমণকারী: 16x2 এলসিডি ক্যারেক্টার ডিসপ্লেতে একটি স্পেস ইনভেডার্স গেমের মতো: 7 টি ধাপ

এলসিডি ইনভেডার্স: 16x2 এলসিডি ক্যারেক্টার ডিসপ্লেতে একটি স্পেস ইনভেডার্স গেমের মতো: একটি কিংবদন্তী "স্পেস ইনভেডার্স" গেম চালু করার দরকার নেই। এই প্রকল্পের সবচেয়ে আকর্ষণীয় বৈশিষ্ট্য হল এটি গ্রাফিক্যাল আউটপুটের জন্য পাঠ্য প্রদর্শন ব্যবহার করে। এটি 8 টি কাস্টম অক্ষর প্রয়োগ করে অর্জন করা হয়। আপনি সম্পূর্ণ Arduino ডাউনলোড করতে পারেন
মহাকাশ উদ্ভিদ: 5 টি ধাপ

মহাকাশ উদ্ভিদ: হ্যালো, আমার নির্দেশাবলী পড়ার জন্য আপনাকে ধন্যবাদ। এই বাগানটি উচ্চ বিদ্যালয় স্তরে গ্রোয়িং বিয়ন্ড দ্য আর্থ নির্মাতা প্রতিযোগিতার জন্য জমা দেওয়া হয়েছিল। বাগান নিজেই জল, তাপ, শীতল এবং হালকা করতে পারে। সমস্ত কোড এখানে অন্তর্ভুক্ত করা হয়েছে যাতে আপনি এটি m এ সম্পাদনা করতে পারেন
3D মুদ্রিত ভাঁজ মহাকাশ ড্রোন: 3 ধাপ

থ্রিডি প্রিন্টেড ফোল্ডিং স্পেস ড্রোন: আমি শুধু একটি নতুন ধরনের কোয়াড কপ্টার তৈরি করতে চাই, এবং এটি মহাকাশ জাহাজের মতই শেষ … এবং কারণ এটি একটি ড্রোন, তাই এটি একটি স্পেস ড্রোন … :) এই ভিডিওটিতে মনোনিবেশ করা হবে ফ্রেম শুধুমাত্র একত্রিত, যদিও আমি ক্রম কিছু উপাদান রাখা
লাইভ মোশনে পুরনো ফোন! মহাকাশ থেকে দেখুন!: 4 টি ধাপ

লাইভ মোশনে পুরনো ফোন! মহাকাশ থেকে দেখুন !: আমি ফোনগুলি আপগ্রেড করছি এবং ভাবলাম পুরনো ফোনের জন্য একটি মজাদার ব্যবহার থাকতে হবে … পৃথিবী দিবসের একটি উদ্ভট সমন্বয়, একটি বৃষ্টির দিন, মহাকাশে একটি প্রশিক্ষণযোগ্য প্রতিযোগিতা এবং আইএসএস এইচডি আর্থ সম্পর্কে একটি সাম্প্রতিক নিবন্ধ এক্সপেরিমেন্ট দেখার ফলে আমি একত্রিত হয়েছি