پرش به مطلب اصلی

بازی 2048

نمونهٔ 2048 یک بازی کامل با حرکت لمسی، کلیدهای جهت‌دار و WASD، انیمیشن حرکت، برگشت و شروع مجدد است. کد بازی در یک فایل Dart جمع شده و به متغیرها و عملکردهای اپ‌ادیتور وصل است. از Flutter استفاده می‌کند و پکیج جدید نیاز ندارد.

افزودن بازی​

  1. ویجت Flutter سفارشی را داخل گروه صفحه اضافه کنید.
  2. در فرم روی نمونه بازی 2048 بزنید. سورس آماده و پارامتر ارتفاع وارد می‌شوند.
  3. یا فایل game2048.dart را دانلود کنید و با «بارگذاری فایل دارت» وارد کنید.
  4. عرض را «به اندازه والد» قرار دهید. برای صفحهٔ بازی، حدود ۶۰۰ واحد منطقی ارتفاع در نظر بگیرید.
  5. ویجت و صفحه را ذخیره کنید و خروجی جدید بسازید.

پارامتر ارتفاع​

{
"height": 600
}

اگر والد ارتفاع محدود و مشخص داشته باشد، بازی از اندازهٔ آن استفاده می‌کند. در چیدمان با ارتفاع آزاد، مقدار height اندازهٔ جایگزین است؛ پیش‌فرض ۶۰۰ و بازهٔ قابل‌استفاده ۲۰۰ تا ۲۰۰۰ است. ارتفاع خیلی کم ممکن است برای کنترل‌ها و جدول مناسب نباشد.

این نسخه فقط height را از JSON می‌خواند. تغییر اندازهٔ جدول، امتیاز هدف، رنگ‌ها، نام متغیرها یا فعال‌بودن برگشت به تغییر کد و ساخت خروجی جدید نیاز دارد.

متغیرهای بازی​

نامنوع ذخیرهکاربرد
game2048_scoreموقتامتیاز بازی فعلی
game2048_bestروی دستگاهرکورد بین اجراهای اپ

بازی متغیرها را خودش ایجاد و به‌روز می‌کند. برای نمایش امتیاز در جای دیگری از صفحه، یک نمایشگر متغیر با نام game2048_score قرار دهید. برای رکورد از game2048_best استفاده کنید.

رکورد روی همان دستگاه ذخیره می‌شود و همگام‌سازی حساب کاربر نیست. وضعیت جدول ذخیره نمی‌شود؛ حفظ رکورد به‌معنای ادامهٔ جدول قبلی پس از بازکردن دوبارهٔ صفحه نیست.

نام‌ها در این سورس ثابت‌اند. اگر دو نمونهٔ بازی در یک اپ قرار دهید، متغیرهای امتیاز و رکورد مشترک خواهند بود. برای استقلال باید نام‌ها را در سورس یکی از نمونه‌ها تغییر دهید و خروجی جدید بسازید.

عملکردهای برد و پایان بازی​

در فهرست عملکردهای همین ویجت می‌توانید این شناسه‌ها را تعریف کنید:

شناسهزمان فراخوانیپیشنهاد کاربرد
onWinرسیدن بازی به وضعیت بردنمایش پیام یا بازکردن صفحهٔ موفقیت
onGameOverرسیدن بازی به وضعیت پایاننمایش امتیاز نهایی یا صفحهٔ پایان

متغیرهای امتیاز و رکورد قبل از فراخوانی عملکرد به‌روز می‌شوند. تعریف این عملکردها اختیاری است. رویدادها با ورود به وضعیت مربوط اجرا می‌شوند و با هر بازسازی رابط تکرار نمی‌شوند؛ شروع بازی جدید یا برگشت و ورود دوباره به وضعیت پایان می‌تواند رویداد تازه‌ای ایجاد کند.

امتحان در خروجی​

  • با کشیدن انگشت حرکت کنید؛ روی خروجی دارای صفحه‌کلید، جهت‌ها یا WASD را امتحان کنید.
  • امتیاز داخل بازی و نمایشگر متغیر بیرونی باید هماهنگ باشند.
  • برگشت و شروع مجدد را امتحان کنید.
  • اپ را دوباره باز کنید؛ رکورد باید حفظ شود و جدول تازه ایجاد شود.
  • برای امتحان رویدادها، onWin و onGameOver را به نمایش پیام متصل کنید.

شبیه‌ساز پنل این بازی را اجرا نمی‌کند. اگر سورس را تغییر دهید و فقط صفحه را آنلاین منتشر کنید، خروجی قبلی نمی‌تواند کد جدید را اجرا کند؛ خروجی تازه لازم است.

تبدیل بازی دیگر به ویجت​

برای تبدیل یک پروژهٔ کوچک Flutter:

  1. Widget اصلی صفحهٔ بازی را مشخص کنید.
  2. کلاس‌های لازم را در یک فایل جمع کنید و import فایل‌های داخلی پروژه را حذف کنید.
  3. تابع buildCustomWidget را اضافه کنید که Widget بازی را برگرداند.
  4. main، runApp و MaterialApp مستقل را کنار بگذارید.
  5. وابستگی‌ها را با پکیج‌های فعلی خروجی تطبیق دهید؛ فایل asset جدید یا تنظیم بومی اختصاصی از این فرم اضافه نمی‌شود.
  6. امتیاز و رویدادها را با app.addVar و app.runAction وصل کنید.
  7. محدودیت اندازهٔ والد و آزادسازی منابع در dispose را بررسی کنید.

برای قرارداد کامل و محدودیت‌ها به راهنمای ویجت مراجعه کنید. سورس آمادهٔ این نمونه از دکمهٔ دانلود بالای صفحه در دسترس است.