Sadržaj:

Flappy Bird na ATtiny85 i OLED ekranu SSD1306: 6 koraka (sa slikama)
Flappy Bird na ATtiny85 i OLED ekranu SSD1306: 6 koraka (sa slikama)

Video: Flappy Bird na ATtiny85 i OLED ekranu SSD1306: 6 koraka (sa slikama)

Video: Flappy Bird na ATtiny85 i OLED ekranu SSD1306: 6 koraka (sa slikama)
Video: Led Chaser Circuit Using Arduino Uno | Arduino Uno Projects | #shorts #arduino #electronics 2024, Septembar
Anonim
Image
Image
Hardver
Hardver

Zdravo svima, Danas ću vam pokazati osnovni klon flappy bird koji sam stvorio i kako možete napraviti sličnu igru. U suštini ću s vama proći kroz svoj kôd i objasniti kako to funkcionira na svakom koraku. Ova igra je napravljena za rad na ATtiny85 taktu od 1MHz, sa I2C OLED ekranom. Napred!

Korak 1: Hardver

Ako niste zainteresirani za stvaranje kola za igru, ali razumijete teoriju koja stoji iza nje, možete preskočiti ovaj korak.

Moja igra zahtijeva dva gumba, ATtiny85, I2C OLED ekran 128x64px i neki izvor napajanja. Moja instruktivna posjetnica/igraća konzola: ATtiny85 i OLED ekran vam pokazuju kako izgraditi ploču na kojoj je sve što vam je potrebno! Ako niste zainteresirani za izradu moje ploče, izađite sa svoje ploče i reći ću vam specifikacije. Možete koristiti bilo koju varijantu ATtiny85. Preporučujem OLED ekrane poput ovog.

  1. Spojite jednu stranu dva tastera na pinove 2 i 3 na vašem ATtiny85. Na ove žice dodajte i otpornik od 10 k ohma spojen na masu (otporni otpornik).
  2. Spojite drugu stranu ovih tipki na napon. Kada dugme ne pritisnete, stanje pin -a će biti nisko. Kada se pritisne, stanje pina će biti visoko.
  3. Spojite pin 7 na SCL pin na ekranu, a pin 5 na SDA pin na ekranu. U skladu s tim ožičite priključke za napajanje (VCC i GND) na ekranu.
  4. Na kraju, spojite pin 4 na ATtiny na masu i pin 8 na napon.

Korak 2: Softver

Softver!
Softver!

Ovdje je priložena mapa sa svim datotekama koje su vam potrebne za pokretanje igre. Dvije datoteke, FlappyBird.ino i WallFunctions.h, vrlo su dobro komentirane za vaše zadovoljstvo čitanja. Skicu FlappyBird.ino možete postaviti na svoj ATtiny85 (na 1MHz) i igrati u gostima! Ako vas zanima teorija koja stoji iza ove igre ili želite napraviti svoju igru, čitajte dalje!

Još uvijek postoji nekoliko problema s mojom igrom. I2C nije najbolji način za prijenos podataka na bilo koji način. Prema ovom postu, ekran može prihvatiti podatke samo na oko 100KHz, pa čak i ako povećamo taktu ATtiny na 8MHz, I2C kanal će i dalje biti usko grlo. Zaslon može prikazati maksimalno 10 fps. Što ekran treba izvući više zasebnih slika, cijeli proces je sporiji. Dakle, moja igra je prilično jednostavna jer ne možete postići da se zidovi kreću vrlo brzo po ekranu! U nastavku su navedeni neki izazovi za vas ako mislite da ste na visini zadatka:

  • Da biste otežali igru, provjerite možete li povećati razmak između zidova 2 umjesto 4. Ne bi trebalo biti previše teško kad shvatite kako moj program funkcionira:). Javite u komentarima ako uspijete!
  • Još jedna stvar koja nedostaje mojoj igri je sistem bodovanja i način da prikažem rezultat i sačuvam ga. Pogledajte možete li primijeniti jedan!
  • Na kraju, umjesto da se zidovi pomiču jedan po jedan stupac, pokušajte natjerati svaki zid da se pomiče jedan po jedan piksel radi lakšeg kretanja.

Korak 3: Flappy Bird ATtiny85: Teorija

Flappy Bird ATtiny85: Teorija
Flappy Bird ATtiny85: Teorija

Iako ekran koji koristimo ima 64 piksela visine za igru, moguće je pozicioniranje elemenata samo u blokove od 8 piksela. Dakle, postoji samo 8 mogućih y-koordinata. Da bih olakšao stvari, u softveru sam na ovaj način podijelio cijeli ekran, čineći mrežu od 16 blokova po 8 blokova, gdje je svaki blok 8x8 piksela. Za popunjavanje svakog bloka, svaki sprite u igri je 8x8 piksela. To čini sve MNOGO lakšim za upravljanje. Ako pogledate gornju sliku, možete vidjeti kako sam podijelio ekran. Svaki zid se sastoji od 6 blokova, sa rupom od 2 bloka po visini, što ukupnu visinu svakog zida čini 8 blokova.

U programu je svaki zid predstavljen kao struktura zvana Zid. Svaka zidna konstrukcija ima dva svojstva - položaj rupe i stupac. 'holePosition' je broj 0-6, jer postoji samo 7 mogućih pozicija u zidu od 8 blokova za rupu visoku 2 bloka. 'stupac' je broj 0-15, jer je na ekranu moguće 16 stupaca blokova.

Preporučuje se: