Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Hammaga salom. O'yin versiyasidan oldin men o'yinning birinchi versiyasini e'lon qildim. Bugun men sizga Space Race Game 2 versiyasini ko'rsataman. Keling, qadamlarni ko'rib chiqaylik …
1 -qadam: QISMLAR
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
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, cin, shahar, birinchi, ce)
mantiqiy nazorat = rost;
boolean dusmanoldu = rost;
extern uint8_t SmallFont ; // shriftlarni tavsiflang
extern uint8_t MediumNumbers ; tashqi uint8_t vositasi ; // shaklimizni tasvirlab bering extern uint8_t dusmanAraci ; // dushman shaklini tavsiflang const int xpin = A0; // joystick x pin char pozisyon = 3; // joyni tasvirlab bering, bizning shaklimiz boshlanish joyi 3 int BL = 3; int skor = 0; int hiz = 0; int dusmankonum1; // dushmanni tavsiflang1 x location int dusmankonum2; // ta'rif dushman2 x manzil int dusmankonum3; // ta'rif dushman3 x manzil int dusmankonum4; // dushmanni tasvirlab bering4 x location int dusmankonum5; // ta'rif dushman5 x manzil int dusmaninYdekonumu;
void oyunEkrani () {// o'yin ekranini o'rnating
lcd.clrScr (); lcd.drawRect (0, 0, 47, 47); // biz lcd.setFont (SmallFont) to'rtburchaklar chizamiz; // shriftni o'rnatish lcd.print ("skor", 57, 1); // bosma ball lcd.print ("hiz", 60, 24); // bosib chiqarish tezligi lcd.setFont (MediumNumbers); // shriftni o'rnatish lcd.printNumI (skor, 55, 8); // lcd.printNumI ball olish (hiz, 63, 32); // lcd.update () tezligini olish; }
void dusmanAracidurum (int yer, int asama) {// dushman shakllari uchun joylarni belgilang
if (yer == 1) {lcd.drawBitmap (2, asama, dusmanAraci, 7, 7); lcd.update ();} // if location = 1 dushman bu joyni chizsa if (yer == 2) {lcd.drawBitmap (10, asama, dusmanAraci, 7, 7); lcd.update ();} if (yer == 3) {lcd.drawBitmap (18, asama, dusmanAraci, 7, 7); lcd.update (); } if (yer == 4) {lcd.drawBitmap (26, asama, dusmanAraci, 7, 7); lcd.update ();} if (yer == 5) {lcd.drawBitmap (34, asama, dusmanAraci, 7), 7); lcd.update ();} if (yer == 6) {lcd.drawBitmap (42, asama, dusmanAraci, 7, 7); lcd.update ();}}
void oyunbitti () {// agar muvaffaqiyatsizlikka uchrasak, o'yin tugaydi
while (1) {kechiktirish (100); // kutish 1 milisekund lcd.clrScr (); lcd.setFont (SmallFont); lcd.print ("OYUN BITTI", MARKAZI, 8); // lcd.print ustidan o'yinni chop etish ("skorunuz =", 3, 30); // ballaringizni lcd.setFont (MediumNumbers) chop eting; lcd.printNumI (skor, 60, 25); // oxirgi balni olish lcd.update (); }}
bo'sh o'rnatish () {
pinMode (BL, OUTPUT); // orqa nuri o'rnating Chiqish pinMode (xpin, INPUT); // x pinni kirish lcd. InitLCD () sifatida o'rnating; // 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, 350); o'yinEkrani ();
// joyistik holat… // joyistik manzilini belgilash …
int holatx = analogRead (xpin); if (holatx <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 6 && kontrol == true) {// if location! = 3, x state> 600 va nazorat haqiqiy pozisyon ++; // joylashuvni oshirish, bu shaklni o'ng tomonga siljitish demakdir kontrol = false; } if if (durumx> 300 && durumx <600) {kontrol = true; } // pozisyon holati… // pozitsiya holati… if (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 41, vosit, 7, 7); lcd.update ();} // bizning kemamizni if (pozisyon == 2) {lcd.drawBitmap (10, 41, vosit, 7, 7); lcd.update ();} if (pozisyon == 3) {lcd.drawBitmap (18, 41, vosit, 7, 7); lcd.update ();} if (pozisyon == 4) {lcd.drawBitmap (26), 41, vosit, 7, 7); lcd.update ();} if (pozisyon == 5) {lcd.drawBitmap (34, 41, vosit, 7, 7); lcd.update ();} if (pozisyon == 6) {lcd.drawBitmap (42, 41, vosit, 7, 7); lcd.update ();}
if (dusmanoldu) {// agar dushman shakli o'lik bo'lsa, ular o'lganligini tekshiring
dusmankonum1 = pozisyon; // birinchi dushman shaklini chizish dusmankonum2 = tasodifiy (0, 6); // boshqa joyga dushman shaklini chizish dusmankonum3 = tasodifiy (0, 6); dusmankonum4 = tasodifiy (0, 6); dusmankonum5 = tasodifiy (0, 6); dusmaninYdekonumu = 0; // dushmanni yuqoridan keltiring dusmanoldu = false;} // dushman qayta yaratildi, shuning uchun ular o'lmagan
dusmanAracidurum (dusmankonum1, dusmaninYdekonumu); dusmaninYdekonumu ++; // birinchi dushman shaklini chizish va uni yuqoridan pastgacha olish
dusmanAracidurum (dusmankonum2, dusmaninYdekonumu); dusmaninYdekonumu ++; // dushmanning ikkinchi shaklini chizamiz va uni yuqoridan pastgacha olamiz dusmanAracidurum (dusmankonum3, dusmaninYdekonumu); dusmaninYdekonumu ++; dusmanAracidurum (dusmankonum4, dusmaninYdekonumu); dusmaninYdekonumu ++; if (dusmaninYdekonumu> 35 && ((dusmankonum1 == pozisyon) || (dusmankonum2 == pozisyon) || (dusmankonum3 == pozisyon) || (dusmankonum4 == pozisyon))) {// agar bizning shakli dushmanga tegsa); // o'yin tugadi}
if (dusmaninYdekonumu> 42) {// agar bizning shakli dushmanlardan qochsa
dusmanoldu = rost; // dushman shakllarini o'ldirish skor ++; // ballni birma -bir oshiring}
// skora gore hizi artiramiz // ballga qarab tezlikni oshirish
agar (skor> = 0 && skor = 10 && skor = 20 && skor = 30 && skor = 40 && skor = 50) {hiz = 6; kechikish (5); }
}
4 -qadam: BITMAP -ni KODLASH
Bundan tashqari, siz shakllar uchun bitmap grafikasini kiritishingiz kerak, bu.c fayli bo'lishi kerak.
#include // include uchun progmem funktsiyasi
const unsigned char arac PROGMEM = {// bizning shakl bitmapimiz
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};
const unsigned char dusmanAraci PROGMEM = {// dushman kema bitmapi
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};
5 -qadam: Ko'rganingiz uchun tashakkur
Ba'zi so'zlarning ma'nosi:
O'yin => O'yin
Arac => Shakl
Dusman => Dushman
nazorat => nazorat
Konum, Yer => Manzil
O'yin Bitti => O'yin tugadi
Skor => Gol
Hiz => Tezlik