משחק מירוץ החלל גרסה 2: 5 שלבים
משחק מירוץ החלל גרסה 2: 5 שלבים
Image
Image

היי לכולם. לפני גרסת המשחק הזו, אני פרסמתי את הגרסה הראשונה של המשחק. היום, אני אראה לכם את משחק מירוץ החלל בגרסה 2. בואו נסתכל על שלבים …

שלב 1: חלקים

סכֵימָה
סכֵימָה

להלן רשימה של חלקים בהם השתמשתי לצורך ביצוע הפרויקט:

  • ארדואינו UNO
  • מודול ג'ויסטיק
  • חוטי מגשר (זכר לזכר וזכר לנקבה)
  • לוח לחם

שלב 2: סכמה

VCC -> Arduino 5V

BL -> סיכת ארדואינו 3

GND -> Arduino GND

CLK (SCLK) -> סיכת ארדואינו 8

DIN (MOSI) -> סיכת ארדואינו 9

DC -> סיכת ארדואינו 10

CE או CS -> סיכת Arduino 12

RST (איפוס) -> סיכת ארדואינו 11

שלב 3: CODE

קוד
קוד

הקוד כולל הסברים על פונקציות הקוד. אתה תבין את זה בקלות. אם יש לך בעיה אתה יכול ליצור איתי קשר.

#לִכלוֹל

LCD5110 lcd (8, 9, 10, 11, 12); // (clk, cin, dc,, rst, ce)

שליטה בוליאנית = אמת;

dusmanoldu בוליאני = נכון;

חיצוני uint8_t SmallFont ; // תאר את הגופנים

extern uint8_t MediumNumbers ; חיצוני uint8_t arac ; // תאר את צורתנו החיצונית uint8_t dusmanAraci ; // תאר את צורת האויב const int xpin = A0; // ג'ויסטיק x סיכה char pozisyon = 3; // תאר את המיקום, צורת התחלת מיקום 3 int BL = 3; int skor = 0; int hiz = 0; int dusmankonum1; // תאר את האויב 1 x מיקום int dusmankonum2; // תאר את האויב 2 x מיקום int dusmankonum3; // תאר את האויב 3 x מיקום int dusmankonum4; // לתאר אויב 4 x מיקום int dusmankonum5; // תאר את האויב 5 x מיקום int dusmaninYdekonumu;

void oyunEkrani () {// להגדיר מסך משחק

lcd.clrScr (); lcd.drawRect (0, 0, 47, 47); // אנו מציירים מלבן lcd.setFont (SmallFont); // הגדר lcd.print ("skor", 57, 1); // הדפס ציון lcd.print ("hiz", 60, 24); // מהירות הדפסה lcd.setFont (MediumNumbers); // הגדר lcd.printNumI (skor, 55, 8); // לקבל ציון lcd.printNumI (hiz, 63, 32); // קבל מהירות lcd.update (); }

void dusmanAracidurum (int yer, int asama) {// קבע מיקומים לצורות אויב

if (yer == 1) {lcd.drawBitmap (2, asama, dusmanAraci, 7, 7); lcd.update ();} // if location = 1 צייר את האויב בצורה זו אם (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 () {// אם נכשל, המשחק נגמר

בעוד (1) {עיכוב (100); // המתן 1 מילישניות lcd.clrScr (); lcd.setFont (SmallFont); lcd.print ("OYUN BITTI", CENTRE, 8); // משחק הדפסה מעל lcd.print ("skorunuz =", 3, 30); // הדפס את הציון שלך lcd.setFont (MediumNumbers); lcd.printNumI (skor, 60, 25); // קבל את הציון האחרון lcd.update (); }}

הגדרת בטל () {

pinMode (BL, OUTPUT); // להחזיר אור פלט pinMode (xpin, INPUT); // הגדר סיכה x כקלט lcd. InitLCD (); // התחל את מסך lcd lcd.setContrast (55); // הגדר ניגודיות (בין 0 ל -127) Serial.begin (9600); // התחל תקשורת סדרתית}

לולאת חלל () {

analogWrite (BL, 350); oyunEkrani ();

// durumu joyistic… // קבע את המיקום של joyistick…

int durumx = analogRead (xpin); if (durumx <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 6 && kontrol == true) {// if location! = 3, x state> 600 והשליטה היא pozisyon ++ אמיתית; // להגדיל את המיקום המשמעות היא להעביר צורה לאופן הנכון kontrol = false; } אחרת אם (durumx> 300 && durumx <600) {kontrol = true; } // pozisyon durumu… // מצב מצב … if (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 41, arac, 7, 7); lcd.update ();} // צייר את הספינה שלנו אם (pozisyon == 2) {lcd.drawBitmap (10, 41, arac, 7, 7); lcd.update ();} if (pozisyon == 3) {lcd.drawBitmap (18, 41, arac, 7, 7); lcd.update ();} if (pozisyon == 4) {lcd.drawBitmap (26, 41, arac, 7, 7); lcd.update ();} if (pozisyon == 5) {lcd.drawBitmap (34, 41, arac, 7, 7); lcd.update ();} if (pozisyon == 6) {lcd.drawBitmap (42, 41, arac, 7, 7); lcd.update ();}

אם (dusmanoldu) {// אם צורת האויב מתה, בדוק האם הם מתים

dusmankonum1 = pozisyon; // צייר צורת אויב ראשונה dusmankonum2 = אקראי (0, 6); // צייר צורת אויב נוספת במקום כלשהו dusmankonum3 = אקראי (0, 6); dusmankonum4 = אקראי (0, 6); dusmankonum5 = אקראי (0, 6); dusmaninYdekonumu = 0; // להביא את האויב מהחלק העליון dusmanoldu = false;} // האויב יוצר מחדש כדי שלא ימותו

dusmanAracidurum (dusmankonum1, dusmaninYdekonumu); dusmaninYdekonumu ++; // צייר את צורת האויב הראשונה וקבל אותה מלמעלה למטה

dusmanAracidurum (dusmankonum2, dusmaninYdekonumu); dusmaninYdekonumu ++; // צייר את צורת האויב השנייה וקבל אותה מלמעלה למטה dusmanAracidurum (dusmankonum3, dusmaninYdekonumu); dusmaninYdekonumu ++; dusmanAracidurum (dusmankonum4, dusmaninYdekonumu); dusmaninYdekonumu ++; אם (dusmaninYdekonumu> 35 && ((dusmankonum1 == pozisyon) || (dusmankonum2 == pozisyon) || (dusmankonum3 == pozisyon) || (dusmankonum4 == pozisyon))) {// אם צורתנו נוגעת בצורות האויב oyunbitti (); //המשחק נגמר }

if (dusmaninYdekonumu> 42) {// אם צורתנו בורחת מאויבים

dusmanoldu = נכון; // להרוג צורות אויב ++; // להגדיל בזה אחר זה את הציון}

// skora gore hizi artiriyoruz // הגדילו את המהירות לפי הציון

אם (skor> = 0 && skor = 10 && skor = 20 && skor = 30 && skor = 40 && skor = 50) {hiz = 6; עיכוב (5); }

}

שלב 4: BITMAP CODE

יתר על כן, עליך לכלול גרפיקת מפת סיביות לצורות. זה חייב להיות קובץ.c.

#include // include עבור פונקציית התוכנה

const uns sign char arac PROGMEM = {// מפת הסיביות של הצורה שלנו

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

const unsigned char dusmanAraci PROGMEM = {// מפת סיביות של ספינת אויב

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

שלב 5: תודה על הצפייה

פירוש של כמה מילים:

Oyun => משחק

Arac => צורה

דושמן => אויב

kontrol => שליטה

Konum, Yer => מיקום

Oyun Bitti => המשחק נגמר

סקור => ציון

Hiz => מהירות

מוּמלָץ: