Tartalomjegyzék:

Flappy Bird az ATtiny85 és OLED kijelzőn SSD 1306: 6 lépés (képekkel)
Flappy Bird az ATtiny85 és OLED kijelzőn SSD 1306: 6 lépés (képekkel)

Videó: Flappy Bird az ATtiny85 és OLED kijelzőn SSD 1306: 6 lépés (képekkel)

Videó: Flappy Bird az ATtiny85 és OLED kijelzőn SSD 1306: 6 lépés (képekkel)
Videó: ATtiny85 OLED Without Library Teks dan Logo 2024, Szeptember
Anonim
Image
Image
A hardver
A hardver

Hello mindenki, Ma megmutatom nektek az általam készített alapvető flappy madárklónt, és hogyan lehet hasonló játékot készíteni. Lényegében végigfutom veled a kódomat, és minden lépésben elmagyarázom, hogyan működik. Ez a játék az 1MHz -es órajelen futó ATtiny85 -en fut, I2C OLED kijelzővel. Tovább!

1. lépés: A hardver

Ha nem érdekli, hogy valóban kiépítsen egy áramkört a játékhoz, de megérti a mögöttes elméletet, akkor hagyja ki ezt a lépést.

A játékomhoz két gomb kell, egy ATtiny85, egy I2C OLED 128x64px képernyő és némi áramforrás. Az én utasítható névjegykártyám/játékkonzolom: Az ATtiny85 és az OLED képernyő megmutatja, hogyan kell olyan táblát építeni, amelyen minden szükséges megtalálható! Ha nem érdekel a táblám elkészítése, vedd elő a kenyértábládat, és elmondom a specifikációkat. Az ATtiny85 bármelyik változatát használhatja. Javaslom az ilyen OLED kijelzőket.

  1. Csatlakoztassa két nyomógomb egyik oldalát az ATtiny85 2. és 3. csapjához. Ezekhez a vezetékekhez adjon hozzá egy 10 k ohmos ellenállást is a földhöz csatlakoztatva (lehúzható ellenállás).
  2. A nyomógombok másik oldalát kösse feszültségre. Ha nem nyomja meg a gombot, a tű állapota alacsony lesz. Ha megnyomja, a csap állapota magas lesz.
  3. Csatlakoztassa a 7 -es tűt a kijelző SCL -tűjéhez, és az 5 -ös tűt a kijelző SDA -tűjéhez. Ennek megfelelően kösse be a tápcsatlakozókat (VCC és GND) a kijelzőn.
  4. Végül csatlakoztassa az ATtiny 4. érintkezőjét a földhöz, a 8. tüskét pedig a feszültséghez.

2. lépés: A szoftver

A szoftver!
A szoftver!

Itt található egy mappa, amely tartalmazza a játék futtatásához szükséges összes fájlt. A fájlok közül kettő, a FlappyBird.ino és a WallFunctions.h nagyon jól megjegyzést fűzött az olvasási örömhöz. Feltöltheti a FlappyBird.ino vázlatot az ATtiny85 készülékére (1 MHz -en), és játszhat! Ha a játék mögött álló elmélet elsajátítása érdekli, vagy saját játékot szeretne készíteni, akkor olvasson tovább!

Még mindig van néhány probléma a játékommal. Az I2C nem a legjobb módja az adatok továbbítására. A bejegyzés szerint a kijelző csak körülbelül 100KHz -en képes adatokat fogadni, így még ha fel is emeljük az ATtiny órajelet 8 MHz -re, az I2C csatorna továbbra is a szűk keresztmetszet. A kijelző maximum 10 kép / mp sebességgel képes megjeleníteni. Minél több különálló képet kell rajzolnia a kijelzőnek, annál lassabb az egész folyamat. Így a játékom nagyon egyszerű, mivel nem tudod elérni, hogy a falak nagyon gyorsan mozogjanak a képernyőn! Az alábbiakban bemutatunk néhány kihívást, ha úgy gondolja, hogy készen áll a feladatra:

  • A játék megnehezítése érdekében nézze meg, hogy a falak közötti távolságot 4 helyett 2 -re kell -e állítani. Nem szabad túl nehéznek lennie, ha megérti a programom működését:). Kérlek írd meg kommentben, ha sikerül működni!
  • A másik dolog, ami hiányzik a játékomból, az a pontozási rendszer és a pontszám megjelenítésének és mentésének módja. Hátha sikerül megvalósítani egyet!
  • Végül ahelyett, hogy a falakat egy -egy oszlopot mozgatná, próbálja meg minden falat egy -egy pixelt mozgatni a simább mozgás érdekében.

3. lépés: Flappy Bird ATtiny85: Elmélet

Flappy Bird ATtiny85: Elmélet
Flappy Bird ATtiny85: Elmélet

Annak ellenére, hogy az általunk használt kijelző 64 pixel magasságban használható a játékhoz, az elemeket csak 8 pixeles blokkokban lehet elhelyezni. Így csak 8 lehetséges y-koordináta létezik. A dolgok megkönnyítése érdekében a szoftverben a teljes képernyőt ilyen módon osztottam szét, így 16 blokkból 8 blokkból álló rácsot készítettem, ahol minden blokk 8x8 képpontos. Az egyes blokkok kitöltéséhez a játék minden spriteje 8x8 pixel. Így SOKKAL könnyebb kezelni mindent. Ha megnézi a fenti képet, láthatja, hogyan osztottam fel a képernyőt. Minden fal 6 blokkból áll, 2 blokk magasságú lyukkal, így minden fal teljes magassága 8 blokk.

A programban minden fal struktúraként van ábrázolva, amelyet falnak neveznek. Minden falszerkezetnek két tulajdonsága van - holePosition és column. A „holePosition” 0-6 szám, mivel a 2 blokk magas lyuk esetében csak 7 lehetséges pozíció van a 8 blokkból álló falban. Az 'oszlop' 0-15 szám, mivel 16 blokk oszlop lehetséges a képernyőn.

Ajánlott: