Satura rādītājs:

Flappy Bird uz ATtiny85 un OLED displeja SSD 1306: 6 soļi (ar attēliem)
Flappy Bird uz ATtiny85 un OLED displeja SSD 1306: 6 soļi (ar attēliem)

Video: Flappy Bird uz ATtiny85 un OLED displeja SSD 1306: 6 soļi (ar attēliem)

Video: Flappy Bird uz ATtiny85 un OLED displeja SSD 1306: 6 soļi (ar attēliem)
Video: 8BitCADE XL: Load games using Arduino IDE | 8BitCADE 2024, Novembris
Anonim
Image
Image
Aparatūra
Aparatūra

Sveiki visiem, Šodien es jums parādīšu pamata flappy putnu klonu, ko es izveidoju, un to, kā jūs varat izveidot līdzīgu spēli. Es būtībā kopā ar jums izskatīšu savu kodu un paskaidrošu, kā tas darbojas. Šī spēle ir veidota, lai darbotos ar ATtiny85, kura frekvence ir 1 MHz, ar I2C OLED displeju. Uz priekšu!

1. darbība: aparatūra

Ja jūs neesat ieinteresēts faktiski izveidot spēles shēmu, bet saprotat aiz tās esošo teoriju, varat izlaist šo darbību.

Manai spēlei ir vajadzīgas divas pogas, ATtiny85, I2C OLED 128x64px ekrāns un kāds enerģijas avots. Mana pamācāmā vizītkarte/spēļu konsole: ATtiny85 un OLED ekrāns parāda, kā izveidot tāfeli, kurā ir viss nepieciešamais! Ja jūs neinteresē mana dēļa izgatavošana, izņemiet savu maizes dēli, un es jums pastāstīšu specifikācijas. Jūs varat izmantot jebkuru ATtiny85 variantu. Es iesaku šādus OLED displejus.

  1. Pievienojiet divu spiedpogu vienu pusi pie ATtiny85 tapām 2 un 3. Šiem vadiem pievienojiet arī 10k omu rezistoru, kas savienots ar zemi (nolaižamais rezistors).
  2. Pievienojiet šo spiedpogu otru pusi spriegumam. Kad poga nav nospiesta, tapas stāvoklis būs zems. Nospiežot, tapas stāvoklis būs augsts.
  3. Pievienojiet 7. tapu displeja SCL tapai un 5. tapu displeja SDA tapai. Atbilstoši pieslēdziet strāvas tapas (VCC un GND) displejā.
  4. Visbeidzot, pieslēdziet ATtiny 4. tapu pie zemes un 8. tapu pie sprieguma.

2. solis: programmatūra

Programmatūra!
Programmatūra!

Šeit ir pievienota mape ar visiem failiem, kas nepieciešami spēles palaišanai. Divi faili, FlappyBird.ino un WallFunctions.h, ir ļoti labi komentēti jūsu lasīšanas priekam. Jūs varat augšupielādēt FlappyBird.ino skici savā ATtiny85 (1MHz) un spēlēt prom! Ja šīs spēles teorijas apguve jūs interesē vai vēlaties izveidot savu spēli, lasiet tālāk!

Manā spēlē joprojām ir dažas problēmas. I2C nav labākais veids, kā jebkādā veidā pārsūtīt datus. Saskaņā ar šo ziņu displejs var pieņemt datus tikai aptuveni 100KHz, tāpēc pat tad, ja ATtiny pulksteņa ātrumu sasniegsim līdz 8MHz, I2C kanāls joprojām būs sašaurinājums. Displejs var maksimāli izvadīt aptuveni 10 kadrus sekundē. Jo vairāk atsevišķu attēlu displejā jāzīmē, jo lēnāks ir viss process. Tādējādi mana spēle ir diezgan vienkārša, jo jūs nevarat panākt, lai sienas ļoti ātri pārvietotos pa ekrānu! Tālāk ir sniegti daži izaicinājumi, ja domājat, ka esat izpildījis uzdevumu:

  • Lai padarītu spēli grūtāku, noskaidrojiet, vai atstarpes starp sienām var būt 2, nevis 4. Tam nevajadzētu būt pārāk grūti, kad saprotat, kā darbojas mana programma:). Lūdzu, ievietojiet komentāros, ja varat to izmantot!
  • Vēl viena lieta, kas manā spēlē trūkst, ir punktu sistēma un veids, kā parādīt rezultātu un to saglabāt. Skatiet, vai varat to īstenot!
  • Visbeidzot, tā vietā, lai sienas pārvietotu vienu kolonnu vienlaikus, mēģiniet panākt, lai katra siena vienlaikus pārvietotos pa vienam pikselim, lai nodrošinātu vienmērīgāku kustību.

3. solis: Flappy Bird ATtiny85: teorija

Flappy Bird ATtiny85: teorija
Flappy Bird ATtiny85: teorija

Lai gan mūsu izmantotajam displejam ir 64 pikseļi, ko izmantot spēlei, elementus ir iespējams izvietot tikai 8 pikseļu blokos. Tādējādi ir tikai 8 iespējamās y koordinātas. Lai atvieglotu lietas, programmatūrā es šādi sadalīju visu ekrānu, izveidojot režģi no 16 blokiem līdz 8 blokiem, kur katrs bloks ir 8x8 pikseļi. Lai aizpildītu katru bloku, katrs sprite spēlē ir 8x8 pikseļi. Tādējādi viss ir daudz vieglāk pārvaldāms. Ja paskatās augšējā attēlā, varat redzēt, kā es sadalīju ekrānu. Katra siena sastāv no 6 blokiem ar caurumu 2 bloku augstumā, padarot katras sienas kopējo augstumu 8 blokus.

Programmā katra siena ir attēlota kā struktūra, ko sauc par sienu. Katrai sienas struktūrai ir divas īpašības - holePosition un aile. 'holePosition' ir skaitlis 0-6, jo 8 bloku sienā ir tikai 7 iespējamās pozīcijas 2 blokus augstam caurumam. “kolonna” ir skaitlis 0–15, jo ekrānā ir iespējamas 16 bloku kolonnas.

Ieteicams: