Агуулгын хүснэгт:

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: ХЭРЭГЦЭЭ

Схем
Схем

Миний энэ төслийг хийхэд ашиглаж байсан хэсгүүдийн жагсаалт энд байна.

  • Ардуино НҮБ
  • Joystick модуль
  • Холбогч утас (эрэгтэй, эрэгтэй, эрэгтэй эмэгтэй)
  • Талхны самбар

Алхам 2: SCHEMA

VCC -> Arduino 5V

BL -> Arduino pin 3

GND -> Arduino GND

CLK (SCLK) -> Arduino pin 8

DIN (MOSI) -> Arduino зүү 9

DC -> Arduino зүү 10

CE эсвэл CS -> Arduino pin 12

RST (дахин тохируулах) -> Arduino pin 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; // joystick x pin char pozisyon = 2; // байршлыг тайлбарлах, бидний хэлбэр эхлэх байршил 2 boolean kontrol = үнэн; boolean dusmanOldu = үнэн; int skor = 0; int hiz = 0; int dusmanKonumu1; // тайлбарлах dushman1 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, asama, dusman_araci, 12, 8); }}

void oyunBitti () {// хэрэв бид бүтэлгүйтвэл тоглоом дуусна

while (1) {саатал (100); // 1 миллисекунд lcd.clrScr () хүлээнэ үү; // дэлгэцийг цэвэрлэх lcd.setFont (SmallFont); // фонтыг тохируулах lcd.print ("GAME OVER", CENTER, 20); // lcd.update хэвлэх (); // дэлгэцийг шинэчлэх}}

void setup () {pinMode (BL, OUTPUT); // арын гэрлийг тохируулах Гаралт lcd. InitLCD (); // lcd дэлгэцийг эхлүүлэх lcd.setContrast (55); // тодосгогчийг тохируулах (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 оноо lcd.setFont (MediumNumbers); // фонтыг тохируулах lcd.printNumI (skor, 59, 7); // оноо авах lcd.setFont (SmallFont); lcd.print ("hiz", 56, 25); // хэвлэх хурд lcd.setFont (MediumNumbers); lcd.printNumI (hiz, 59, 32); // lcd.update () хурд авах; // шинэчлэх

// joyistick байршлыг тохируулах 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; } if if (x> 300 && x <600) {kontrol = true; } Serial.println (x); // x төлөвийг сурахын тулд // бидний хэлбэрийн байршлыг тохируулна уу lcd.clrScr (); // хэрэв дэлгэцийг цэвэрлэ (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 = false;} // дайсан дахин бүтээгдсэн тул тэд үхээгүй байна dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // дайсны анхны хэлбэрийг зураад дээрээс доош нь ав dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // дайсны хоёр дахь дүрсийг зурж, дээрээс нь доош нь аваарай (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon)))) // хэрэв бидний хэлбэр дайсандаа хүрвэл oyunBitti ();} // тоглоом дууссан бол (dusmaninYdeKonumu> 40) {// хэрэв бидний хэлбэр дайснуудаас зугтвал dusmanOldu = true; // дайсны хэлбэрийг устгах skor ++;} // оноог нэг нэгээр нэмэгдүүлэх // онооны дагуу хурдыг нэмэгдүүлэх (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; саатал (40); }}

Алхам 4: BITMAP -ийг кодлох

Цаашилбал, та дүрс зургийн график дүрс оруулах ёстой. Энэ нь.c файл байх ёстой бөгөөд кодын нэртэй ижил нэртэй байх ёстой, мөн ижил файл дотор байх ёстой.

// ------------------------------------------------ ------------------------------ // LCD туслагчийн үүсгэсэн файл // https://en.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // include for progmem function

const unsigned char arac PROGMEM = {// бидний хэлбэрийн bitmap

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

const unsigned char dusman_araci PROGMEM = {// дайсны хөлөг онгоцны bitmap

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

Алхам 5: Үзсэнд баярлалаа

Үзсэнд баярлалаа
Үзсэнд баярлалаа

Би төслүүдээ хуваалцахаасаа өмнө турк хэлээр кодлосон тул үг бүрийг англи хэл рүү орчуулах боломжгүй байсан.

Оюун = Тоглоом

Arac = хэлбэр

Дусман = Дайсан

хяналт = хяналт

Конум, Ер = Байршил

Оюун Бити = Тоглоом дууслаа

Скор = Оноо

Хиз = хурд

Зөвлөмж болгож буй: