Obsah:

Flappy Bird na ATtiny85 a OLED Display SSD1306: 6 kroků (s obrázky)
Flappy Bird na ATtiny85 a OLED Display SSD1306: 6 kroků (s obrázky)

Video: Flappy Bird na ATtiny85 a OLED Display SSD1306: 6 kroků (s obrázky)

Video: Flappy Bird na ATtiny85 a OLED Display SSD1306: 6 kroků (s obrázky)
Video: Animation with ATtiny85 and SSD1306 display 2024, Listopad
Anonim
Image
Image
Hardware
Hardware

Ahoj všichni, Dnes vám ukážu základní klon flappy ptáků, který jsem vytvořil, a jak můžete pokračovat v tvorbě podobné hry. V zásadě s vámi projdu svůj kód a vysvětlím, jak to funguje na každém kroku. Tato hra je postavena tak, aby fungovala na ATtiny85 s taktem 1MHz s I2C OLED displejem. Kupředu!

Krok 1: Hardware

Pokud vás nezajímá budování obvodu pro tuto hru, ale pochopení teorie za ní, můžete tento krok přeskočit.

Moje hra vyžaduje dvě tlačítka, ATtiny85, obrazovku I2C OLED 128x64px a nějaký zdroj energie. Moje instrukovatelná vizitka/herní konzole: Obrazovka ATtiny85 a OLED vám ukáže, jak postavit desku, na které je vše, co potřebujete! Pokud nemáte zájem o výrobu mého prkna, vyjměte prkénko a já vám řeknu specifikace. Můžete použít libovolnou variantu ATtiny85. Doporučuji OLED displeje, jako je tento.

  1. Připojte jednu stranu dvou tlačítek k pinům 2 a 3 na ATtiny85. Na tyto vodiče přidejte také odpor 10 kOhm připojený k zemi (stahovací odpor).
  2. Druhou stranu těchto tlačítek připojte k napětí. Když tlačítko nestisknete, stav špendlíku bude nízký. Když je stisknuto, stav kolíku bude vysoký.
  3. Připojte pin 7 ke kolíku SCL na vašem displeji a pin 5 ke kolíku SDA na vašem displeji. Podle toho zapojte napájecí piny (VCC a GND) na displej.
  4. Nakonec připojte pin 4 na ATtiny k zemi a pin 8 k napětí.

Krok 2: Software

Software!
Software!

Zde je připojena složka se všemi soubory, které ke spuštění hry potřebujete. Dva ze souborů, FlappyBird.ino a WallFunctions.h, jsou velmi dobře komentovány pro vaše potěšení ze čtení. Skicu FlappyBird.ino můžete nahrát do ATtiny85 (na 1 MHz) a hrát dál! Pokud vás učení teorie této hry zajímá, nebo si chcete vytvořit vlastní hru, čtěte dále!

S mojí hrou stále existuje několik problémů. I2C není nejlepší způsob přenosu dat jakýmkoli způsobem. Podle tohoto příspěvku může displej přijímat data pouze asi na 100 KHz, takže i když zvýšíme rychlost hodin ATtiny na 8 MHz, kanál I2C bude stále překážkou. Displej může produkovat maximálně 10 snímků za sekundu. Čím více samostatných obrázků musí displej kreslit, tím je celý proces pomalejší. Moje hra je tedy docela snadná, protože nemůžete přimět zdi, aby se po obrazovce pohybovaly velmi rychle! Níže jsou uvedeny některé výzvy, pokud si myslíte, že úkol splňujete:

  • Aby byla hra těžší, zkuste zjistit, zda můžete dosáhnout mezery mezi stěnami místo 2 místo 4. Nemělo by to být příliš těžké, jakmile pochopíte, jak můj program funguje:). Napište prosím do komentářů, jestli to funguje!
  • Další věcí, které mé hře chybí, je systém skóre a způsob, jak skóre zobrazit a uložit. Zjistěte, zda můžete implementovat jeden!
  • Nakonec, místo aby se stěny pohybovaly po jednom sloupci, zkuste přimět každou zeď, aby se pohybovala po jednom pixelu, aby byl pohyb plynulejší.

Krok 3: Flappy Bird ATtiny85: Teorie

Flappy Bird ATtiny85: Theory
Flappy Bird ATtiny85: Theory

Přestože displej, který používáme, má výšku 64 pixelů, kterou lze použít pro hru, je možné prvky umístit pouze do bloků o velikosti 8 pixelů. Existuje tedy pouze 8 možných souřadnic y. Aby to bylo jednodušší, v softwaru jsem tímto způsobem rozdělil celou obrazovku a vytvořil mřížku 16 bloků po 8 blocích, kde každý blok má 8x8 pixelů. Aby vyplnil každý blok, každý sprite ve hře má 8 x 8 pixelů. Díky tomu je vše MNOHEM jednodušší na správu. Když se podíváte na obrázek výše, vidíte, jak jsem rozdělil obrazovku. Každá stěna se skládá ze 6 bloků, přičemž otvor má výšku 2 bloky, takže celková výška každé stěny je 8 bloků.

V programu je každá zeď reprezentována jako struktura, nazývaná Zeď. Každá struktura zdi má dvě vlastnosti - holePosition a sloupec. 'holePosition' je číslo 0-6, protože ve zdi s 8 bloky je pouze 7 možných pozic pro otvor o výšce 2 bloky. 'sloupec' je číslo 0-15, protože na obrazovce je možné 16 sloupců bloků.

Doporučuje: