فهرست مطالب:

Flappy Bird در ATtiny85 و OLED Display SSD1306: 6 مرحله (همراه با تصاویر)
Flappy Bird در ATtiny85 و OLED Display SSD1306: 6 مرحله (همراه با تصاویر)

تصویری: Flappy Bird در ATtiny85 و OLED Display SSD1306: 6 مرحله (همراه با تصاویر)

تصویری: Flappy Bird در ATtiny85 و OLED Display SSD1306: 6 مرحله (همراه با تصاویر)
تصویری: Flappy Bird ATtiny85 OLED Display 2024, سپتامبر
Anonim
Image
Image
سخت افزار
سخت افزار

هی همه،

امروز من قصد دارم یک کلون اصلی پرنده شل و ول که من ایجاد کرده ام را به شما نشان دهم ، و چگونه می توانید یک بازی مشابه انجام دهید. من اساساً کد خود را با شما مرور می کنم و نحوه عملکرد آن را در هر مرحله توضیح می دهم. این بازی برای اجرا بر روی ATtiny85 با فرکانس 1 مگاهرتز و صفحه نمایش I2C OLED ساخته شده است. به جلو!

مرحله 1: سخت افزار

اگر علاقه ای به ساختن یک مدار برای بازی ندارید ، اما نظریه پشت آن را درک می کنید ، می توانید از این مرحله بگذرید.

بازی من به دو دکمه ، یک ATtiny85 ، یک صفحه نمایش I2C OLED 128x64px و مقداری منبع تغذیه نیاز دارد. کارت ویزیت آموزشی من/کنسول بازی: ATtiny85 و صفحه نمایش OLED به شما نشان می دهد که چگونه یک تخته بسازید که همه چیز مورد نیاز را روی آن داشته باشد! اگر به ساخت تابلو من علاقه مند نیستید ، تخته نان را بیرون بیاورید و من مشخصات آن را به شما می گویم. می توانید از هر نوع ATtiny85 استفاده کنید. من صفحه نمایش های OLED مانند این را توصیه می کنم.

  1. یک طرف دو دکمه فشاری را به پین 2 و 3 در ATtiny85 خود وصل کنید. روی این سیم ها ، یک مقاومت 10k اهم متصل به زمین (مقاومت کششی) نیز اضافه کنید.
  2. طرف دیگر این دکمه های فشار را به ولتاژ وصل کنید. وقتی دکمه فشرده نشود ، حالت پین کم می شود. هنگامی که فشار داده می شود ، حالت پین بالا خواهد بود.
  3. پین 7 را به پین SCL روی صفحه نمایش خود و پین 5 را به پین SDA در صفحه نمایش خود وصل کنید. بر این اساس پین های برق (VCC و GND) را روی صفحه سیم بندی کنید.
  4. در نهایت ، پایه 4 را در ATtiny به زمین و پایه 8 را به ولتاژ وصل کنید.

مرحله 2: نرم افزار

نرم افزار!
نرم افزار!

در اینجا یک پوشه با تمام فایل های مورد نیاز برای اجرای بازی ضمیمه شده است. دو فایل ، FlappyBird.ino و WallFunctions.h ، برای خواندن شما بسیار خوب توضیح داده شده است. می توانید طرح FlappyBird.ino را در ATtiny85 خود (با فرکانس 1 مگاهرتز) بارگذاری کرده و دور بازی کنید! اگر یادگیری تئوری پشت این بازی به شما علاقه دارد یا می خواهید بازی خود را بسازید ، ادامه مطلب را بخوانید!

هنوز چند مشکل در بازی من وجود دارد. I2C بهترین راه برای انتقال داده ها به هیچ وجه نیست. بر اساس این پست ، صفحه نمایش فقط می تواند داده های حدود 100 کیلوهرتز را بپذیرد ، بنابراین حتی اگر سرعت ساعت ATtiny را به 8 مگاهرتز برسانیم ، کانال I2C همچنان تنگنا خواهد بود. حداکثر صفحه نمایش می تواند حدود 10 فریم بر ثانیه خروجی داشته باشد. هرچه تصاویر مجزا برای کشیدن صفحه نیاز داشته باشند ، کل روند کندتر است. بنابراین ، بازی من بسیار آسان است زیرا نمی توانید دیوارها را با سرعت زیادی روی صفحه حرکت دهید! در صورتی که فکر می کنید وظیفه خود را به خوبی انجام داده اید ، در زیر برخی از چالش ها برای شما آمده است:

  • برای سخت تر کردن بازی ، ببینید آیا می توانید فاصله بین دیوارها را به جای 4 به 2 برسانید. هنگامی که بفهمید برنامه من چگونه کار می کند نباید خیلی سخت باشد:). لطفاً اگر می توانید کار کنید ، در نظرات بنویسید!
  • نکته دیگری که بازی من فاقد آن است ، سیستم نمره دهی و راهی برای نمایش نمره و ذخیره آن است. ببینید آیا می توانید یکی را پیاده سازی کنید!
  • در نهایت ، به جای اینکه دیوارها یک ستون را به طور همزمان حرکت دهند ، سعی کنید هر دیوار را برای حرکت روان تر یک پیکسل در یک زمان حرکت دهید.

مرحله 3: Flappy Bird ATtiny85: نظریه

پرنده Flappy ATtiny85: نظریه
پرنده Flappy ATtiny85: نظریه

حتی اگر صفحه نمایش مورد استفاده ما دارای 64 پیکسل ارتفاع برای استفاده برای بازی باشد ، تنها امکان قرار دادن عناصر در بلوک های 8 پیکسلی وجود دارد. بنابراین ، تنها 8 مختصات y ممکن وجود دارد. برای سهولت کار ، در نرم افزار تمام صفحه را به این ترتیب تقسیم کردم و یک شبکه 16 بلوکی در 8 بلوک ایجاد کردم ، که در آن هر بلوک 8x8 پیکسل است. برای پر کردن هر بلوک ، هر Sprite در بازی 8x8 پیکسل است. این باعث می شود همه چیز بسیار آسان تر مدیریت شود. اگر به تصویر بالا نگاه کنید ، می بینید که چگونه صفحه را تقسیم کرده ام. هر دیوار از 6 بلوک تشکیل شده است ، با یک سوراخ 2 بلوک در ارتفاع ، و ارتفاع کل هر دیوار 8 بلوک است.

در برنامه ، هر دیوار به عنوان یک ساختار ، به نام دیوار نشان داده شده است. هر ساختار دیوار دارای دو ویژگی است: holePosition و ستون. "holePosition" یک عدد 0-6 است ، زیرا تنها 7 موقعیت ممکن در یک دیوار 8 بلوکی برای یک سوراخ 2 بلوکی وجود دارد. "ستون" یک عدد 0-15 است ، زیرا 16 ستون بلوک بر روی صفحه وجود دارد.

توصیه شده: