Kazalo:

Flappy Bird na zaslonu ATtiny85 in OLED SSD1306: 6 korakov (s slikami)
Flappy Bird na zaslonu ATtiny85 in OLED SSD1306: 6 korakov (s slikami)

Video: Flappy Bird na zaslonu ATtiny85 in OLED SSD1306: 6 korakov (s slikami)

Video: Flappy Bird na zaslonu ATtiny85 in OLED SSD1306: 6 korakov (s slikami)
Video: Игры для прошивкой | Flappy Bird с Swift 03 | Создание Пахаро и анимации полета 2024, September
Anonim
Image
Image
Strojna oprema
Strojna oprema

Pozdravljeni vsi, Danes vam bom pokazal osnovni klon flappy bird, ki sem ga ustvaril, in kako lahko naredite podobno igro. V bistvu bom z vami pregledal svojo kodo in na vsakem koraku razložil, kako deluje. Ta igra je zasnovana za delovanje na ATtiny85 s taktom 1 MHz z zaslonom I2C OLED. Naprej!

1. korak: Strojna oprema

Če vas dejansko ne zanima izgradnja vezja za igro, vendar razumete teorijo, ki je v ozadju, lahko ta korak preskočite.

Moja igra zahteva dva gumba, ATtiny85, zaslon I2C OLED 128x64px in nekaj vira energije. Moja instruktivna vizitka/igralna konzola: ATtiny85 in OLED zaslon vam pokažeta, kako sestaviti ploščo, na kateri je vse, kar potrebujete! Če vas ne zanima izdelava moje deske, pojdite ven in vam bom povedal specifikacije. Uporabite lahko katero koli različico ATtiny85. Priporočam OLED zaslone, kot je ta.

  1. Priključite eno stran dveh gumbov na nožici 2 in 3 na vašem ATtiny85. Na te žice dodajte tudi 10k ohmski upor, priključen na ozemljitev (spustni upor).
  2. Priključite drugo stran teh gumbov na napetost. Ko gumba ne pritisnete, bo stanje zatiča nizko. Ko pritisnete, bo stanje zatiča visoko.
  3. Priključite pin 7 na pin SCL na zaslonu in pin 5 na pin SDA na zaslonu. Napajalne zatiče (VCC in GND) na zaslonu ustrezno priključite.
  4. Na koncu priključite pin 4 na ATtiny na ozemljitev in pin 8 na napetost.

2. korak: programska oprema

Programska oprema!
Programska oprema!

Tukaj je priložena mapa z vsemi datotekami, ki jih potrebujete za zagon igre. Dve datoteki, FlappyBird.ino in WallFunctions.h, sta za vaše branje zelo dobro komentirani. Skico FlappyBird.ino lahko naložite na svoj ATtiny85 (pri 1 MHz) in igrate stran! Če vas zanima teorija te igre ali želite ustvariti svojo igro, potem berite naprej!

Pri moji igri je še nekaj težav. I2C ni najboljši način za prenos podatkov na kakršen koli način. V skladu s to objavo lahko zaslon sprejema le podatke pri približno 100KHz, zato tudi če povečamo taktno frekvenco ATtiny na 8MHz, bo kanal I2C še vedno ozko grlo. Zaslon lahko prikaže največ 10 sličic na sekundo. Bolj ko mora zaslon narisati ločene slike, počasnejši je celoten postopek. Tako je moja igra precej enostavna, saj ne morete doseči, da bi se stene premikale zelo hitro po zaslonu! Spodaj je nekaj izzivov za vas, če mislite, da ste kos nalogi:

  • Če želite igro otežiti, preverite, ali lahko nastavite razmik med stenami 2 namesto 4. Ne bi smelo biti preveč težko, ko boste razumeli, kako deluje moj program:). Prosimo, objavite v komentarjih, če vam bo uspelo!
  • Druga stvar, ki mi manjka, je sistem točk in način, kako prikazati rezultat in ga shraniti. Preverite, ali ga lahko uresničite!
  • Nazadnje, namesto da se stene premikajo za en stolpec naenkrat, poskusite vsako steno premakniti za eno slikovno piko naenkrat za bolj gladko gibanje.

3. korak: Flappy Bird ATtiny85: Teorija

Flappy Bird ATtiny85: Teorija
Flappy Bird ATtiny85: Teorija

Čeprav ima zaslon, ki ga uporabljamo, 64 iger višine za igro, je mogoče elemente postaviti le v bloke po 8 slikovnih pik. Tako obstaja le 8 možnih y-koordinat. Za lažje delo sem v programski opremi na ta način razdelil celoten zaslon in naredil mrežo 16 blokov po 8 blokov, pri čemer je vsak blok 8x8 slikovnih pik. Za zapolnitev vsakega bloka je vsak sprite v igri 8x8 slikovnih pik. Tako je vse veliko lažje upravljati. Če pogledate zgornjo sliko, lahko vidite, kako sem razdelil zaslon. Vsaka stena je sestavljena iz 6 blokov z luknjo 2 bloka v višino, tako da je skupna višina vsake stene 8 blokov.

V programu je vsaka stena predstavljena kot struktura, imenovana Wall. Vsaka stenska konstrukcija ima dve lastnosti - holePosition in stolpec. 'holePosition' je število 0-6, saj je v steni z 8 bloki le 7 možnih položajev za luknjo visoko 2 bloka. 'stolpec' je število 0-15, saj je na zaslonu možnih 16 stolpcev blokov.

Priporočena: