Turinys:

„Flappy Bird“ATtiny85 ir OLED ekranuose SSD 1306: 6 žingsniai (su paveikslėliais)
„Flappy Bird“ATtiny85 ir OLED ekranuose SSD 1306: 6 žingsniai (su paveikslėliais)

Video: „Flappy Bird“ATtiny85 ir OLED ekranuose SSD 1306: 6 žingsniai (su paveikslėliais)

Video: „Flappy Bird“ATtiny85 ir OLED ekranuose SSD 1306: 6 žingsniai (su paveikslėliais)
Video: Flappy Bird ATtiny85 OLED Display 2024, Rugsėjis
Anonim
Image
Image
Aparatūra
Aparatūra

Sveiki visi, Šiandien aš jums parodysiu pagrindinį mano sukurtą švelnų paukščių kloną ir kaip galite sukurti panašų žaidimą. Aš iš esmės peržiūrėsiu savo kodą ir paaiškinsiu, kaip jis veikia kiekviename žingsnyje. Šis žaidimas sukurtas veikti ATtiny85, kurio dažnis yra 1 MHz, su I2C OLED ekranu. Pirmyn!

1 žingsnis: Aparatūra

Jei nenorite iš tikrųjų sukurti žaidimo grandinės, bet suprantate jo teoriją, galite praleisti šį žingsnį.

Mano žaidimui reikalingi du mygtukai, ATtiny85, I2C OLED 128x64px ekranas ir tam tikras energijos šaltinis. Mano mokomoji vizitinė kortelė/žaidimų konsolė: „ATtiny85“ir „OLED Screen“parodo, kaip sukurti lentą, kurioje yra viskas, ko jums reikia! Jei jums neįdomu gaminti mano lentą, išimkite duonos lentą ir aš jums pasakysiu specifikacijas. Galite naudoti bet kurį ATtiny85 variantą. Aš rekomenduoju tokius OLED ekranus kaip šis.

  1. Vieną dviejų mygtukų pusę prijunkite prie „ATtiny85“2 ir 3 kaiščių. Prie šių laidų taip pat pridėkite 10 k ohm rezistorių, prijungtą prie žemės (ištraukiamas rezistorius).
  2. Prijunkite kitą šių mygtukų pusę prie įtampos. Kai mygtukas nepaspaudžiamas, kaiščio būsena bus žema. Kai jis bus paspaustas, kaiščio būsena bus aukšta.
  3. Prijunkite 7 kaištį prie SCL kaiščio ekrane, o 5 kaištį - prie ekrano SDA kaiščio. Atitinkamai prijunkite maitinimo kaiščius (VCC ir GND) ekrane.
  4. Galiausiai prijunkite „ATtiny“4 kaištį prie žemės ir 8 kaištį prie įtampos.

2 žingsnis: programinė įranga

Programinė įranga!
Programinė įranga!

Čia pridedamas aplankas su visais failais, kurių reikia žaidimui paleisti. Du failai, „FlappyBird.ino“ir „WallFunctions.h“, yra labai gerai pakomentuoti jūsų skaitymo malonumui. Galite įkelti „FlappyBird.ino“eskizą į savo „ATtiny85“(1 MHz dažniu) ir žaisti! Jei jus domina šio žaidimo teorija arba norite sukurti savo žaidimą, skaitykite toliau!

Mano žaidime vis dar yra keletas problemų. I2C nėra geriausias būdas perduoti duomenis bet kokiomis priemonėmis. Remiantis šiuo įrašu, ekranas gali priimti tik apie 100KHz dažnius, todėl net jei padidinsime ATtiny laikrodžio greitį iki 8MHz, I2C kanalas vis tiek bus kliūtis. Ekranas gali perduoti ne daugiau kaip 10 kadrų per sekundę. Kuo daugiau atskirų vaizdų reikia piešti ekrane, tuo lėčiau vyksta visas procesas. Taigi, mano žaidimas yra gana lengvas, nes jūs negalite priversti sienų labai greitai judėti per ekraną! Toliau pateikiami keli iššūkiai, jei manote, kad atliekate užduotį:

  • Kad žaidimas būtų sunkesnis, pažiūrėkite, ar tarpai tarp sienų gali būti 2, o ne 4. Jei suprasite, kaip veikia mano programa, tai neturėtų būti per sunku. Praneškite komentaruose, jei galite tai padaryti!
  • Kitas dalykas, kurio trūksta mano žaidimui, yra balų sistema ir būdas parodyti rezultatą bei jį išsaugoti. Pažiūrėkite, ar galite tai įgyvendinti!
  • Galiausiai, vietoj to, kad sienos judėtų vienu stulpeliu vienu metu, stenkitės, kad kiekviena siena vienu metu judėtų po vieną pikselį, kad judesiai būtų sklandesni.

3 žingsnis: Flappy Bird ATtiny85: teorija

Flappy Bird ATtiny85: teorija
Flappy Bird ATtiny85: teorija

Nors mūsų naudojamas ekranas yra 64 pikselių aukščio, kurį galima naudoti žaidimui, elementus galima išdėstyti tik 8 pikselių blokais. Taigi yra tik 8 galimos y koordinatės. Kad būtų lengviau, programinėje įrangoje taip padalinau visą ekraną, sudarydamas 16 blokų tinklą iš 8 blokų, kur kiekvienas blokas yra 8x8 pikselių. Norėdami užpildyti kiekvieną bloką, kiekvienas žaidimo sprintas yra 8x8 pikselių. Tai leidžia daug lengviau valdyti viską. Jei pažvelgsite į aukščiau esantį vaizdą, pamatysite, kaip padalinau ekraną. Kiekvieną sieną sudaro 6 blokai, kurių skylė yra 2 blokų aukščio, todėl bendras kiekvienos sienos aukštis yra 8 blokai.

Programoje kiekviena siena vaizduojama kaip struktūra, vadinama siena. Kiekviena sienos konstrukcija turi dvi savybes - holePosition ir column. „holePosition“yra skaičius 0–6, nes 2 blokų aukščio skylėje yra tik 7 galimos padėtys 8 blokų sienoje. „stulpelis“yra skaičius 0–15, nes ekrane yra 16 blokų stulpelių.

Rekomenduojamas: