فهرست مطالب:

فلاپی پرنده: 3 مرحله
فلاپی پرنده: 3 مرحله

تصویری: فلاپی پرنده: 3 مرحله

تصویری: فلاپی پرنده: 3 مرحله
تصویری: طراحی پرنده-3 علیرضا قزی 2024, جولای
Anonim
فلاپی پرنده
فلاپی پرنده
فلاپی پرنده
فلاپی پرنده

امروز ما یک بازی با استفاده از TFT LCD خواهیم ساخت. این بازی شبیه یک بازی بسیار محبوب است و هنوز بسیاری از مردم این بازی را انجام می دهند. این بازی Flappy Bird نام دارد اما این بازی کمی متفاوت است زیرا UI و نحوه عملکرد بازی متفاوت است. من این بازی را Floppy Bird نامیدم زیرا می تواند به مشکلات کپی رایت منجر شود. با این وجود این یک بازی سرگرم کننده است و ساخت آن آسان است. من این را آموزش داده ام که به شما امکان می دهد بازی را کاملاً بسازید و مانند من کار کند. اگر س questionsالی دارید ، لطفاً در زیر نظر دهید و من سعی می کنم در اسرع وقت به این سوالات پاسخ دهم.

تدارکات

- آردوینو مگا 2560 و کابل

- Arduino Mega Shield

- Arduino TFT LCD سازگار با Arduino Mega 2560

- کارت SD

مرحله 1: مونتاژ LCD TFT

مونتاژ LCD TFT
مونتاژ LCD TFT

اکنون می توانیم مونتاژ LCD TFT را شروع کنیم. ما TFT LCD را به سپر متصل می کنیم ، بنابراین ابتدا LCD TFT را بردارید و اساساً آن را با پین های سپر تراز کنید. هنگامی که پین ها را تراز کردید ، LCD TFT را به سمت پایین فشار دهید تا در جای خود قرار گیرد. وقتی همه سر پین ها در سپر هستند و نمی توانید هد پین ها را ببینید ، آن وقت است که می دانید TFT LCD به درستی وصل شده است. در مرحله بعد ، می توانیم سپر را به Arduino Mega 2560 وصل کنیم. پین های سپر را روی Arduino Mega تراز کنید و آن را وصل کنید. هنگامی که همه هد های پین در Arduino Mega قرار دارند و سر پین ها را نمی بینید ، این وقتی می دانید که LCD TFT به درستی متصل شده است و آماده روشن شدن است. آردوینو را وصل کنید تا ببینید آیا LCD را به درستی وصل کرده اید ، آیا LCD روشن می شود و صفحه سفید است ، تبریک می گویم ، شما TFT LCD را با موفقیت متصل کرده اید و اکنون آماده برنامه نویسی است. در نهایت ، ما باید یک کار انجام دهیم ، آن اتصال کارت SD در LCD است. در پشت TFT LCD یک اسلات کارت SD وجود دارد که می توانید به سادگی کارت SD را وصل کنید. بنابراین ، فقط آن را به برق وصل کنید و کار تمام است.

مرحله 2: برنامه نویسی TFT LCD

برنامه نویسی LCD TFT
برنامه نویسی LCD TFT

اکنون ، ما LCD را برنامه ریزی می کنیم تا بازی اجرا شود و ما بتوانیم آن را بازی کنیم. در زیر کدی است که باید با استفاده از Arduino IDE کامپایل و بارگذاری کنید.

مشکلاتی که ممکن است داشته باشید:

پارامترهای TFT LCD را با توجه به مدلی که دارید تغییر دهید.

کد کامل:

#شامل #شامل #شامل شود

// ==== ایجاد اشیاء

UTFT myGLCD (ILI9341_16 ، 38 ، 39 ، 40 ، 41) ؛ // پارامترها باید بر اساس مدل Display/Shield شما URTouch myTouch (6 ، 5 ، 4 ، 3 ، 2) تنظیم شوند.

// ==== تعریف قلم ها

extern uint8_t SmallFont ؛ exint uint8_t BigFont ؛ extern uint8_t SevenSegNumFont ؛

خارجی بدون علامت int bird01 [0x41A]؛ // نقشه نقشه پرنده

int x ، y ؛ // متغیرهای مختصات جایی که صفحه نمایش فشار داده شده است

// فلاپی پرنده

int xP = 319 ؛ int yP = 100 ؛ int yB = 50 ؛ int moveRate = 3 ؛ int fallRateInt = 0؛ float fallRate = 0؛ نمره int = 0 ؛ int lastSpeedUpScore = 0 ؛ int بالاترین امتیاز ؛ boolean screenPressed = false؛ boolean gameStarted = false؛

void setup () {

// شروع نمایش myGLCD. InitLCD ()؛ myGLCD.clrScr ()؛ myTouch. InitTouch ()؛ myTouch.setPrecision (PREC_MEDIUM) ؛ highScore = EEPROM.read (0)؛ // بالاترین امتیاز را از EEPROM initateGame () بخوانید ؛ // شروع بازی}

حلقه خالی () {

xP = xP-moveRate؛ // مختصات xP - x ستون ها ؛ محدوده: 319 - (-51) drawPilars (xP ، yP) ؛ // ستون ها را ترسیم می کند // yB - y مختصات پرنده که بستگی به مقدار متغیر fallRate دارد yB+= fallRateInt؛ fallRate = fallRate+0.4 ؛ // هر بار تکرار میزان سقوط افزایش می یابد تا بتوانیم اثر شتاب/ گرانش را fallRateInt = int (fallRate)؛ // بررسی برخورد اگر (yB> = 180 || yB <= 0) {// بالا و پایین gameOver ()؛ } if ((xP = 5) && (yB <= yP-2)) {// ستون فوقانی gameOver ()؛ } if ((xP = 5) && (yB> = yP+60)) {// ستون پایین gameOver ()؛ } // پرنده drawBird (yB) را ترسیم می کند؛

// بعد از اینکه ستون از صفحه عبور کرد

if (xPRESET = 250) && (x = 0) && (y = 0) && (x = 30) && (y = 270) {myGLCD.setColor (0 ، 200 ، 20) ؛ myGLCD.fillRect (318 ، 0 ، x ، y-1) ؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.drawRect (319 ، 0 ، x-1 ، y) ؛

myGLCD.setColor (0 ، 200 ، 20) ؛

myGLCD.fillRect (318 ، y+81 ، x ، 203) ؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.drawRect (319 ، y+80 ، x-1 ، 204) ؛ } else if (x <= 268) {// مستطیل آبی را راست ستون myGLCD.setColor ترسیم می کند (114 ، 198 ، 206) ؛ myGLCD.fillRect (x+51 ، 0 ، x+60 ، y) ؛ // ستون myGLCD.setColor (0 ، 200 ، 20) را ترسیم می کند ؛ myGLCD.fillRect (x+49 ، 1 ، x+1 ، y-1) ؛ // قاب سیاه ستون myGLCD.setColor (0 ، 0 ، 0) را ترسیم می کند ؛ myGLCD.drawRect (x+50 ، 0 ، x ، y) ؛ // مستطیل آبی سمت چپ ستون را myGLCD.setColor ترسیم می کند (114 ، 198 ، 206) ؛ myGLCD.fillRect (x-1 ، 0 ، x-3 ، y) ؛

// ستون پایینی

myGLCD.setColor (114 ، 198 ، 206) ؛ myGLCD.fillRect (x+51 ، y+80 ، x+60 ، 204) ؛ myGLCD.setColor (0 ، 200 ، 20) ؛ myGLCD.fillRect (x+49 ، y+81 ، x+1 ، 203) ؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.drawRect (x+50 ، y+80 ، x ، 204) ؛ myGLCD.setColor (114 ، 198 ، 206) ؛ myGLCD.fillRect (x-1 ، y+80 ، x-3 ، 204) ؛ } // نمره myGLCD.setColor (0 ، 0 ، 0) را ترسیم می کند ؛ myGLCD.setBackColor (221 ، 216 ، 148) ؛ myGLCD.setFont (BigFont) ؛ myGLCD.printNumI (امتیاز ، 100 ، 220) ؛ }

// ====== drawBird () - عملکرد سفارشی

void drawBird (int y) {// Draws the bird - bitmap myGLCD.drawBitmap (50 ، y ، 35 ، 30 ، bird01) ؛ // مستطیل های آبی را در بالا و پایین پرنده ترسیم می کند تا حالت previus آن را پاک کند myGLCD.setColor (114 ، 198 ، 206) ؛ myGLCD.fillRoundRect (50 ، y ، 85 ، y-6) ؛ myGLCD.fillRoundRect (50 ، y+30 ، 85 ، y+36) ؛ } // ======= gameOver () - تابع سفارشی void gameOver () {تاخیر (3000)؛ // 1 ثانیه // صفحه را پاک می کند و متن myGLCD.clrScr () را چاپ می کند. myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.setBackColor (0 ، 0 ، 0) ؛ myGLCD.setFont (BigFont) ؛ myGLCD.print ("GAME OVER" ، CENTER ، 40) ؛ myGLCD.print ("امتیاز:" ، 100 ، 80) ؛ myGLCD.printNumI (امتیاز ، 200 ، 80) ؛ myGLCD.print ("راه اندازی مجدد …" ، CENTER ، 120) ؛ myGLCD.setFont (SevenSegNumFont) ؛ myGLCD.printNumI (2 ، CENTER ، 150) ؛ تاخیر (1000) ؛ myGLCD.printNumI (1 ، CENTER ، 150) ؛ تاخیر (1000) ؛ // بالاترین نمره را در EEPROM می نویسد اگر (امتیاز> بیشترین نمره) {highScore = نمره ؛ EEPROM.write (0 ، بالاترین امتیاز) ؛ } // متغیرها را برای شروع مقادیر موقعیت xP = 319 بازنشانی می کند؛ yB = 50 ؛ fallRate = 0؛ نمره = 0 ؛ lastSpeedUpScore = 0 ؛ moveRate = 3 ؛ gameStarted = false؛ // راه اندازی مجدد بازی initateGame ()؛ }

مرحله 3: انجام شد

انجام شده!
انجام شده!

ما مدار را ایجاد کرده و کد را کامپایل کرده ایم. در حال حاضر ، ما فقط باید مگا آردوینو را وصل کرده و بازی را انجام دهیم.

در اینجا ، من پیوندی به یک ویدیو دارم که نحوه عملکرد این بازی و نحوه تنظیم آن را نشان می دهد:

drive.google.com/file/d/18hKQ8v2w2OkM_std-…

اگر مشکلی در زیر دارید به من اطلاع دهید.

توصیه شده: