Sisukord:

Flappy Bird ATtiny85 ja OLED -ekraaniga SSD1306: 6 sammu (koos piltidega)
Flappy Bird ATtiny85 ja OLED -ekraaniga SSD1306: 6 sammu (koos piltidega)

Video: Flappy Bird ATtiny85 ja OLED -ekraaniga SSD1306: 6 sammu (koos piltidega)

Video: Flappy Bird ATtiny85 ja OLED -ekraaniga SSD1306: 6 sammu (koos piltidega)
Video: Arduino Flappy Ball Game on OLED 0.96" screen 2024, September
Anonim
Image
Image
Riistvara
Riistvara

Tere kõigile, Täna näitan teile põhilist flappy linnuklooni, mille ma lõin, ja kuidas saate sarnast mängu teha. Läbin teiega sisuliselt oma koodi läbi ja selgitan igal sammul, kuidas see töötab. See mäng on loodud töötama ATtiny85 sagedusel 1MHz ja I2C OLED ekraaniga. Edasi!

Samm: riistvara

Kui te ei ole huvitatud mänguringi tegelikust ehitamisest, kuid mõistate selle taga olevat teooriat, võite selle sammu vahele jätta.

Minu mäng nõuab kahte nuppu, ATtiny85, I2C OLED 128x64px ekraani ja mõnda toiteallikat. Minu juhendatav visiitkaart/mängukonsool: ATtiny85 ja OLED -ekraan näitavad teile, kuidas ehitada tahvlit, millel on kõik vajalik olemas! Kui te pole minu plaadi valmistamisest huvitatud, võtke oma leivaplaat välja ja ma ütlen teile spetsifikatsioonid. Võite kasutada ATtiny85 mis tahes varianti. Soovitan selliseid OLED -kuvasid.

  1. Ühendage kahe nupu üks külg ATtiny85 tihvtidega 2 ja 3. Nendele juhtmetele lisage ka maandusega ühendatud 10k oomine takisti (tõmbetakistus).
  2. Ühendage nende nuppude teine pool pingega. Kui nuppu ei vajutata, on nõela olek madal. Kui seda vajutada, on tihvti olek kõrge.
  3. Ühendage tihvt 7 kuvari SCL -tihvtiga ja tihvt 5 kuvari SDA -tihvtiga. Ühendage vastavalt toitekaablid (VCC ja GND) ekraanile.
  4. Lõpuks ühendage ATtiny tihvt 4 maandusega ja pin 8 pingega.

Samm: tarkvara

Tarkvara!
Tarkvara!

Siin on kaust, kus on kõik mängu käivitamiseks vajalikud failid. Kaks faili, FlappyBird.ino ja WallFunctions.h, on teie lugemisrõõmu jaoks väga hästi kommenteeritud. Saate FlappyBird.ino visandi oma ATtiny85 -sse (1 MHz) üles laadida ja mängida! Kui selle mängu teooria õppimine pakub teile huvi või soovite oma mängu teha, lugege edasi!

Minu mänguga on veel paar probleemi. I2C ei ole parim viis andmete edastamiseks mis tahes viisil. Selle postituse kohaselt saab ekraan vastu võtta andmeid ainult umbes 100KHz sagedusel, nii et isegi kui tõstame ATtiny taktsageduse 8MHz -ni, on I2C kanal endiselt kitsaskoht. Ekraan suudab väljastada maksimaalselt umbes 10 kaadrit sekundis. Mida rohkem pilte ekraanil on vaja joonistada, seda aeglasem on kogu protsess. Seega on minu mäng üsna lihtne, kuna te ei saa seinu väga kiiresti üle ekraani liikuma panna! Allpool on teile mõned väljakutsed, kui arvate, et olete oma ülesandega hakkama saanud:

  • Mängu raskendamiseks vaadake, kas saate seinte vahekauguseks 4 asemel 2. See ei tohiks olla liiga raske, kui saate aru, kuidas minu programm töötab:). Palun postitage kommentaaridesse, kui saate selle tööle panna!
  • Teine asi, mis minu mängus puudub, on punktisüsteem ja viis tulemuse kuvamiseks ja salvestamiseks. Vaadake, kas saate ühe rakendada!
  • Lõpuks, selle asemel, et lasta seintel liigutada ühte veergu korraga, proovige iga seina liigutada sujuvamaks liikumiseks üks piksel korraga.

3. samm: Flappy Bird ATtiny85: teooria

Flappy Bird ATtiny85: teooria
Flappy Bird ATtiny85: teooria

Kuigi meie kasutataval kuvaril on mängu jaoks 64 pikslit kõrgust, on elemente võimalik paigutada ainult 8 -pikslisteks plokkideks. Seega on ainult 8 võimalikku y-koordinaati. Asjade lihtsustamiseks jagasin tarkvaras sel viisil kogu ekraani, tehes 16 plokist 8 ploki suuruse ruudustiku, kus iga ploki suurus on 8x8 pikslit. Iga ploki täitmiseks on mängu igas sprites 8x8 pikslit. See muudab kõike palju lihtsamaks hallata. Kui vaatate ülaltoodud pilti, näete, kuidas ma ekraani jagasin. Iga sein koosneb 6 plokist, mille auk on 2 ploki kõrgune, seega on iga seina kogukõrgus 8 plokki.

Programmis on iga sein kujutatud struktuurina, mida nimetatakse seinaks. Igal seina struktuuril on kaks omadust - holePosition ja veerg. 'holePosition' on arv 0-6, kuna kahe plokiga kõrge augu korral on 8 plokist seinas ainult 7 võimalikku positsiooni. 'veerg' on arv 0-15, kuna ekraanil on võimalikud 16 veergu plokke.

Soovitan: