2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
היי לכולם. לפני גרסת המשחק הזו, אני פרסמתי את הגרסה הראשונה של המשחק. היום, אני אראה לכם את משחק מירוץ החלל בגרסה 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 => מהירות