جدول المحتويات:

اردوينو لعبة سباق الفضاء الإصدار _1: 5 خطوات
اردوينو لعبة سباق الفضاء الإصدار _1: 5 خطوات

فيديو: اردوينو لعبة سباق الفضاء الإصدار _1: 5 خطوات

فيديو: اردوينو لعبة سباق الفضاء الإصدار _1: 5 خطوات
فيديو: أعلى مستوى وصلتوا في البرمجة 2024, يوليو
Anonim
Image
Image

اهلا يا اصدقاء. اليوم ، أنا أريد أن أريكم كيف يمكنك صنع لعبة Space Race بواسطة شاشة LCD5110 وجهاز تحكم جوي. هيا بنا نلقي نظرة على الخطوات …

الخطوة 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، din، dc، rst، ce)

كثافة العمليات BL = 3 ؛

خارجي uint8_t SmallFont ؛ // وصف الخطوط الخارجية uint8_t MediumNumbers ؛ uint8_t arac خارجي ؛ // وصف الشكل الخارجي uint8_t dusman_araci ؛ // وصف شكل العدو const int xpin = A0 ؛ // عصا التحكم x pin char pozisyon = 2 ؛ // وصف الموقع ، موقع بداية الشكل 2 boolean kontrol = true ؛ منطقي dusmanOldu = صحيح ؛ int skor = 0 ؛ int hiz = 0 ؛ كثافة العمليات dusman // وصف العدو 1 x الموقع int dusmanKonumu2؛ // وصف موقع العدو 2 × الموقع في dusmaninYdeKonumu ؛ // وصف موقع الأعداء

void dusmanAraci (int yer، int asama) {// تعيين مواقع لأشكال العدو

إذا (yer == 1) {// إذا كان الموقع = 1 ؛ lcd.drawBitmap (2 ، أساما ، dusman_araci ، 12 ، 8) ؛ // رسم شكل العدو} إذا (yer == 2) {lcd.drawBitmap (18، asama، dusman_araci، 12، 8)؛ } إذا (yer == 3) {lcd.drawBitmap (34، asama، dusman_araci، 12، 8)؛ }}

void oyunBitti () {// إذا فشلنا ، تنتهي اللعبة

بينما (1) {تأخير (100) ؛ // انتظر 1 ميلي ثانية lcd.clrScr () ؛ // مسح شاشة lcd.setFont (SmallFont) ؛ // set font lcd.print ("GAME OVER"، CENTER، 20) ؛ // طباعة lcd.update () ؛ // تحديث الشاشة}}

إعداد باطل () {pinMode (BL، OUTPUT) ؛ // ضبط إخراج الضوء LCD. InitLCD () ؛ // initilaze شاشة lcd lcd.setContrast (55) ؛ // ضبط التباين (حوالي 0 إلى 127) Serial.begin (9600) ؛ // بدء الاتصال التسلسلي}

حلقة فارغة() {

analogWrite (BL ، 200) ؛

// ضبط شاشة اللعبة lcd.drawRect (0 ، 0 ، 47 ، 47) ؛ // نرسم شاشة lcd.setFont (SmallFont) ؛ // set font lcd.print ("skor"، 53، 0) ؛ // printf Score lcd.setFont (أرقام متوسطة) ؛ // تعيين الخط lcd.printNumI (skor ، 59 ، 7) ؛ // الحصول على درجة lcd.setFont (SmallFont) ؛ lcd.print ("hiz"، 56، 25) ؛ // سرعة الطباعة lcd.setFont (أرقام متوسطة) ؛ lcd.printNumI (hiz، 59، 32) ؛ // الحصول على سرعة lcd.update () ؛ //تحديث

// تعيين موقع joyistick int x = analogRead (xpin) ؛ if (x <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1، x state600 && pozisyon! = 3 && kontrol == true) {// if location! = 3، x state> 600 والتحكم هو صحيح pozisyon ++ ؛ // قم بزيادة الموقع ، فهذا يعني تحريك الشكل إلى جهة التحكم اليمنى = خطأ ؛ } else if (x> 300 && x <600) {kontrol = true؛ } Serial.println (x) ؛ // للتعلم x state // اضبط موقع الشكل الخاص بنا lcd.clrScr () ؛ // امسح الشاشة إذا (pozisyon == 1) {// if location = 1؛ lcd.drawBitmap (2، 37، arac، 12، 8)؛} // ارسم سفينتنا if (pozisyon == 2) {lcd.drawBitmap (18، 37، arac، 12، 8)؛}

إذا (pozisyon == 3) {

lcd.drawBitmap (34، 37، arac، 12، 8) ؛}

إذا (dusmanOldu) {// إذا كان شكل العدو ميتًا ، فتأكد من أنهم قد ماتوا

dusmanKonumu1 = بوزيسيون ؛ // ارسم شكل العدو الأول dusmanKonumu2 = عشوائي (0 ، 4) ؛ // رسم شكل عدو آخر في مكان ما dusmaninYdeKonumu = 0 ؛ // جلب العدو من أعلى dusmanOldu = false ؛} // تم إعادة تكوين العدو حتى لا يكون ميتًا dusmanAraci (dusmanKonumu1، dusmaninYdeKonumu)؛ dusmaninYdeKonumu ++ ؛ // ارسم شكل العدو الأول واحصل عليه من أعلى إلى أسفل dusmanAraci (dusmanKonumu2، dusmaninYdeKonumu)؛ dusmaninYdeKonumu ++ ؛ // ارسم شكل العدو الثاني واحصل عليه من أعلى إلى أسفل إذا (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon))) {// إذا كان شكلنا يلامس أشكال العدو oyunBitti ()؛} // انتهت اللعبة إذا (dusmaninYdeKonumu> 40) {// إذا كان شكلنا يهرب من الأعداء dusmanOldu = true؛ // قتل أشكال العدو. تأخير (40) ؛ }}

الخطوة 4: كود BITMAP

علاوة على ذلك ، يجب عليك تضمين رسم نقطي للأشكال ، يجب أن يكون ملف.c ونفس الاسم مع اسم الرمز ، كما يجب أن يكون في نفس الملف.

// ------------------------------------------------ ------------------------------ // ملف تم إنشاؤه بواسطة مساعد LCD // https://en.radzio.dxp.pl / bitmap_converter / // --------------------------------------------- --------------------------------- #include // include for progmem function

const غير موقعة char arac PROGMEM = {// صورة نقطية للشكل

0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ،} ؛

const غير موقعة char dusman_araci PROGMEM = {// صورة نقطية لسفينة العدو

0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ، 0xFF ،} ؛

الخطوة 5: شكرا للعرض

شكرا علي الرؤية
شكرا علي الرؤية

قبل أن أبدأ في مشاركة مشاريعي ، قمت بترميزها بالكلمات التركية لذلك لم أستطع تحويل كل الكلمات إلى اللغة الإنجليزية ، وهنا ترجمة الكلمات التي أستخدمها في هذا المشروع ،

Oyun = لعبة

أراك = الشكل

دسمان = العدو

كونترول = التحكم

كونوم ، يير = الموقع

Oyun Bitti = انتهت اللعبة

سكور = النتيجة

Hiz = السرعة

موصى به: