„Arduino Space Race“žaidimo versija _1: 5 žingsniai
„Arduino Space Race“žaidimo versija _1: 5 žingsniai
Anonim
Image
Image

Ei draugai. Šiandien aš parodysiu, kaip galite sukurti kosmoso lenktynių žaidimą naudodami LCD5110 ekraną ir vairasvirtę. Pažvelkime į žingsnius…

1 žingsnis: POREIKIAI

SCHEMA
SCHEMA

Čia yra dalių, kurias naudoju kurdamas šį projektą, sąrašas:

  • Arduino UNO
  • Vairasvirtės modulis
  • Jumperiniai laidai (nuo vyrų iki vyrų ir vyrų nuo moterų)
  • Bandomoji Lenta

2 žingsnis: SCHEMA

VCC -> Arduino 5V

BL -> „Arduino“kaištis 3

GND -> Arduino GND

CLK (SCLK) -> „Arduino“kaištis 8

DIN (MOSI) -> „Arduino“kaištis 9

DC -> „Arduino“kaištis 10

CE arba CS -> „Arduino“kaištis 12

RST (RESET) -> „Arduino“kaištis 11

3 žingsnis: KODAS

KODAS
KODAS

Kodas turi kodo funkcijų paaiškinimus. Jūs lengvai tai suprasite. Jei turite problemų, galite susisiekti su manimi.

#įtraukti

LCD5110 LCD (8, 9, 10, 11, 12); // (clk, din, dc, rst, ce)

int BL = 3;

extern uint8_t SmallFont ; // aprašyti šriftus extern uint8_t MediumNumbers ; extern uint8_t arac ; // apibūdinti mūsų formą išorinis uint8_t dusman_araci ; // aprašyti priešo formą const int xpin = A0; // vairasvirtė x kaištis char pozisyon = 2; // aprašyti vietą, mūsų formos pradžios vietą 2 boolean kontrol = true; boolean dusmanOldu = tiesa; int skor = 0; int hiz = 0; int dusmanKonumu1; // aprašyti priešą1 x vietą int dusmanKonumu2; // aprašyti priešą2 x vieta int dusmaninYdeKonumu; // apibūdinti priešus ir vietą

void dusmanAraci (int yer, int asama) {// nustatyti priešo formų vietas

if (yer == 1) {// jei vieta = 1; lcd.drawBitmap (2, asama, dusman_araci, 12, 8); // piešti priešo formą} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, asama, dusman_araci, 12, 8); }}

void oyunBitti () {// jei mums nepavyks, žaidimas baigsis

o (1) {uždelsimas (100); // palaukti 1 milisekundė lcd.clrScr (); // išvalyti ekraną lcd.setFont (SmallFont); // nustatyti šriftą lcd.print ("GAME OVER", CENTRAS, 20); // spausdinti lcd.update (); // atnaujinti ekraną}}

void setup () {pinMode (BL, OUTPUT); // nustatyti atgalinį šviesą Išvestis lcd. InitLCD (); // inicijuoti LCD ekraną lcd.setContrast (55); // nustatyti kontrastą (nuo 0 iki 127) Serial.begin (9600); // pradėti serijinį bendravimą}

void loop () {

analogWrite (BL, 200);

// nustatyti žaidimo ekraną lcd.drawRect (0, 0, 47, 47); // brėžiame stačiakampį lcd.setFont (SmallFont); // nustatyti šriftą lcd.print ("skor", 53, 0); // printf rezultatas lcd.setFont (MediumNumbers); // nustatyti šriftą lcd.printNumI (skor, 59, 7); // gauti rezultatą lcd.setFont (SmallFont); lcd.print ("hiz", 56, 25); // spausdinimo greitis lcd.setFont (MediumNumbers); lcd.printNumI (hiz, 59, 32); // gauti greitį lcd.update (); // atnaujinti

// nustatyti džiaugsmo lazdelės vietą int x = analogRead (xpin); if (x <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 3 && kontrol == true) {// if location! = 3, x state> 600 ir valdymas yra tikras pozisyon ++; // padidinti vietą tai reiškia perkelti figūrą į dešinę kontrol = false; } else if (x> 300 && x <600) {kontrol = true; } Serial.println (x); // mokantis x būsenos // nustatykite mūsų formos vietą lcd.clrScr (); // išvalyti ekraną, jei (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // nupieškite mūsų laivą, jei (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}

jei (pozisyon == 3) {

lcd.drawBitmap (34, 37, arac, 12, 8);}

if (dusmanOldu) {// jei priešo forma negyva, patikrinkite, ar jie negyvi

dusmanKonumu1 = pozisyon; // piešti pirmąją priešo formą dusmanKonumu2 = atsitiktinis (0, 4); // kur nors nupiešti kitą priešo figūrą dusmaninYdeKonumu = 0; // atnešti priešą iš viršaus dusmanOldu = false;} // priešas atkurtas, kad jie nebūtų mirę dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // nupieškite pirmąją priešo figūrą ir gaukite ją iš viršaus į apačią dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // nupieškite antrąją priešo formą ir gaukite ją iš viršaus į apačią, jei (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon)))) {// jei mūsų forma liečia priešo formas oyunBitti ();} // žaidimas baigtas, jei (dusmaninYdeKonumu> 40) {// jei mūsų figūra bėga nuo priešų dusmanOldu = tiesa; // nužudyti priešo formas skor ++;} // padidinti rezultatą po vieną // padidinti greitį pagal rezultatą, jei (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; vėlavimas (40); }}

4 žingsnis: KODUOKITE BITMAP

Be to, turite įtraukti formų bitų žemėlapių grafiką. Tai turi būti.c failas ir tas pats pavadinimas su kodo pavadinimu. Be to, jis turi būti tame pačiame faile.

// ------------------------------------------------ ------------------------------ // LCD asistento sukurtas failas // https://en.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // include, skirtas progmem funkcijai

const unsigned char arac PROGMEM = {// mūsų formos bitkartė

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};

const unsigned char dusman_araci PROGMEM = {// priešo laivo bitmap

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};

5 žingsnis: AČIŪ už peržiūrą

AČIŪ už peržiūrą
AČIŪ už peržiūrą

Prieš pradėdama dalintis savo projektais, aš kodavau turkiškais žodžiais, todėl negalėjau atsitiktinai ištarti kiekvieno žodžio į anglų kalbą. Čia yra žodžių vertimas, kuriuo naudoju šį projektą, Oyun = Žaidimas

Arac = Forma

Dusmanas = priešas

kontrol = kontrolė

Konum, Yer = Vieta

Oyun Bitti = Žaidimas baigtas

Skor = balas

Hiz = greitis

Rekomenduojamas: