সুচিপত্র:

ATtiny85 এবং OLED ডিসপ্লে SSD1306 এ Flappy Bird: 6 টি ধাপ (ছবি সহ)
ATtiny85 এবং OLED ডিসপ্লে SSD1306 এ Flappy Bird: 6 টি ধাপ (ছবি সহ)

ভিডিও: ATtiny85 এবং OLED ডিসপ্লে SSD1306 এ Flappy Bird: 6 টি ধাপ (ছবি সহ)

ভিডিও: ATtiny85 এবং OLED ডিসপ্লে SSD1306 এ Flappy Bird: 6 টি ধাপ (ছবি সহ)
ভিডিও: #4 Simple Game on Arduino | Esp8266 + OLED + push button 2024, সেপ্টেম্বর
Anonim
Image
Image
হার্ডওয়্যার
হার্ডওয়্যার

হেই সবাই, আজ আমি আপনাকে তৈরি একটি মৌলিক flappy পাখি ক্লোন দেখাতে যাচ্ছি, এবং আপনি কিভাবে একটি অনুরূপ খেলা তৈরি করতে যেতে পারেন। আমি মূলত আপনার সাথে আমার কোডটি চালাব এবং ব্যাখ্যা করব কিভাবে এটি প্রতিটি ধাপে কাজ করে। এই গেমটি তৈরি করা হয়েছে ATTiny85 এ 1MHz এ ক্লক করা, I2C OLED ডিসপ্লে সহ। এগিয়ে!

ধাপ 1: হার্ডওয়্যার

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

আমার গেমের জন্য দুটি বোতাম, একটি ATtiny85, একটি I2C OLED 128x64px স্ক্রিন এবং কিছু শক্তির উৎস প্রয়োজন। আমার ইন্সট্রাক্টেবল বিজনেস কার্ড/গেম কনসোল: ATtiny85 এবং OLED স্ক্রিন আপনাকে দেখায় যে কিভাবে একটি বোর্ড তৈরি করতে হবে যাতে আপনার প্রয়োজনীয় সবকিছু আছে! আপনি যদি আমার বোর্ড তৈরিতে আগ্রহী না হন তবে আপনার রুটিবোর্ডটি বের করুন এবং আমি আপনাকে স্পেসিফিকেশন বলব। আপনি ATtiny85 এর যেকোনো রূপ ব্যবহার করতে পারেন। আমি এই মত OLED প্রদর্শন সুপারিশ

  1. আপনার ATtiny85 এ 2 এবং 3 পিনে দুটি পুশবাটনের এক পাশে ওয়্যার করুন। এই তারগুলিতে, মাটির সাথে সংযুক্ত একটি 10k ওহম প্রতিরোধকও যুক্ত করুন (টান-ডাউন প্রতিরোধক)।
  2. এই pushbuttons এর অন্য দিকে ভোল্টেজের ওয়্যার করুন। যখন বোতামটি চাপানো হয় না, তখন পিনের অবস্থা কম হবে। যখন এটি চাপা হয়, পিন অবস্থা উচ্চ হবে।
  3. আপনার ডিসপ্লেতে এসসিএল পিনের সাথে পিন 7 সংযুক্ত করুন এবং আপনার ডিসপ্লেতে এসডিএ পিনের সাথে 5 পিন করুন। সেই অনুযায়ী ডিসপ্লেতে পাওয়ার পিন (VCC এবং GND) লাগান।
  4. অবশেষে, ATTiny- এ পিন 4 কে মাটিতে সংযুক্ত করুন এবং 8 টি ভোল্টেজে পিন করুন।

পদক্ষেপ 2: সফ্টওয়্যার

সফটওয়্যার!
সফটওয়্যার!

গেমটি চালানোর জন্য আপনার প্রয়োজনীয় সমস্ত ফাইল সহ একটি ফোল্ডার এখানে সংযুক্ত করা হয়েছে। দুটি ফাইল, FlappyBird.ino এবং WallFunctions.h, আপনার পড়ার আনন্দের জন্য খুব ভালভাবে মন্তব্য করা হয়েছে। আপনি আপনার ATtiny85 (1MHz এ) এ FlappyBird.ino স্কেচ আপলোড করতে পারেন এবং খেলতে পারেন! যদি এই গেমের পিছনে তত্ত্ব শেখা আপনার আগ্রহী হয়, অথবা আপনি নিজের খেলা তৈরি করতে চান, তাহলে পড়ুন!

আমার খেলায় এখনও কিছু সমস্যা আছে। I2C কোনও উপায়ে ডেটা প্রেরণের সেরা উপায় নয়। এই পোস্ট অনুসারে, ডিসপ্লে শুধুমাত্র 100KHz এ ডেটা গ্রহণ করতে পারে, তাই আমরা ATTiny ঘড়ির গতি 8MHz পর্যন্ত বাড়ালেও I2C চ্যানেলটি বাধা হয়ে থাকবে। ডিসপ্লে সর্বোচ্চ 10fps আউটপুট করতে পারে। ডিসপ্লেতে যত বেশি আলাদা ছবি আঁকতে হবে, পুরো প্রক্রিয়া তত ধীর হবে। সুতরাং, আমার খেলাটি বেশ সহজ কারণ আপনি পর্দা জুড়ে দেয়ালগুলি খুব দ্রুত সরাতে পারবেন না! আপনার জন্য কিছু চ্যালেঞ্জ নিচে দেওয়া হল যদি আপনি মনে করেন যে আপনি কাজটি করছেন:

  • গেমটিকে আরও কঠিন করার জন্য, দেখুন যে আপনি দেয়ালের মধ্যে ব্যবধান 4 এর পরিবর্তে 2 করতে পারেন কিনা, আমার প্রোগ্রাম কীভাবে কাজ করে তা বুঝতে পারলে এটি খুব কঠিন হওয়া উচিত নয়:)। আপনি যদি এটি কাজ করতে পারেন তবে মন্তব্যগুলিতে পোস্ট করুন!
  • আমার গেমের আরেকটি জিনিসের অভাব হল একটি স্কোর সিস্টেম এবং স্কোর প্রদর্শন এবং সংরক্ষণ করার একটি উপায়। আপনি একটি বাস্তবায়ন করতে পারেন কিনা দেখুন!
  • পরিশেষে, দেয়ালগুলি এক সময়ে একটি কলাম সরানোর চেয়ে, মসৃণ গতির জন্য প্রতিটি দেয়ালকে এক সময়ে একটি পিক্সেল সরানোর চেষ্টা করুন।

ধাপ 3: ফ্ল্যাপি বার্ড ATtiny85: তত্ত্ব

Flappy Bird ATtiny85: তত্ত্ব
Flappy Bird ATtiny85: তত্ত্ব

যদিও আমরা যে ডিসপ্লেটি ব্যবহার করছি তা গেমের জন্য ব্যবহার করার জন্য 64 পিক্সেল উচ্চতা, এটি শুধুমাত্র 8 পিক্সেলের ব্লকে উপাদানগুলি স্থাপন করা সম্ভব। এইভাবে, শুধুমাত্র 8 টি সম্ভাব্য y- স্থানাঙ্ক রয়েছে। জিনিসগুলিকে আরও সহজ করার জন্য, সফ্টওয়্যারে আমি এই পদ্ধতিতে পুরো স্ক্রিনটি ভাগ করেছি, 16 টি ব্লকের 8 টি ব্লকের একটি গ্রিড তৈরি করেছি, যেখানে প্রতিটি ব্লক 8x8 পিক্সেল। প্রতিটি ব্লক পূরণ করতে, গেমের প্রতিটি স্প্রাইট 8x8 পিক্সেল। এটি সবকিছু পরিচালনা করা অনেক সহজ করে তোলে। আপনি যদি উপরের চিত্রটি দেখেন তবে আপনি দেখতে পাবেন যে আমি কীভাবে পর্দা ভাগ করেছি। প্রতিটি দেয়াল 6 টি ব্লকের সমন্বয়ে গঠিত, যার উচ্চতা 2 টি ব্লক, প্রতিটি দেয়ালের মোট উচ্চতা 8 টি ব্লক।

প্রোগ্রামে, প্রতিটি প্রাচীরকে একটি কাঠামো হিসেবে উপস্থাপন করা হয়, যাকে বলা হয় ওয়াল। প্রতিটি প্রাচীর কাঠামোর দুটি বৈশিষ্ট্য রয়েছে - গর্ত অবস্থান এবং কলাম। 'হোলপজিশন' একটি সংখ্যা 0-6, কারণ 8 টি ব্লকের একটি প্রাচীরের মধ্যে 2 টি ব্লকের উচ্চতার জন্য কেবল 7 টি সম্ভাব্য অবস্থান রয়েছে। 'কলাম' হল 0-15 নম্বর, কারণ স্ক্রিনে 16 টি ব্লক সম্ভব।

প্রস্তাবিত: