Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Buna tuturor. Înainte de această versiune a jocului, am publicat prima versiune a jocului. Astăzi, ı vă va arăta versiunea 2 a jocului Space Race. Să vedem pașii …
Pasul 1: PĂRȚI
Iată o listă de părți pe care le-am folosit pentru a realiza acest proiect:
- Arduino UNO
- Modulul Joystick
- Jumper Wires (de la bărbat la bărbat și de la bărbat la femeie)
- Pană de pâine
Pasul 2: SCHEMA
VCC -> Arduino 5V
BL -> Pinul Arduino 3
GND -> Arduino GND
CLK (SCLK) -> pinul Arduino 8
DIN (MOSI) -> Arduino pin 9
DC -> Arduino pin 10
CE sau CS -> Pinul Arduino 12
RST (RESET) -> pinul Arduino 11
Pasul 3: COD
Codul are explicații despre funcțiile codului. O vei înțelege cu ușurință. Dacă aveți o problemă, mă puteți contacta.
#include
LCD5110 lcd (8, 9, 10, 11, 12); // (clk, cin, dc,, rst, ce)
boolean kontrol = true;
boolean dusmanoldu = true;
extern uint8_t SmallFont ; // descrieți fonturile
extern uint8_t MediumNumbers ; extern uint8_t arac ; // descrie forma noastră extern uint8_t dusmanAraci ; // desribe inamic shape const int xpin = A0; // joystick x pin char pozi = 3; // descrie locația, forma noastră începe locația 3 int BL = 3; int skor = 0; int hiz = 0; int dusmankonum1; // descrie inamicul1 x locația int dusmankonum2; // descrie inamicul2 x locația int dusmankonum3; // descrie malamic3 x locație int dusmankonum4; // descrie inamicul4 x locația int dusmankonum5; // descrie inamicul5 x locație int dusmaninYdekonumu;
void oyunEkrani () {// setează ecranul jocului
lcd.clrScr (); lcd.drawRect (0, 0, 47, 47); // desenăm dreptunghi lcd.setFont (SmallFont); // set font lcd.print ("skor", 57, 1); // print score lcd.print ("hiz", 60, 24); // viteza de imprimare lcd.setFont (MediumNumbers); // set font lcd.printNumI (skor, 55, 8); // get score lcd.printNumI (hiz, 63, 32); // get speed lcd.update (); }
void dusmanAracidurum (int yer, int asama) {// setează locații pentru formele inamice
if (yer == 1) {lcd.drawBitmap (2, asama, dusmanAraci, 7, 7); lcd.update ();} // if location = 1 draw inamic model this location 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 () {// dacă eșuăm, jocul s-a terminat
while (1) {întârziere (100); // așteptați 1 milisecundă lcd.clrScr (); lcd.setFont (SmallFont); lcd.print ("OYUN BITTI", CENTRE, 8); // print game over lcd.print ("skorunuz =", 3, 30); // tipărește-ți scorul lcd.setFont (MediumNumbers); lcd.printNumI (skor, 60, 25); // obține ultimul scor lcd.update (); }}
configurare nulă () {
pinMode (BL, OUTPUT); // set back light Output pinMode (xpin, INPUT); // setați pinul x ca intrare lcd. InitLCD (); // inițializați ecranul lcd lset.setContrast (55); // set contrast (amound 0 to 127) Serial.begin (9600); // începe comunicația în serie}
bucla nulă () {
analogWrite (BL, 350); oyunEkrani ();
// joyistic durumu … // setați locația joyistick …
int durumx = analogRead (xpin); if (durumx <300 && poziție! = 1 && kontrol == true) {// if location! = 1, x state600 && position! = 6 && kontrol == true) {// if location! = 3, x state> 600 și controlul este adevărat pozi ++; // măriți locația înseamnă că mutați forma spre dreapta kontrol = false; } else if (durumx> 300 && durumx <600) {kontrol = true; } // poziția durumu … // poziția statului … if (poziția == 1) {// if location = 1; lcd.drawBitmap (2, 41, arac, 7, 7); lcd.update ();} // draw our ship if (pozi == 2) {lcd.drawBitmap (10, 41, arac, 7, 7); lcd.update ();} if (pozi == 3) {lcd.drawBitmap (18, 41, arac, 7, 7); lcd.update ();} if (pozi == 4) {lcd.drawBitmap (26, 41, arac, 7, 7); lcd.update ();} if (pozi == 5) {lcd.drawBitmap (34, 41, arac, 7, 7); lcd.update ();} if (poziție == 6) {lcd.drawBitmap (42, 41, arac, 7, 7); lcd.update ();}
if (dusmanoldu) {// dacă forma inamicului este moartă, verificați dacă sunt morți
dusmankonum1 = poziție; // desenează prima formă inamică dusmankonum2 = aleatoriu (0, 6); // desenează altă formă inamică undeva dusmankonum3 = aleatoriu (0, 6); dusmankonum4 = aleatoriu (0, 6); dusmankonum5 = aleatoriu (0, 6); dusmaninYdekonumu = 0; // aduce dușmanul de sus dusmanoldu = fals;} // inamicul este recreat astfel încât să nu fie morți
dusmanAracidurum (dusmankonum1, dusmaninYdekonumu); dusmaninYdekonumu ++; // desenează prima formă a inamicului și obține-o de sus în jos
dusmanAracidurum (dusmankonum2, dusmaninYdekonumu); dusmaninYdekonumu ++; // desenează a doua formă de inamic și obține-o de sus în jos dusmanAracidurum (dusmankonum3, dusmaninYdekonumu); dusmaninYdekonumu ++; dusmanAracidurum (dusmankonum4, dusmaninYdekonumu); dusmaninYdekonumu ++; if (dusmaninYdekonumu> 35 && ((dusmankonum1 == poziție) || (dusmankonum2 == poziție) || (dusmankonum3 == poziție) || (dusmankonum4 == poziție))) {// dacă forma noastră atinge forme inamice oyunbitti (); //jocul s-a terminat }
if (dusmaninYdekonumu> 42) {// dacă forma noastră scapă de dușmani
dusmanoldu = true; // ucide forme inamice skor ++; // măriți unul câte unul scorul}
// skora gore hizi artiriyoruz // mărește viteza în funcție de scor
if (skor> = 0 && skor = 10 && skor = 20 && skor = 30 && skor = 40 && skor = 50) {hiz = 6; întârziere (5); }
}
Pasul 4: COD BITMAP
Mai mult, trebuie să includeți grafica bitmap pentru forme. Trebuie să fie un fișier.c.
#include // include pentru funcția progmem
const unsigned char arac PROGMEM = {// forma noastră bitmap
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};
const unsigned char dusmanAraci PROGMEM = {// bitmap navei inamice
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};
Pasul 5: Vă mulțumim pentru vizualizare
Înțelesul unor cuvinte:
Oyun => Joc
Arac => Formă
Dusman => Enemy
kontrol => control
Konum, Yer => Locație
Oyun Bitti => Joc terminat
Skor => Scor
Hiz => Viteză