Sadržaj:

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

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

Video: Flappy Bird na ATtiny85 i OLED zaslonu SSD1306: 6 koraka (sa slikama)
Video: Flappy Bird ATtiny85 OLED Display 2024, Rujan
Anonim
Image
Image
Hardver
Hardver

Hej svima, Danas ću vam pokazati osnovni klon flappy bird koji sam stvorio i kako možete napraviti sličnu igru. U biti ć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, s I2C OLED zaslonom. Naprijed!

Korak 1: Hardver

Ako niste zainteresirani za stvaranje kola za igru, ali razumijete teoriju koja stoji iza njega, 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 zaslon pokazuju vam kako izgraditi ploču na kojoj se nalazi sve što vam je potrebno! Ako niste zainteresirani za izradu moje ploče, izađite s ploče i reći ću vam specifikacije. Možete koristiti bilo koju varijantu ATtiny85. Preporučujem OLED zaslone poput ovog.

  1. Spojite jednu stranu dvaju tipki na pinove 2 i 3 na vašem ATtiny85. Na ove žice dodajte i otpornik od 10 k ohma spojen na masu (padajući otpornik).
  2. Spojite drugu stranu ovih gumba na napon. Kad gumb ne pritisnete, stanje pina će biti nisko. Kada se pritisne, stanje pina će biti visoko.
  3. Spojite pin 7 na SCL pin na zaslonu, a pin 5 na SDA pin na zaslonu. U skladu s tim ožičite priključke za napajanje (VCC i GND) na zaslonu.
  4. Na kraju, spojite iglu 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š postoji nekoliko problema s mojom igrom. I2C nije najbolji način prijenosa podataka na bilo koji način. Prema ovom postu, zaslon može prihvatiti samo podatke na oko 100KHz, pa čak i ako povećamo taktu ATtinyja na 8MHz, I2C kanal i dalje će biti usko grlo. Zaslon može prikazati maksimalno 10 fps. Što zaslon mora izvući više zasebnih slika, cijeli je proces sporiji. Dakle, moja je igra prilično jednostavna jer ne možete postići da se zidovi kreću vrlo brzo po ekranu! U nastavku vam donosimo neke izazove 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 sustav bodovanja i način da prikažem rezultat i spremim ga. Pogledajte možete li ga implementirati!
  • 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 zaslon koji koristimo ima 64 piksela visine za igru, moguće je postaviti elemente 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 zaslon, napravivši mrežu od 16 blokova po 8 blokova, gdje je svaki blok 8x8 piksela. Za ispunu svakog bloka svaki sprite u igri ima 8x8 piksela. To sve čini MNOGO lakšim za upravljanje. Ako pogledate gornju sliku, možete vidjeti kako sam podijelio zaslon. Svaki zid sastoji se od 6 blokova, s 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 položaja u zidu od 8 blokova za rupu visoku 2 bloka. 'stupac' je broj 0-15, jer je na zaslonu moguće 16 stupaca blokova.

Preporučeni: