Indholdsfortegnelse:

Flappy Bird på ATtiny85 og OLED Display SSD1306: 6 trin (med billeder)
Flappy Bird på ATtiny85 og OLED Display SSD1306: 6 trin (med billeder)

Video: Flappy Bird på ATtiny85 og OLED Display SSD1306: 6 trin (med billeder)

Video: Flappy Bird på ATtiny85 og OLED Display SSD1306: 6 trin (med billeder)
Video: auto dice full build video 2024, November
Anonim
Image
Image
Hardwareen
Hardwareen

Hey alle sammen, I dag vil jeg vise dig en grundlæggende klapfuglklon, som jeg har oprettet, og hvordan du kan lave et lignende spil. Jeg vil i det væsentlige gennemgå min kode med dig og forklare, hvordan det fungerer hvert trin på vejen. Dette spil er bygget til at køre på en ATtiny85 klokket til 1MHz, med en I2C OLED -skærm. Fremad!

Trin 1: Hardware

Hvis du ikke er interesseret i faktisk at bygge et kredsløb til spillet, men forstår teorien bag det, kan du springe dette trin over.

Mit spil kræver to knapper, en ATtiny85, en I2C OLED 128x64px skærm og en vis strømkilde. Mit instruerbare visitkort/spilkonsol: ATtiny85 og OLED -skærm viser dig, hvordan du bygger et bræt, der har alt, hvad du har brug for! Hvis du ikke er interesseret i at lave mit bræt, så tag dit brødbræt ud, og jeg fortæller dig specifikationerne. Du kan bruge enhver variant af ATtiny85. Jeg anbefaler OLED -skærme som denne.

  1. Led den ene side af to trykknapper til ben 2 og 3 på din ATtiny85. På disse ledninger tilføjes også en 10k ohm modstand tilsluttet jord (pull-down modstand).
  2. Led den anden side af disse trykknapper til spænding. Når der ikke trykkes på knappen, vil pin -tilstanden være lav. Når der trykkes på den, vil pin -tilstanden være høj.
  3. Tilslut pin 7 til SCL -pin på din skærm, og pin 5 til SDA -pin på din skærm. Tilslut strømstifterne (VCC og GND) på skærmen i overensstemmelse hermed.
  4. Tilslut til sidst pin 4 på ATtiny til jorden og pin 8 til spænding.

Trin 2: Softwaren

Softwaren!
Softwaren!

Vedhæftet her er en mappe med alle de filer, du har brug for for at køre spillet. To af filerne, FlappyBird.ino og WallFunctions.h, er meget godt kommenteret for din læselyst. Du kan uploade FlappyBird.ino -skitsen til din ATtiny85 (ved 1MHz) og spille væk! Hvis du lærer teorien bag dette spil at interessere dig, eller hvis du vil lave dit eget spil, så læs videre!

Der er stadig et par problemer med mit spil. I2C er ikke den bedste måde at overføre data på nogen måde. Ifølge dette indlæg kan displayet kun acceptere data ved omkring 100KHz, så selvom vi stiger ATtiny -urhastigheden til 8MHz, vil I2C -kanalen stadig være flaskehalsen. Skærmen kan maksimalt udsende ca. 10 fps. Jo mere separate billeder displayet skal tegne, jo langsommere er hele processen. Således er mit spil ganske let, da du ikke kan få væggene til at bevæge sig meget hurtigt over skærmen! Nedenfor er nogle udfordringer for dig, hvis du tror, at du kan klare opgaven:

  • For at gøre spillet sværere, se om du kan få afstanden mellem væggene til at være 2 i stedet for 4. Det burde ikke være for svært, når du forstår, hvordan mit program fungerer:). Skriv venligst i kommentarerne, hvis du kan få det til at fungere!
  • En anden ting, mit spil mangler, er et scoringssystem og en måde at vise scoren på og gemme den. Se om du kan implementere en!
  • Endelig, i stedet for at få væggene til at flytte en kolonne ad gangen, kan du prøve at få hver væg til at flytte en pixel ad gangen for en jævnere bevægelse.

Trin 3: Flappy Bird ATtiny85: Teori

Flappy Bird ATtiny85: Teori
Flappy Bird ATtiny85: Teori

Selvom den skærm, vi bruger, har 64 pixels i højden, der skal bruges til spillet, er det kun muligt at placere elementer i blokke på 8 pixels. Der er således kun 8 mulige y-koordinater. For at gøre tingene lettere delte jeg i softwaren hele skærmen på denne måde og lavede et gitter med 16 blokke med 8 blokke, hvor hver blok er 8x8 pixels. For at fylde hver blok er hver sprite i spillet 8x8 pixels. Dette gør alt meget lettere at administrere. Hvis du ser på billedet ovenfor, kan du se, hvordan jeg delte skærmen op. Hver væg består af 6 blokke, med et hul 2 blokke i højden, hvilket gør den samlede højde af hver væg 8 blokke.

I programmet er hver væg repræsenteret som en struct, kaldet Wall. Hver vægstruktur har to egenskaber - holePosition og kolonne. 'holePosition' er et tal 0-6, da der kun er 7 mulige positioner i en væg på 8 blokke til et hul 2 blokke højt. 'kolonne' er et tal 0-15, da der er 16 kolonner med blokke mulig på skærmen.

Anbefalede: