Мазмұны:

Arduino Space Race ойынының нұсқасы _1: 5 қадам
Arduino Space Race ойынының нұсқасы _1: 5 қадам

Бейне: Arduino Space Race ойынының нұсқасы _1: 5 қадам

Бейне: Arduino Space Race ойынының нұсқасы _1: 5 қадам
Бейне: REAL RACING 3 LEAD FOOT EDITION 2024, Қараша
Anonim
Image
Image

Эй достар. Бүгін мен сізге LCD5110 экраны мен джойстик арқылы ғарыштық жарыс ойынын қалай жасауға болатынын көрсеткім келеді.

1 -қадам: ҚАЖЕТТІКТЕР

СХЕМА
СХЕМА

Міне, мен осы жобаны жасау үшін пайдаланған бөліктердің тізімі:

  • Arduino UNO
  • Джойстик модулі
  • Jumper Wires (еркектен еркекке және еркектен әйелге)
  • Нан тақтасы

2 -қадам: SCHEMA

VCC -> Arduino 5V

BL -> Arduino түйрегіші 3

GND -> Arduino GND

CLK (SCLK) -> Arduino пин 8

DIN (MOSI) -> Arduino PIN 9

DC -> Arduino штыры 10

CE немесе CS -> Arduino pin 12

RST (қалпына келтіру) -> Arduino түйрегіш 11

3 -қадам: КОД

КОД
КОД

Кодта код функцияларының түсіндірмелері бар. Сіз оны оңай түсінесіз. Егер сізде мәселе туындаса, маған хабарласа аласыз.

#қосу

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

int BL = 3;

extern uint8_t SmallFont ; // extern uint8_t MediumNumbers қаріптерін сипаттаңыз ; extern uint8_t arac ; // формамызды сипаттаңыз extern uint8_t dusman_araci ; // жаудың пішінін сипаттау const int xpin = A0; // джойстик x pin char pozisyon = 2; // орналасқан жерді сипаттаңыз, біздің пішініміздің басталу орны 2 логикалық kontrol = true; логикалық dusmanOldu = ақиқат; int skor = 0; int hiz = 0; int dusmanKonumu1; // сипаттау dush1 x орналасуы int dusmanKonumu2; // сипаттау душман2 x орналасуы int dusmaninYdeKonumu; // жаулардың орналасқан жерін сипаттаңыз

void dusmanAraci (int yer, int asama) {// жаудың пішіндері үшін орындарды орнатыңыз

if (yer == 1) {// if location = 1; lcd.drawBitmap (2, асама, dusman_araci, 12, 8); // жау формасын салу} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, асама, dusman_araci, 12, 8); }}

void oyunBitti () {// егер біз сәтсіздікке ұшырасақ, ойын аяқталады

while (1) {delay (100); // 1 милисекунд күтіңіз lcd.clrScr (); // экранды тазарту lcd.setFont (SmallFont); // шрифтті орнату lcd.print («GAME OVER», ОРТАЛЫҚ, 20); // lcd.update басып шығару (); // экранды жаңарту}}

void setup () {pinMode (BL, OUTPUT); // артқа қою жарығы Output lcd. InitLCD (); // lcd.setContrast (55) lcd экранын бастаңыз; // контрасты орнатыңыз (0 -ден 127 -ге дейін) Serial.begin (9600); // сериялық хабарлауды бастау}

void loop () {

analogWrite (BL, 200);

// ойын экранын орнату lcd.drawRect (0, 0, 47, 47); // lcd.setFont (SmallFont) тіктөртбұрышын саламыз; // шрифтті орнату lcd.print («skor», 53, 0); // printf score lcd.setFont (MediumNumbers); // шрифтті орнату lcd.printNumI (skor, 59, 7); // lcd.setFont (SmallFont) баллын алу; lcd.print («хиз», 56, 25); // басып шығару жылдамдығы lcd.setFont (MediumNumbers); lcd.printNumI (хиз, 59, 32); // lcd.update жылдамдығын алу (); // жаңарту

// джойстиктің орнын орнатыңыз 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 және бақылау - бұл дұрыс pozisyon ++; // орынды ұлғайту, бұл пішінді оңға жылжытуды білдіреді kontrol = false; } else if (x> 300 && x <600) {kontrol = true; } Serial.println (x); // x күйін үйрену үшін // форманың орналасуын орнатыңыз lcd.clrScr (); // экранды тазалаңыз if (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // біздің кемені тартыңыз if (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}

егер (позиция == 3) {

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

if (dusmanOldu) {// егер жаудың пішіні өлген болса, олардың өлгенін тексеріңіз

dusmanKonumu1 = позиция; // dusmanKonumu2 қарсыластың бірінші формасын салыңыз = кездейсоқ (0, 4); // басқа жерге жау формасын салыңыз dusmaninYdeKonumu = 0; // жауды жоғарыдан әкеледі dusmanOldu = жалған;} // жау қайта құрылады, сондықтан олар өлі емес dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // жаудың бірінші пішінін сызыңыз және оны жоғарыдан төмен қарай алыңыз dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // жаудың екінші пішінін салыңыз және оны жоғарыдан төменге қарай алыңыз, егер (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon))) {// егер біздің пішін жауға тиіп кетсе oyunBitti ();} // ойын аяқталды if (dusmaninYdeKonumu> 40) {// егер біздің формамыз жаулардан қашып кетсе dusmanOldu = true; // жау пішіндерін өлтіру skor ++;} // баллды бір -бірлеп жоғарылату // егер жылдамдыққа сәйкес жылдамдықты жоғарылатса (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; кешіктіру (40); }}

4 -қадам: BITMAP -ті кодтау

Сонымен қатар, пішіндер үшін нүктелік кескін графигін қосу қажет. Бұл файл.c және код атымен бірдей болуы керек, сонымен қатар ол сол файлда болуы керек.

// ------------------------------------------------ ------------------------------ // СКД көмекшісі жасаған файл // https://kz.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // include функциясы үшін

const unsigned char arac PROGMEM = {// біздің пішіннің нүктелік картасы

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

const unsigned char dusman_araci PROGMEM = {// жау кемелерінің нүктелік картасы

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

5 -қадам: Қарағаныңызға РАХМЕТ

Қарағандарыңызға РАХМЕТ
Қарағандарыңызға РАХМЕТ

Мен өз жобаларыммен бөліспес бұрын, мен түрік сөздерімен кодтадым, сондықтан әр сөзді ағылшын тіліне аударуға мүмкіндік болмады.

Ойын = Ойын

Arac = Пішін

Дусман = Жау

бақылау = бақылау

Konum, Yer = Орналасуы

Ойын Бити = Ойын аяқталды

Скор = Ұпай

Хиз = жылдамдық

Ұсынылған: