جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
مرحبا جميعا. قبل إصدار هذه اللعبة ، قمت بنشر الإصدار الأول من اللعبة. اليوم ، سأريك الإصدار الثاني من لعبة Space Race. لنلقِ نظرة على الخطوات …
الخطوة 1: الأجزاء
فيما يلي قائمة بالأجزاء التي استخدمتها لإنشاء هذا المشروع:
- اردوينو UNO
- وحدة جويستيك
- أسلاك العبور (ذكر إلى ذكر ومن ذكر إلى أنثى)
- اللوح
الخطوة 2: المخطط
VCC -> Arduino 5V
BL -> Arduino pin 3
GND -> Arduino GND
CLK (SCLK) -> Arduino pin 8
DIN (MOSI) -> Arduino pin 9
DC -> Arduino pin 10
CE أو CS -> Arduino pin 12
RST (إعادة تعيين) -> Arduino pin 11
الخطوة 3: الكود
يحتوي الكود على تفسيرات لوظائف الكود. سوف تفهمها بسهولة. إذا كانت لديك مشكلة ، يمكنك الاتصال بي.
#يشمل
LCD5110 LCD (8 ، 9 ، 10 ، 11 ، 12) ؛ // (clk، cin، dc،، rst، ce)
كونترول منطقي = صحيح ؛
منطقية dusmanoldu = صحيح ؛
خارجي uint8_t SmallFont ؛ // وصف الخطوط
خارجي uint8_t MediumNumbers ؛ uint8_t arac خارجي ؛ // وصف الشكل الخارجي uint8_t dusmanAraci ؛ // وصف شكل العدو const int xpin = A0 ؛ // عصا التحكم x pin 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 في dusmaninYdekonumu؛
void oyunEkrani () {// ضبط شاشة اللعبة
lcd.clrScr () ، lcd.drawRect (0 ، 0 ، 47 ، 47) ؛ // نرسم شاشة lcd.setFont (SmallFont) ؛ // set font lcd.print ("skor"، 57، 1) ؛ // طباعة النتيجة lcd.print ("hiz"، 60، 24) ؛ // سرعة الطباعة lcd.setFont (أرقام متوسطة) ؛ // تعيين الخط 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 ()؛} إذا (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"، CENTER، 8) ؛ // print game over lcd.print ("skorunuz ="، 3، 30) ؛ // طباعة درجاتك lcd.setFont (أرقام متوسطة) ؛ lcd.printNumI (سكور ، 60 ، 25) ؛ // الحصول على آخر نتيجة lcd.update () ؛ }}
الإعداد باطل() {
pinMode (BL ، الإخراج) ؛ // تعيين ضوء الإخراج pinMode (xpin ، INPUT) ؛ // تعيين x دبوس كإدخال lcd. InitLCD () ؛ // initilaze شاشة lcd lcd.setContrast (55) ؛ // ضبط التباين (حوالي 0 إلى 127) Serial.begin (9600) ؛ // بدء الاتصال التسلسلي}
حلقة فارغة() {
analogWrite (BL ، 350) ؛ oyunEkrani () ؛
// joyistic durumu… // تعيين موقع جويستيك …
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 ++ ؛ // قم بزيادة الموقع ، فهذا يعني تحريك الشكل إلى جهة التحكم اليمنى = خطأ ؛ } else if (durumx> 300 && durumx <600) {kontrol = true؛ } // pozisyon durumu… // position state… if (pozisyon == 1) {// if location = 1؛ lcd.drawBitmap (2، 41، arac، 7، 7)؛ lcd.update ()؛} // ارسم سفينتنا if (pozisyon == 2) {lcd.drawBitmap (10، 41، arac، 7، 7)؛ lcd.update ()؛} إذا (pozisyon == 3) {lcd.drawBitmap (18، 41، arac، 7، 7)؛ lcd.update ()؛} if (pozisyon == 4) {lcd.drawBitmap (26 ، 41، arac، 7، 7)؛ lcd.update ()؛} إذا (pozisyon == 5) {lcd.drawBitmap (34، 41، arac، 7، 7)؛ lcd.update ()؛} إذا (pozisyon == 6) {lcd.drawBitmap (42، 41، arac، 7، 7)؛ lcd.update ()؛}
إذا (dusmanoldu) {// إذا كان شكل العدو ميتًا ، فتحقق من أنهم قد ماتوا
dusmankonum1 = بوزيسيون ؛ // ارسم شكل العدو الأول 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 ++ ؛ if (dusmaninYdekonumu> 35 && ((dusmankonum1 == pozisyon) || (dusmankonum2 == pozisyon) || (dusmankonum3 == pozisyon) || (dusmankonum4 == pozisyon))) {// if ourb touchi sources (oyun)) ؛ //انتهت اللعبة }
if (dusmaninYdekonumu> 42) {// إذا كان شكلنا يهرب من الأعداء
dusmanoldu = صحيح ؛ // قتل أشكال العدو skor ++ ؛ // زيادة النتيجة واحدة تلو الأخرى}
// skora gore hizi artiriyoruz // زيادة السرعة وفقًا للنتيجة
إذا (skor> = 0 && skor = 10 && skor = 20 && skor = 30 && skor = 40 && skor = 50) {hiz = 6 ؛ تأخير (5) ؛ }
}
الخطوة 4: كود BITMAP
علاوة على ذلك ، يجب عليك تضمين رسم نقطي للأشكال ، حيث يجب أن يكون ملف.c.
# تضمين // تضمين لوظيفة progmem
const غير موقعة char arac PROGMEM = {// صورة نقطية للشكل
0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ،} ؛
const غير موقعة char dusmanAraci PROGMEM = {// صورة نقطية لسفينة العدو
0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ،} ؛
الخطوة 5: شكرا على المشاهدة
معنى بعض الكلمات:
Oyun => لعبة
Arac => الشكل
Dusman => العدو
kontrol => التحكم
كونوم ، يير => الموقع
Oyun Bitti => انتهت اللعبة
سكور => النتيجة
Hiz => السرعة