Mundarija:

Arduino kosmik poyga o'yini versiyasi _1: 5 qadam
Arduino kosmik poyga o'yini versiyasi _1: 5 qadam

Video: Arduino kosmik poyga o'yini versiyasi _1: 5 qadam

Video: Arduino kosmik poyga o'yini versiyasi _1: 5 qadam
Video: ЯНГИ ИХТИРО 14 ЙОШЛИ БОЛАДАН 120 КМ ТЕЗЛИК 2024, Noyabr
Anonim
Image
Image

Salom do'stlar. Bugun men sizga LCD5110 ekrani va joystik yordamida kosmik poyga o'yinini qanday yaratishni ko'rsatmoqchiman.

1 -qadam: kerak

SCHEMA
SCHEMA

Men bu loyihani amalga oshirish uchun ishlatgan qismlar ro'yxati:

  • Arduino UNO
  • Joystik moduli
  • Jumper simlari (erkakdan erkakga va erkakdan ayolga)
  • Non paneli

2 -qadam: SCHEMA

VCC -> Arduino 5V

BL -> Arduino pin 3

GND -> Arduino GND

CLK (SCLK) -> Arduino pin 8

Din (MOSI) -> Arduino pin 9

DC -> Arduino pin 10

Idoralar yoki CS -> Arduino pin 12

RST (RESET) -> Arduino pin 11

3 -qadam: KOD

KOD
KOD

Kodda kod funktsiyalarining tushuntirishlari mavjud. Siz buni osongina tushunasiz. Agar sizda muammo bo'lsa, men bilan bog'lanishingiz mumkin.

#qo'shing

LCD5110 lcd (8, 9, 10, 11, 12); // (clk, din, DC, birinchi, ce)

int BL = 3;

extern uint8_t SmallFont ; // shriftlarni tavsiflang extern uint8_t MediumNumbers ; tashqi uint8_t vositasi ; // shaklimizni tasvirlab bering extern uint8_t dusman_araci ; // dushman shaklini tavsiflang const int xpin = A0; // joystick x pin char pozisyon = 2; // joyni tasvirlab bering, bizning shakl boshlanish joyi 2 boolean kontrol = rost; boolean dusmanOldu = rost; int skor = 0; int hiz = 0; int dusmanKonumu1; // dushmanni tasvirlab bering1 x manzil int dusmanKonumu2; // dushmanni tasvirlab bering2 x manzil int dusmaninYdeKonumu; // dushmanlarning joylashishini tasvirlab bering

void dusmanAraci (int yer, int asama) {// dushman shakllari uchun joylarni belgilang

if (yer == 1) {// agar manzil = 1; lcd.drawBitmap (2, asama, dusman_araci, 12, 8); // dushman shaklini chizish} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, asama, dusman_araci, 12, 8); }}

void oyunBitti () {// agar muvaffaqiyatsizlikka uchrasak, o'yin tugaydi

while (1) {kechiktirish (100); // kutish 1 milisekund lcd.clrScr (); // ekranni tozalash lcd.setFont (SmallFont); // shriftni o'rnatish lcd.print ("O'YIN OVER", MARKAZI, 20); // lcd.update () ni chop eting; // ekranni yangilang}}

void setup () {pinMode (BL, OUTPUT); // orqa nuri o'rnating Chiqish lcd. InitLCD (); // lcd.setContrast (55) LCD displeyini ishga tushiring; // kontrastni o'rnatish (0 dan 127 gacha) Serial.begin (9600); // ketma -ket muloqotni boshlash}

void loop () {

analogWrite (BL, 200);

// o'yin ekranini o'rnatish lcd.drawRect (0, 0, 47, 47); // biz lcd.setFont (SmallFont) to'rtburchaklar chizamiz; // shriftni o'rnatish lcd.print ("skor", 53, 0); // printf ball lcd.setFont (MediumNumbers); // lcd.printNumI shriftini o'rnating (skor, 59, 7); // lcd.setFont (SmallFont) ballini oling; lcd.print ("hiz", 56, 25); // bosib chiqarish tezligi lcd.setFont (MediumNumbers); lcd.printNumI (hiz, 59, 32); // lcd.update () tezligini olish; // yangilash

// joyistik manzilini belgilang int x = analogRead (xpin); if (x <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 3 && kontrol == true) {// agar manzil! = 3, x holati> 600 va nazorat haqiqiy pozisyon ++; // joylashuvni oshirish, bu shaklni o'ng tomonga siljitish demakdir kontrol = false; } if if (x> 300 && x <600) {kontrol = true; } Serial.println (x); // x holatini o'rganish uchun // formamiz o'rnini belgilang lcd.clrScr (); // ekranni tozalang if (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 37, vosit, 12, 8);} // bizning kemani chizish agar (pozisyon == 2) {lcd.drawBitmap (18, 37, vosit, 12, 8);}

agar (pozisyon == 3) {

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

if (dusmanOldu) {// agar dushman shakli o'lik bo'lsa, ular o'lganligini tekshiring

dusmanKonumu1 = pozisyon; // birinchi dushman shaklini chizish dusmanKonumu2 = tasodifiy (0, 4); // boshqa joyga dushman shaklini chizish dusmaninYdeKonumu = 0; // dushmanni yuqoridan keltiring dusmanOldu = false;} // dushman qayta yaratildi, shuning uchun ular o'lik emas dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // birinchi dushman shaklini chizish va uni yuqoridan pastgacha olish dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // dushmanning ikkinchi shaklini chizamiz va uni yuqoridan pastgacha olamiz, agar (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon))) {// agar bizning shakli dushmanga tegsa o'yinBitti ();} // o'yin tugadi if (dusmaninYdeKonumu> 40) {// agar bizning shakli dushmanlardan qochsa dusmanOldu = true; // dushman shakllarini o'ldiring skor ++;} // ballni birma -bir oshiring // agar skorga ko'ra tezlikni oshiring (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; kechikish (40); }}

4 -qadam: BITMAP -ni KODLASH

Bundan tashqari, siz shakllar uchun bitmap grafikasini kiritishingiz kerak, bu.c fayli va kod nomi bilan bir xil nom bo'lishi kerak, shuningdek, u xuddi shu faylda bo'lishi kerak.

// ------------------------------------------------ ------------------------------ // LCD yordamchisi yaratgan fayl // https://en.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // programma funktsiyasi uchun o'z ichiga oladi

const unsigned char arac PROGMEM = {// bizning shakl bitmapimiz

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

const unsigned char dusman_araci PROGMEM = {// dushman kema bitmapi

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

5 -qadam: Ko'rganingiz uchun RAHMAT

Ko'rganingiz uchun RAHMAT
Ko'rganingiz uchun RAHMAT

Men o'z loyihalarimni baham ko'rishni boshlashimdan oldin, men turkcha so'zlar bilan kodladim, shuning uchun har bir so'zni inglizchaga aylantira olmadim.

O'yin = O'yin

Arak = Shakl

Dusman = Dushman

nazorat = nazorat

Konum, Yer = Manzil

O'yin Bitti = O'yin tugadi

Skor = ball

Xiz = tezlik

Tavsiya: